
/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

void __regparm3 sha512_conclude_ctx(sha512_ctx *ctx)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  bool bVar8;
  uint local_3c;
  int local_38;
  
  uVar1 = ctx->buflen;
  local_38 = *(int *)((int)ctx->total + 0xc);
  uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0;
  uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0;
  uVar7 = uVar1 + (int)ctx->total[0];
  uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0]);
  local_3c = (uint)ctx->total[1];
  *(uint *)ctx->total = uVar7;
  *(uint *)((int)ctx->total + 4) = uVar6;
  if (uVar6 < (uVar7 < uVar1)) {
    bVar8 = 0xfffffffe < local_3c;
    local_3c = local_3c + 1;
    local_38 = local_38 + (uint)bVar8;
    *(uint *)(ctx->total + 1) = local_3c;
    *(int *)((int)ctx->total + 0xc) = local_38;
  }
  uVar2 = local_38 << 3;
  uVar5 = local_3c << 3;
  *(uint *)(ctx->buffer + uVar4 + 0x1e) =
       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
       (uVar2 | local_3c >> 0x1d) << 0x18;
  *(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =
       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |
       (uVar6 >> 0x1d | uVar5) << 0x18;
  uVar6 = uVar6 * 8;
  uVar4 = uVar7 * 8;
  *(uint *)(ctx->buffer + uVar3 + 0x1f) =
       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |
       (uVar6 | uVar7 >> 0x1d) << 0x18;
  *(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =
       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000;
  memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,
         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);
  sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

void __regparm3 FUN_00020eb0(int param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  bool bVar7;
  uint local_3c;
  int local_38;
  
  uVar1 = *(uint *)(param_1 + 0x50);
  local_38 = *(int *)(param_1 + 0x4c);
  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);
  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));
  local_3c = *(uint *)(param_1 + 0x48);
  *(uint *)(param_1 + 0x40) = uVar5;
  *(uint *)(param_1 + 0x44) = uVar4;
  if (uVar4 < (uVar5 < uVar1)) {
    bVar7 = 0xfffffffe < local_3c;
    local_3c = local_3c + 1;
    local_38 = local_38 + (uint)bVar7;
    *(uint *)(param_1 + 0x48) = local_3c;
    *(int *)(param_1 + 0x4c) = local_38;
  }
  uVar3 = local_38 << 3;
  uVar2 = local_3c << 3;
  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;
  *(uint *)(param_1 + 4 + iVar6 * 8) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
       (uVar3 | local_3c >> 0x1d) << 0x18;
  *(uint *)(param_1 + 8 + iVar6 * 8) =
       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
       (uVar4 >> 0x1d | uVar2) << 0x18;
  uVar4 = uVar4 * 8;
  uVar3 = uVar5 * 8;
  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;
  *(uint *)(param_1 + 4 + iVar6 * 8) =
       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
       (uVar4 | uVar5 >> 0x1d) << 0x18;
  *(uint *)(param_1 + 8 + iVar6 * 8) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;
  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,
         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);
  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);
  return;
}


CALL 0x00012865
ADD EDX,0xa14b
PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
SUB ESP,0x3c
MOV ECX,dword ptr [EAX + 0x50]
MOV dword ptr [ESP + 0x4],0x0
MOV EBP,dword ptr [ESP + 0x4]
CMP ECX,0x70
MOV dword ptr [ESP + 0x1c],EDX
MOV EDX,dword ptr [ESI + 0x4c]
SBB EAX,EAX
MOV dword ptr [ESP],ECX
MOV EDI,dword ptr [ESP]
AND EAX,0xffffff80
MOV dword ptr [ESP + 0x24],ECX
ADD EAX,0x100
CMP ECX,0x70
MOV dword ptr [ESP + 0x14],EDX
SBB EBX,EBX
MOV dword ptr [ESP + 0x20],EAX
AND EBX,0xffffff80
ADD EBX,0xf0
CMP ECX,0x70
SBB EAX,EAX
AND EAX,0xfffffff0
ADD EAX,0x1f
CMP ECX,0x70
MOV dword ptr [ESP + 0x28],EAX
SBB EAX,EAX
AND EAX,0xfffffff0
ADD EAX,0x1e
ADD EDI,dword ptr [ESI + 0x40]
ADC EBP,dword ptr [ESI + 0x44]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESI + 0x48]
CMP EDI,ECX
MOV dword ptr [ESP + 0x8],EDI
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,EBP
SBB EAX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0xc],EBP
MOV dword ptr [ESI + 0x40],EDI
MOV dword ptr [ESI + 0x44],EBP
JNC 0x00020f62
ADD dword ptr [ESP + 0x10],0x1
MOV EAX,dword ptr [ESP + 0x10]
ADC dword ptr [ESP + 0x14],0x0
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [ESI + 0x48],EAX
MOV dword ptr [ESI + 0x4c],EDX
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
SUB ESP,0x4
MOV ECX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESP + 0x30]
SHLD EDX,EAX,0x3
SHL EAX,0x3
SHR ECX,0x1d
ADD EDI,0xa
OR ECX,EAX
MOV EAX,EDX
MOV EDX,dword ptr [ESP + 0x10]
BSWAP EAX
MOV dword ptr [ESI + EDI*0x8 + 0x4],EAX
MOV EAX,dword ptr [ESP + 0xc]
BSWAP ECX
MOV dword ptr [ESI + EDI*0x8 + 0x8],ECX
LEA EDI,[ESI + 0x54]
SHLD EDX,EAX,0x3
SHL EAX,0x3
MOV ECX,EDX
BSWAP EAX
MOV EDX,ECX
MOV ECX,dword ptr [ESP + 0x2c]
BSWAP EDX
ADD ECX,0xa
MOV dword ptr [ESI + ECX*0x8 + 0x4],EDX
MOV EDX,EBX
MOV dword ptr [ESI + ECX*0x8 + 0x8],EAX
MOV ECX,dword ptr [ESP + 0x28]
SUB EDX,ECX
LEA EAX,[EDI + ECX*0x1]
PUSH EDX
MOV EBP,dword ptr [ESP + 0x24]
LEA EDX,[EBP + 0xffffbba0]
MOV EBX,EBP
PUSH EDX
PUSH EAX
CALL 0x00011080
ADD ESP,0xc
PUSH ESI
PUSH dword ptr [ESP + 0x28]
PUSH EDI
CALL 0x00013250
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n\nvoid __regparm3 FUN_00020eb0(int param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}\n\n" comment (function_definition "void __regparm3 FUN_00020eb0(int param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00020eb0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x50)" identifier = (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int *)(param_1 + 0x4c);" (assignment_expression "local_38 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar1 + *(uint *)(param_1 + 0x40);" (assignment_expression "uVar5 = uVar1 + *(uint *)(param_1 + 0x40)" identifier = (binary_expression "uVar1 + *(uint *)(param_1 + 0x40)" identifier + (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));" (assignment_expression "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" identifier = (binary_expression "*(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar1,*(uint *)(param_1 + 0x40))" identifier (argument_list "(uVar1,*(uint *)(param_1 + 0x40))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))))) ;) (expression_statement "local_3c = *(uint *)(param_1 + 0x48);" (assignment_expression "local_3c = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x40) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x44) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x44) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" if (parenthesized_expression "(uVar4 < (uVar5 < uVar1))" ( (binary_expression "uVar4 < (uVar5 < uVar1)" identifier < (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) ))) )) (compound_statement "{\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" { (expression_statement "bVar7 = 0xfffffffe < local_3c;" (assignment_expression "bVar7 = 0xfffffffe < local_3c" identifier = (binary_expression "0xfffffffe < local_3c" number_literal < identifier)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + (uint)bVar7;" (assignment_expression "local_38 = local_38 + (uint)bVar7" identifier = (binary_expression "local_38 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(uint *)(param_1 + 0x48) = local_3c;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_3c" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x4c) = local_38;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_38" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar3 = local_38 << 3;" (assignment_expression "uVar3 = local_38 << 3" identifier = (binary_expression "local_38 << 3" identifier << number_literal)) ;) (expression_statement "uVar2 = local_3c << 3;" (assignment_expression "uVar2 = local_3c << 3" identifier = (binary_expression "local_3c << 3" identifier << number_literal)) ;) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" identifier = (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" ( (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 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 | local_3c >> 0x1d) << 0x18" (parenthesized_expression "(uVar3 | local_3c >> 0x1d)" ( (binary_expression "uVar3 | local_3c >> 0x1d" identifier | (binary_expression "local_3c >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" ( (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 >> 0x1d | uVar2) << 0x18" (parenthesized_expression "(uVar4 >> 0x1d | uVar2)" ( (binary_expression "uVar4 >> 0x1d | uVar2" (binary_expression "uVar4 >> 0x1d" identifier >> number_literal) | identifier) )) << number_literal))) ;) (expression_statement "uVar4 = uVar4 * 8;" (assignment_expression "uVar4 = uVar4 * 8" identifier = (binary_expression "uVar4 * 8" identifier * number_literal)) ;) (expression_statement "uVar3 = uVar5 * 8;" (assignment_expression "uVar3 = uVar5 * 8" identifier = (binary_expression "uVar5 * 8" identifier * number_literal)) ;) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" identifier = (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" ( (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 | uVar5 >> 0x1d) << 0x18" (parenthesized_expression "(uVar4 | uVar5 >> 0x1d)" ( (binary_expression "uVar4 | uVar5 >> 0x1d" identifier | (binary_expression "uVar5 >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" ( (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (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 "uVar5 * 0x8000000" identifier * number_literal))) ;) (expression_statement "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);" (call_expression "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" identifier (argument_list "((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" ( (cast_expression "(void *)(param_1 + 0x54 + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54 + uVar1)" ( (binary_expression "param_1 + 0x54 + uVar1" (binary_expression "param_1 + 0x54" identifier + number_literal) + identifier) ))) , (pointer_expression "&DAT_00026ba0" & identifier) , (binary_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1" (parenthesized_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0)" ( (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) )) - identifier) ))) ;) (expression_statement "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);" (call_expression "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" identifier (argument_list "(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) , (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */\n\nvoid __regparm3 sha512_conclude_ctx(sha512_ctx *ctx)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  bool bVar8;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = ctx->buflen;\n  local_38 = *(int *)((int)ctx->total + 0xc);\n  uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar7 = uVar1 + (int)ctx->total[0];\n  uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0]);\n  local_3c = (uint)ctx->total[1];\n  *(uint *)ctx->total = uVar7;\n  *(uint *)((int)ctx->total + 4) = uVar6;\n  if (uVar6 < (uVar7 < uVar1)) {\n    bVar8 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar8;\n    *(uint *)(ctx->total + 1) = local_3c;\n    *(int *)((int)ctx->total + 0xc) = local_38;\n  }\n  uVar2 = local_38 << 3;\n  uVar5 = local_3c << 3;\n  *(uint *)(ctx->buffer + uVar4 + 0x1e) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =\n       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18;\n  uVar6 = uVar6 * 8;\n  uVar4 = uVar7 * 8;\n  *(uint *)(ctx->buffer + uVar3 + 0x1f) =\n       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000;\n  memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx);\n  return;\n}\n\n" comment (function_definition "void __regparm3 sha512_conclude_ctx(sha512_ctx *ctx)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  bool bVar8;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = ctx->buflen;\n  local_38 = *(int *)((int)ctx->total + 0xc);\n  uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar7 = uVar1 + (int)ctx->total[0];\n  uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0]);\n  local_3c = (uint)ctx->total[1];\n  *(uint *)ctx->total = uVar7;\n  *(uint *)((int)ctx->total + 4) = uVar6;\n  if (uVar6 < (uVar7 < uVar1)) {\n    bVar8 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar8;\n    *(uint *)(ctx->total + 1) = local_3c;\n    *(int *)((int)ctx->total + 0xc) = local_38;\n  }\n  uVar2 = local_38 << 3;\n  uVar5 = local_3c << 3;\n  *(uint *)(ctx->buffer + uVar4 + 0x1e) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =\n       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18;\n  uVar6 = uVar6 * 8;\n  uVar4 = uVar7 * 8;\n  *(uint *)(ctx->buffer + uVar3 + 0x1f) =\n       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000;\n  memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sha512_conclude_ctx(sha512_ctx *ctx)" identifier (parameter_list "(sha512_ctx *ctx)" ( (parameter_declaration "sha512_ctx *ctx" type_identifier (pointer_declarator "*ctx" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  bool bVar8;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = ctx->buflen;\n  local_38 = *(int *)((int)ctx->total + 0xc);\n  uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0;\n  uVar7 = uVar1 + (int)ctx->total[0];\n  uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0]);\n  local_3c = (uint)ctx->total[1];\n  *(uint *)ctx->total = uVar7;\n  *(uint *)((int)ctx->total + 4) = uVar6;\n  if (uVar6 < (uVar7 < uVar1)) {\n    bVar8 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar8;\n    *(uint *)(ctx->total + 1) = local_3c;\n    *(int *)((int)ctx->total + 0xc) = local_38;\n  }\n  uVar2 = local_38 << 3;\n  uVar5 = local_3c << 3;\n  *(uint *)(ctx->buffer + uVar4 + 0x1e) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =\n       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18;\n  uVar6 = uVar6 * 8;\n  uVar4 = uVar7 * 8;\n  *(uint *)(ctx->buffer + uVar3 + 0x1f) =\n       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18;\n  *(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000;\n  memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (expression_statement "uVar1 = ctx->buflen;" (assignment_expression "uVar1 = ctx->buflen" identifier = (field_expression "ctx->buflen" identifier -> field_identifier)) ;) (expression_statement "local_38 = *(int *)((int)ctx->total + 0xc);" (assignment_expression "local_38 = *(int *)((int)ctx->total + 0xc)" identifier = (pointer_expression "*(int *)((int)ctx->total + 0xc)" * (cast_expression "(int *)((int)ctx->total + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->total + 0xc)" ( (binary_expression "(int)ctx->total + 0xc" (cast_expression "(int)ctx->total" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->total" identifier -> field_identifier)) + number_literal) ))))) ;) (expression_statement "uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0;" (assignment_expression "uVar3 = -(uint)(uVar1 < 0x70) & 0xfffffff0" identifier = (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal)) ;) (expression_statement "uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0;" (assignment_expression "uVar4 = -(uint)(uVar1 < 0x70) & 0xfffffff0" identifier = (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal)) ;) (expression_statement "uVar7 = uVar1 + (int)ctx->total[0];" (assignment_expression "uVar7 = uVar1 + (int)ctx->total[0]" identifier = (binary_expression "uVar1 + (int)ctx->total[0]" identifier + (cast_expression "(int)ctx->total[0]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "ctx->total[0]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ])))) ;) (expression_statement "uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0]);" (assignment_expression "uVar6 = *(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0])" identifier = (binary_expression "*(int *)((int)ctx->total + 4) + (uint)CARRY4(uVar1,(uint)ctx->total[0])" (pointer_expression "*(int *)((int)ctx->total + 4)" * (cast_expression "(int *)((int)ctx->total + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->total + 4)" ( (binary_expression "(int)ctx->total + 4" (cast_expression "(int)ctx->total" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->total" identifier -> field_identifier)) + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar1,(uint)ctx->total[0])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar1,(uint)ctx->total[0])" identifier (argument_list "(uVar1,(uint)ctx->total[0])" ( identifier , (cast_expression "(uint)ctx->total[0]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ctx->total[0]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ])) )))))) ;) (expression_statement "local_3c = (uint)ctx->total[1];" (assignment_expression "local_3c = (uint)ctx->total[1]" identifier = (cast_expression "(uint)ctx->total[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ctx->total[1]" (field_expression "ctx->total" identifier -> field_identifier) [ number_literal ]))) ;) (expression_statement "*(uint *)ctx->total = uVar7;" (assignment_expression "*(uint *)ctx->total = uVar7" (pointer_expression "*(uint *)ctx->total" * (cast_expression "(uint *)ctx->total" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "ctx->total" identifier -> field_identifier))) = identifier) ;) (expression_statement "*(uint *)((int)ctx->total + 4) = uVar6;" (assignment_expression "*(uint *)((int)ctx->total + 4) = uVar6" (pointer_expression "*(uint *)((int)ctx->total + 4)" * (cast_expression "(uint *)((int)ctx->total + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->total + 4)" ( (binary_expression "(int)ctx->total + 4" (cast_expression "(int)ctx->total" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->total" identifier -> field_identifier)) + number_literal) )))) = identifier) ;) (if_statement "if (uVar6 < (uVar7 < uVar1)) {\n    bVar8 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar8;\n    *(uint *)(ctx->total + 1) = local_3c;\n    *(int *)((int)ctx->total + 0xc) = local_38;\n  }" if (parenthesized_expression "(uVar6 < (uVar7 < uVar1))" ( (binary_expression "uVar6 < (uVar7 < uVar1)" identifier < (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) ))) )) (compound_statement "{\n    bVar8 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar8;\n    *(uint *)(ctx->total + 1) = local_3c;\n    *(int *)((int)ctx->total + 0xc) = local_38;\n  }" { (expression_statement "bVar8 = 0xfffffffe < local_3c;" (assignment_expression "bVar8 = 0xfffffffe < local_3c" identifier = (binary_expression "0xfffffffe < local_3c" number_literal < identifier)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + (uint)bVar8;" (assignment_expression "local_38 = local_38 + (uint)bVar8" identifier = (binary_expression "local_38 + (uint)bVar8" identifier + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(uint *)(ctx->total + 1) = local_3c;" (assignment_expression "*(uint *)(ctx->total + 1) = local_3c" (pointer_expression "*(uint *)(ctx->total + 1)" * (cast_expression "(uint *)(ctx->total + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ctx->total + 1)" ( (binary_expression "ctx->total + 1" (field_expression "ctx->total" identifier -> field_identifier) + number_literal) )))) = identifier) ;) (expression_statement "*(int *)((int)ctx->total + 0xc) = local_38;" (assignment_expression "*(int *)((int)ctx->total + 0xc) = local_38" (pointer_expression "*(int *)((int)ctx->total + 0xc)" * (cast_expression "(int *)((int)ctx->total + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->total + 0xc)" ( (binary_expression "(int)ctx->total + 0xc" (cast_expression "(int)ctx->total" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->total" identifier -> field_identifier)) + number_literal) )))) = identifier) ;) })) (expression_statement "uVar2 = local_38 << 3;" (assignment_expression "uVar2 = local_38 << 3" identifier = (binary_expression "local_38 << 3" identifier << number_literal)) ;) (expression_statement "uVar5 = local_3c << 3;" (assignment_expression "uVar5 = local_3c << 3" identifier = (binary_expression "local_3c << 3" identifier << number_literal)) ;) (expression_statement "*(uint *)(ctx->buffer + uVar4 + 0x1e) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(ctx->buffer + uVar4 + 0x1e) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18" (pointer_expression "*(uint *)(ctx->buffer + uVar4 + 0x1e)" * (cast_expression "(uint *)(ctx->buffer + uVar4 + 0x1e)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ctx->buffer + uVar4 + 0x1e)" ( (binary_expression "ctx->buffer + uVar4 + 0x1e" (binary_expression "ctx->buffer + uVar4" (field_expression "ctx->buffer" identifier -> field_identifier) + identifier) + number_literal) )))) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar2 | local_3c >> 0x1d) << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar2 | local_3c >> 0x1d) << 0x18" (parenthesized_expression "(uVar2 | local_3c >> 0x1d)" ( (binary_expression "uVar2 | local_3c >> 0x1d" identifier | (binary_expression "local_3c >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =\n       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18;" (assignment_expression "*(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4) =\n       uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18" (pointer_expression "*(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4)" * (cast_expression "(uint *)((int)ctx->buffer + uVar4 * 8 + 0xf4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->buffer + uVar4 * 8 + 0xf4)" ( (binary_expression "(int)ctx->buffer + uVar4 * 8 + 0xf4" (binary_expression "(int)ctx->buffer + uVar4 * 8" (cast_expression "(int)ctx->buffer" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->buffer" identifier -> field_identifier)) + (binary_expression "uVar4 * 8" identifier * number_literal)) + number_literal) )))) = (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8 |\n       (uVar6 >> 0x1d | uVar5) << 0x18" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8 | (uVar5 & 0xff00) << 8" (binary_expression "uVar5 >> 0x18 | (uVar5 & 0xff0000) >> 8" (binary_expression "uVar5 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar5 & 0xff0000) >> 8" (parenthesized_expression "(uVar5 & 0xff0000)" ( (binary_expression "uVar5 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar5 & 0xff00) << 8" (parenthesized_expression "(uVar5 & 0xff00)" ( (binary_expression "uVar5 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 >> 0x1d | uVar5) << 0x18" (parenthesized_expression "(uVar6 >> 0x1d | uVar5)" ( (binary_expression "uVar6 >> 0x1d | uVar5" (binary_expression "uVar6 >> 0x1d" identifier >> number_literal) | identifier) )) << number_literal))) ;) (expression_statement "uVar6 = uVar6 * 8;" (assignment_expression "uVar6 = uVar6 * 8" identifier = (binary_expression "uVar6 * 8" identifier * number_literal)) ;) (expression_statement "uVar4 = uVar7 * 8;" (assignment_expression "uVar4 = uVar7 * 8" identifier = (binary_expression "uVar7 * 8" identifier * number_literal)) ;) (expression_statement "*(uint *)(ctx->buffer + uVar3 + 0x1f) =\n       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(ctx->buffer + uVar3 + 0x1f) =\n       uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18" (pointer_expression "*(uint *)(ctx->buffer + uVar3 + 0x1f)" * (cast_expression "(uint *)(ctx->buffer + uVar3 + 0x1f)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ctx->buffer + uVar3 + 0x1f)" ( (binary_expression "ctx->buffer + uVar3 + 0x1f" (binary_expression "ctx->buffer + uVar3" (field_expression "ctx->buffer" identifier -> field_identifier) + identifier) + number_literal) )))) = (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8 |\n       (uVar6 | uVar7 >> 0x1d) << 0x18" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8 | (uVar6 & 0xff00) << 8" (binary_expression "uVar6 >> 0x18 | (uVar6 & 0xff0000) >> 8" (binary_expression "uVar6 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar6 & 0xff0000) >> 8" (parenthesized_expression "(uVar6 & 0xff0000)" ( (binary_expression "uVar6 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar6 & 0xff00) << 8" (parenthesized_expression "(uVar6 & 0xff00)" ( (binary_expression "uVar6 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar6 | uVar7 >> 0x1d) << 0x18" (parenthesized_expression "(uVar6 | uVar7 >> 0x1d)" ( (binary_expression "uVar6 | uVar7 >> 0x1d" identifier | (binary_expression "uVar7 >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000;" (assignment_expression "*(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000" (pointer_expression "*(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc)" * (cast_expression "(uint *)((int)ctx->buffer + uVar3 * 8 + 0xfc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->buffer + uVar3 * 8 + 0xfc)" ( (binary_expression "(int)ctx->buffer + uVar3 * 8 + 0xfc" (binary_expression "(int)ctx->buffer + uVar3 * 8" (cast_expression "(int)ctx->buffer" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->buffer" identifier -> field_identifier)) + (binary_expression "uVar3 * 8" identifier * number_literal)) + number_literal) )))) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 | uVar7 * 0x8000000" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "uVar7 * 0x8000000" identifier * number_literal))) ;) (expression_statement "memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);" (call_expression "memcpy((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" identifier (argument_list "((void *)((int)ctx->buffer + uVar1),fillbuf,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" ( (cast_expression "(void *)((int)ctx->buffer + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ctx->buffer + uVar1)" ( (binary_expression "(int)ctx->buffer + uVar1" (cast_expression "(int)ctx->buffer" ( (type_descriptor "int" primitive_type) ) (field_expression "ctx->buffer" identifier -> field_identifier)) + identifier) ))) , identifier , (binary_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1" (parenthesized_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0)" ( (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) )) - identifier) ))) ;) (expression_statement "sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx);" (call_expression "sha512_process_block(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx)" identifier (argument_list "(ctx->buffer,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,ctx)" ( (field_expression "ctx->buffer" identifier -> field_identifier) , (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_00020eb0(int param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_00020eb0(int param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00020eb0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (expression_statement "uVar1 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x50)" identifier = (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (expression_statement "local_38 = *(int *)(param_1 + 0x4c);" (assignment_expression "local_38 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar1 + *(uint *)(param_1 + 0x40);" (assignment_expression "uVar5 = uVar1 + *(uint *)(param_1 + 0x40)" identifier = (binary_expression "uVar1 + *(uint *)(param_1 + 0x40)" identifier + (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));" (assignment_expression "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" identifier = (binary_expression "*(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) + (cast_expression "(uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar1,*(uint *)(param_1 + 0x40))" identifier (argument_list "(uVar1,*(uint *)(param_1 + 0x40))" ( identifier , (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) )))))) ;) (expression_statement "local_3c = *(uint *)(param_1 + 0x48);" (assignment_expression "local_3c = *(uint *)(param_1 + 0x48)" identifier = (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "*(uint *)(param_1 + 0x40) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x40)" * (cast_expression "(uint *)(param_1 + 0x40)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(uint *)(param_1 + 0x44) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x44) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x44)" * (cast_expression "(uint *)(param_1 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) = identifier) ;) (if_statement "if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" if (parenthesized_expression "(uVar4 < (uVar5 < uVar1))" ( (binary_expression "uVar4 < (uVar5 < uVar1)" identifier < (parenthesized_expression "(uVar5 < uVar1)" ( (binary_expression "uVar5 < uVar1" identifier < identifier) ))) )) (compound_statement "{\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" { (expression_statement "bVar7 = 0xfffffffe < local_3c;" (assignment_expression "bVar7 = 0xfffffffe < local_3c" identifier = (binary_expression "0xfffffffe < local_3c" number_literal < identifier)) ;) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (expression_statement "local_38 = local_38 + (uint)bVar7;" (assignment_expression "local_38 = local_38 + (uint)bVar7" identifier = (binary_expression "local_38 + (uint)bVar7" identifier + (cast_expression "(uint)bVar7" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "*(uint *)(param_1 + 0x48) = local_3c;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_3c" (pointer_expression "*(uint *)(param_1 + 0x48)" * (cast_expression "(uint *)(param_1 + 0x48)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x4c) = local_38;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_38" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "uVar3 = local_38 << 3;" (assignment_expression "uVar3 = local_38 << 3" identifier = (binary_expression "local_38 << 3" identifier << number_literal)) ;) (expression_statement "uVar2 = local_3c << 3;" (assignment_expression "uVar2 = local_3c << 3" identifier = (binary_expression "local_3c << 3" identifier << number_literal)) ;) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" identifier = (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" ( (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 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 | local_3c >> 0x1d) << 0x18" (parenthesized_expression "(uVar3 | local_3c >> 0x1d)" ( (binary_expression "uVar3 | local_3c >> 0x1d" identifier | (binary_expression "local_3c >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" ( (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" ( (binary_expression "uVar2 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" ( (binary_expression "uVar2 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 >> 0x1d | uVar2) << 0x18" (parenthesized_expression "(uVar4 >> 0x1d | uVar2)" ( (binary_expression "uVar4 >> 0x1d | uVar2" (binary_expression "uVar4 >> 0x1d" identifier >> number_literal) | identifier) )) << number_literal))) ;) (expression_statement "uVar4 = uVar4 * 8;" (assignment_expression "uVar4 = uVar4 * 8" identifier = (binary_expression "uVar4 * 8" identifier * number_literal)) ;) (expression_statement "uVar3 = uVar5 * 8;" (assignment_expression "uVar3 = uVar5 * 8" identifier = (binary_expression "uVar5 * 8" identifier * number_literal)) ;) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" identifier = (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" ( (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" identifier >> number_literal) | (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" ( (binary_expression "uVar4 & 0xff0000" identifier & number_literal) )) >> number_literal)) | (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" ( (binary_expression "uVar4 & 0xff00" identifier & number_literal) )) << number_literal)) | (binary_expression "(uVar4 | uVar5 >> 0x1d) << 0x18" (parenthesized_expression "(uVar4 | uVar5 >> 0x1d)" ( (binary_expression "uVar4 | uVar5 >> 0x1d" identifier | (binary_expression "uVar5 >> 0x1d" identifier >> number_literal)) )) << number_literal))) ;) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" * (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" ( (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" identifier + number_literal) + (binary_expression "iVar6 * 8" identifier * number_literal)) )))) = (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (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 "uVar5 * 0x8000000" identifier * number_literal))) ;) (expression_statement "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);" (call_expression "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" identifier (argument_list "((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" ( (cast_expression "(void *)(param_1 + 0x54 + uVar1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54 + uVar1)" ( (binary_expression "param_1 + 0x54 + uVar1" (binary_expression "param_1 + 0x54" identifier + number_literal) + identifier) ))) , (pointer_expression "&DAT_00026ba0" & identifier) , (binary_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1" (parenthesized_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0)" ( (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) )) - identifier) ))) ;) (expression_statement "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);" (call_expression "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" identifier (argument_list "(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) , (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" ( (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" - (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar1 < 0x70)" ( (binary_expression "uVar1 < 0x70" identifier < number_literal) )))) & number_literal) )) + number_literal) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 *)) ) (parenthesized_expression ( (binary_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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( 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 *)) ) (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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (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 (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT >> LIT)) )) << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (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 (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) | IDENT) )) << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) & LIT) )) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (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 (parenthesized_expression ( (binary_expression IDENT | (binary_expression IDENT >> LIT)) )) << LIT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (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 (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))) , (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) & LIT) )) + LIT) )) - IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) & LIT) )) + LIT) , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_00020eb0(int param_1)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00020eb0(int param_1)" (identifier "FUN_00020eb0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  bool bVar7;\n  uint local_3c;\n  int local_38;\n  \n  uVar1 = *(uint *)(param_1 + 0x50);\n  local_38 = *(int *)(param_1 + 0x4c);\n  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);\n  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));\n  local_3c = *(uint *)(param_1 + 0x48);\n  *(uint *)(param_1 + 0x40) = uVar5;\n  *(uint *)(param_1 + 0x44) = uVar4;\n  if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }\n  uVar3 = local_38 << 3;\n  uVar2 = local_3c << 3;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;\n  uVar4 = uVar4 * 8;\n  uVar3 = uVar5 * 8;\n  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;\n  *(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;\n  *(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;\n  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);\n  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (expression_statement "uVar1 = *(uint *)(param_1 + 0x50);" (assignment_expression "uVar1 = *(uint *)(param_1 + 0x50)" (identifier "uVar1") (= "=") (pointer_expression "*(uint *)(param_1 + 0x50)" (* "*") (cast_expression "(uint *)(param_1 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "local_38 = *(int *)(param_1 + 0x4c);" (assignment_expression "local_38 = *(int *)(param_1 + 0x4c)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "uVar5 = uVar1 + *(uint *)(param_1 + 0x40);" (assignment_expression "uVar5 = uVar1 + *(uint *)(param_1 + 0x40)" (identifier "uVar5") (= "=") (binary_expression "uVar1 + *(uint *)(param_1 + 0x40)" (identifier "uVar1") (+ "+") (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))))) (; ";")) (expression_statement "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));" (assignment_expression "uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (identifier "uVar4") (= "=") (binary_expression "*(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (+ "+") (cast_expression "(uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar1,*(uint *)(param_1 + 0x40))" (identifier "CARRY4") (argument_list "(uVar1,*(uint *)(param_1 + 0x40))" (( "(") (identifier "uVar1") (, ",") (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) () ")")))))) (; ";")) (expression_statement "local_3c = *(uint *)(param_1 + 0x48);" (assignment_expression "local_3c = *(uint *)(param_1 + 0x48)" (identifier "local_3c") (= "=") (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x40) = uVar5;" (assignment_expression "*(uint *)(param_1 + 0x40) = uVar5" (pointer_expression "*(uint *)(param_1 + 0x40)" (* "*") (cast_expression "(uint *)(param_1 + 0x40)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "*(uint *)(param_1 + 0x44) = uVar4;" (assignment_expression "*(uint *)(param_1 + 0x44) = uVar4" (pointer_expression "*(uint *)(param_1 + 0x44)" (* "*") (cast_expression "(uint *)(param_1 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (uVar4 < (uVar5 < uVar1)) {\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" (if "if") (parenthesized_expression "(uVar4 < (uVar5 < uVar1))" (( "(") (binary_expression "uVar4 < (uVar5 < uVar1)" (identifier "uVar4") (< "<") (parenthesized_expression "(uVar5 < uVar1)" (( "(") (binary_expression "uVar5 < uVar1" (identifier "uVar5") (< "<") (identifier "uVar1")) () ")"))) () ")")) (compound_statement "{\n    bVar7 = 0xfffffffe < local_3c;\n    local_3c = local_3c + 1;\n    local_38 = local_38 + (uint)bVar7;\n    *(uint *)(param_1 + 0x48) = local_3c;\n    *(int *)(param_1 + 0x4c) = local_38;\n  }" ({ "{") (expression_statement "bVar7 = 0xfffffffe < local_3c;" (assignment_expression "bVar7 = 0xfffffffe < local_3c" (identifier "bVar7") (= "=") (binary_expression "0xfffffffe < local_3c" (number_literal "0xfffffffe") (< "<") (identifier "local_3c"))) (; ";")) (expression_statement "local_3c = local_3c + 1;" (assignment_expression "local_3c = local_3c + 1" (identifier "local_3c") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_38 = local_38 + (uint)bVar7;" (assignment_expression "local_38 = local_38 + (uint)bVar7" (identifier "local_38") (= "=") (binary_expression "local_38 + (uint)bVar7" (identifier "local_38") (+ "+") (cast_expression "(uint)bVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar7")))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x48) = local_3c;" (assignment_expression "*(uint *)(param_1 + 0x48) = local_3c" (pointer_expression "*(uint *)(param_1 + 0x48)" (* "*") (cast_expression "(uint *)(param_1 + 0x48)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (expression_statement "*(int *)(param_1 + 0x4c) = local_38;" (assignment_expression "*(int *)(param_1 + 0x4c) = local_38" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "local_38")) (; ";")) (} "}"))) (expression_statement "uVar3 = local_38 << 3;" (assignment_expression "uVar3 = local_38 << 3" (identifier "uVar3") (= "=") (binary_expression "local_38 << 3" (identifier "local_38") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "uVar2 = local_3c << 3;" (assignment_expression "uVar2 = local_3c << 3" (identifier "uVar2") (= "=") (binary_expression "local_3c << 3" (identifier "local_3c") (<< "<<") (number_literal "3"))) (; ";")) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" (identifier "iVar6") (= "=") (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" (( "(") (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" (- "-") (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < 0x70)" (( "(") (binary_expression "uVar1 < 0x70" (identifier "uVar1") (< "<") (number_literal "0x70")) () ")")))) (& "&") (number_literal "0xfffffff0")) () ")")) (+ "+") (number_literal "0x28"))) (; ";")) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" (* "*") (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" (( "(") (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |\n       (uVar3 | local_3c >> 0x1d) << 0x18" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar3 | local_3c >> 0x1d) << 0x18" (parenthesized_expression "(uVar3 | local_3c >> 0x1d)" (( "(") (binary_expression "uVar3 | local_3c >> 0x1d" (identifier "uVar3") (| "|") (binary_expression "local_3c >> 0x1d" (identifier "local_3c") (>> ">>") (number_literal "0x1d"))) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" (* "*") (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" (( "(") (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |\n       (uVar4 >> 0x1d | uVar2) << 0x18" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8" (binary_expression "uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8" (binary_expression "uVar2 >> 0x18" (identifier "uVar2") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar2 & 0xff0000) >> 8" (parenthesized_expression "(uVar2 & 0xff0000)" (( "(") (binary_expression "uVar2 & 0xff0000" (identifier "uVar2") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar2 & 0xff00) << 8" (parenthesized_expression "(uVar2 & 0xff00)" (( "(") (binary_expression "uVar2 & 0xff00" (identifier "uVar2") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar4 >> 0x1d | uVar2) << 0x18" (parenthesized_expression "(uVar4 >> 0x1d | uVar2)" (( "(") (binary_expression "uVar4 >> 0x1d | uVar2" (binary_expression "uVar4 >> 0x1d" (identifier "uVar4") (>> ">>") (number_literal "0x1d")) (| "|") (identifier "uVar2")) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "uVar4 = uVar4 * 8;" (assignment_expression "uVar4 = uVar4 * 8" (identifier "uVar4") (= "=") (binary_expression "uVar4 * 8" (identifier "uVar4") (* "*") (number_literal "8"))) (; ";")) (expression_statement "uVar3 = uVar5 * 8;" (assignment_expression "uVar3 = uVar5 * 8" (identifier "uVar3") (= "=") (binary_expression "uVar5 * 8" (identifier "uVar5") (* "*") (number_literal "8"))) (; ";")) (expression_statement "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;" (assignment_expression "iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" (identifier "iVar6") (= "=") (binary_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xfffffff0)" (( "(") (binary_expression "-(uint)(uVar1 < 0x70) & 0xfffffff0" (unary_expression "-(uint)(uVar1 < 0x70)" (- "-") (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < 0x70)" (( "(") (binary_expression "uVar1 < 0x70" (identifier "uVar1") (< "<") (number_literal "0x70")) () ")")))) (& "&") (number_literal "0xfffffff0")) () ")")) (+ "+") (number_literal "0x29"))) (; ";")) (expression_statement "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18;" (assignment_expression "*(uint *)(param_1 + 4 + iVar6 * 8) =\n       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (pointer_expression "*(uint *)(param_1 + 4 + iVar6 * 8)" (* "*") (cast_expression "(uint *)(param_1 + 4 + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4 + iVar6 * 8)" (( "(") (binary_expression "param_1 + 4 + iVar6 * 8" (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |\n       (uVar4 | uVar5 >> 0x1d) << 0x18" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8" (binary_expression "uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8" (binary_expression "uVar4 >> 0x18" (identifier "uVar4") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar4 & 0xff0000) >> 8" (parenthesized_expression "(uVar4 & 0xff0000)" (( "(") (binary_expression "uVar4 & 0xff0000" (identifier "uVar4") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar4 & 0xff00) << 8" (parenthesized_expression "(uVar4 & 0xff00)" (( "(") (binary_expression "uVar4 & 0xff00" (identifier "uVar4") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "(uVar4 | uVar5 >> 0x1d) << 0x18" (parenthesized_expression "(uVar4 | uVar5 >> 0x1d)" (( "(") (binary_expression "uVar4 | uVar5 >> 0x1d" (identifier "uVar4") (| "|") (binary_expression "uVar5 >> 0x1d" (identifier "uVar5") (>> ">>") (number_literal "0x1d"))) () ")")) (<< "<<") (number_literal "0x18")))) (; ";")) (expression_statement "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;" (assignment_expression "*(uint *)(param_1 + 8 + iVar6 * 8) =\n       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (pointer_expression "*(uint *)(param_1 + 8 + iVar6 * 8)" (* "*") (cast_expression "(uint *)(param_1 + 8 + iVar6 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8 + iVar6 * 8)" (( "(") (binary_expression "param_1 + 8 + iVar6 * 8" (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (+ "+") (binary_expression "iVar6 * 8" (identifier "iVar6") (* "*") (number_literal "8"))) () ")")))) (= "=") (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8" (binary_expression "uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8" (binary_expression "uVar3 >> 0x18" (identifier "uVar3") (>> ">>") (number_literal "0x18")) (| "|") (binary_expression "(uVar3 & 0xff0000) >> 8" (parenthesized_expression "(uVar3 & 0xff0000)" (( "(") (binary_expression "uVar3 & 0xff0000" (identifier "uVar3") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "8"))) (| "|") (binary_expression "(uVar3 & 0xff00) << 8" (parenthesized_expression "(uVar3 & 0xff00)" (( "(") (binary_expression "uVar3 & 0xff00" (identifier "uVar3") (& "&") (number_literal "0xff00")) () ")")) (<< "<<") (number_literal "8"))) (| "|") (binary_expression "uVar5 * 0x8000000" (identifier "uVar5") (* "*") (number_literal "0x8000000")))) (; ";")) (expression_statement "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);" (call_expression "memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" (identifier "memcpy") (argument_list "((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,\n         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1)" (( "(") (cast_expression "(void *)(param_1 + 0x54 + uVar1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54 + uVar1)" (( "(") (binary_expression "param_1 + 0x54 + uVar1" (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) (+ "+") (identifier "uVar1")) () ")"))) (, ",") (pointer_expression "&DAT_00026ba0" (& "&") (identifier "DAT_00026ba0")) (, ",") (binary_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1" (parenthesized_expression "((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0)" (( "(") (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" (( "(") (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" (- "-") (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < 0x70)" (( "(") (binary_expression "uVar1 < 0x70" (identifier "uVar1") (< "<") (number_literal "0x70")) () ")")))) (& "&") (number_literal "0xffffff80")) () ")")) (+ "+") (number_literal "0xf0")) () ")")) (- "-") (identifier "uVar1")) () ")"))) (; ";")) (expression_statement "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);" (call_expression "FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" (identifier "FUN_00013250") (argument_list "(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) (, ",") (binary_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100" (parenthesized_expression "(-(uint)(uVar1 < 0x70) & 0xffffff80)" (( "(") (binary_expression "-(uint)(uVar1 < 0x70) & 0xffffff80" (unary_expression "-(uint)(uVar1 < 0x70)" (- "-") (call_expression "(uint)(uVar1 < 0x70)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar1 < 0x70)" (( "(") (binary_expression "uVar1 < 0x70" (identifier "uVar1") (< "<") (number_literal "0x70")) () ")")))) (& "&") (number_literal "0xffffff80")) () ")")) (+ "+") (number_literal "0x100")) (, ",") (identifier "param_1") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

void __regparm3 function_1(type_1 *ctx)

{
  type_2 var_1;
  type_2 var_8;
  type_2 var_10;
  type_2 var_7;
  type_2 var_9;
  type_2 var_3;
  type_2 var_4;
  bool bVar8;
  type_2 var_5;
  int var_6;
  
  var_1 = ctx->buflen;
  var_6 = *(int *)((int)ctx->total + 0xc);
  var_10 = -(type_2)(var_1 < 0x70) & 0xfffffff0;
  var_7 = -(type_2)(var_1 < 0x70) & 0xfffffff0;
  var_4 = var_1 + (int)ctx->total[0];
  var_3 = *(int *)((int)ctx->total + 4) + (type_2)var_2(var_1,(type_2)ctx->total[0]);
  var_5 = (type_2)ctx->total[1];
  *(type_2 *)ctx->total = var_4;
  *(type_2 *)((int)ctx->total + 4) = var_3;
  if (var_3 < (var_4 < var_1)) {
    bVar8 = 0xfffffffe < var_5;
    var_5 = var_5 + 1;
    var_6 = var_6 + (type_2)bVar8;
    *(type_2 *)(ctx->total + 1) = var_5;
    *(int *)((int)ctx->total + 0xc) = var_6;
  }
  var_8 = var_6 << 3;
  var_9 = var_5 << 3;
  *(type_2 *)(ctx->buffer + var_7 + 0x1e) =
       var_8 >> 0x18 | (var_8 & 0xff0000) >> 8 | (var_8 & 0xff00) << 8 |
       (var_8 | var_5 >> 0x1d) << 0x18;
  *(type_2 *)((int)ctx->buffer + var_7 * 8 + 0xf4) =
       var_9 >> 0x18 | (var_9 & 0xff0000) >> 8 | (var_9 & 0xff00) << 8 |
       (var_3 >> 0x1d | var_9) << 0x18;
  var_3 = var_3 * 8;
  var_7 = var_4 * 8;
  *(type_2 *)(ctx->buffer + var_10 + 0x1f) =
       var_3 >> 0x18 | (var_3 & 0xff0000) >> 8 | (var_3 & 0xff00) << 8 |
       (var_3 | var_4 >> 0x1d) << 0x18;
  *(type_2 *)((int)ctx->buffer + var_10 * 8 + 0xfc) =
       var_7 >> 0x18 | (var_7 & 0xff0000) >> 8 | (var_7 & 0xff00) << 8 | var_4 * 0x8000000;
  var_11((void *)((int)ctx->buffer + var_1),fillbuf,
         ((-(type_2)(var_1 < 0x70) & 0xffffff80) + 0xf0) - var_1);
  var_12(ctx->buffer,(-(type_2)(var_1 < 0x70) & 0xffffff80) + 0x100,ctx);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.dx replaced with injection: get_pc_thunk_dx */

void __regparm3 MASKED(int param_1)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  bool bVar7;
  uint local_3c;
  int local_38;
  
  uVar1 = *(uint *)(param_1 + 0x50);
  local_38 = *(int *)(param_1 + 0x4c);
  uVar5 = uVar1 + *(uint *)(param_1 + 0x40);
  uVar4 = *(int *)(param_1 + 0x44) + (uint)CARRY4(uVar1,*(uint *)(param_1 + 0x40));
  local_3c = *(uint *)(param_1 + 0x48);
  *(uint *)(param_1 + 0x40) = uVar5;
  *(uint *)(param_1 + 0x44) = uVar4;
  if (uVar4 < (uVar5 < uVar1)) {
    bVar7 = 0xfffffffe < local_3c;
    local_3c = local_3c + 1;
    local_38 = local_38 + (uint)bVar7;
    *(uint *)(param_1 + 0x48) = local_3c;
    *(int *)(param_1 + 0x4c) = local_38;
  }
  uVar3 = local_38 << 3;
  uVar2 = local_3c << 3;
  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x28;
  *(uint *)(param_1 + 4 + iVar6 * 8) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 |
       (uVar3 | local_3c >> 0x1d) << 0x18;
  *(uint *)(param_1 + 8 + iVar6 * 8) =
       uVar2 >> 0x18 | (uVar2 & 0xff0000) >> 8 | (uVar2 & 0xff00) << 8 |
       (uVar4 >> 0x1d | uVar2) << 0x18;
  uVar4 = uVar4 * 8;
  uVar3 = uVar5 * 8;
  iVar6 = (-(uint)(uVar1 < 0x70) & 0xfffffff0) + 0x29;
  *(uint *)(param_1 + 4 + iVar6 * 8) =
       uVar4 >> 0x18 | (uVar4 & 0xff0000) >> 8 | (uVar4 & 0xff00) << 8 |
       (uVar4 | uVar5 >> 0x1d) << 0x18;
  *(uint *)(param_1 + 8 + iVar6 * 8) =
       uVar3 >> 0x18 | (uVar3 & 0xff0000) >> 8 | (uVar3 & 0xff00) << 8 | uVar5 * 0x8000000;
  memcpy((void *)(param_1 + 0x54 + uVar1),&DAT_00026ba0,
         ((-(uint)(uVar1 < 0x70) & 0xffffff80) + 0xf0) - uVar1);
  FUN_00013250(param_1 + 0x54,(-(uint)(uVar1 < 0x70) & 0xffffff80) + 0x100,param_1);
  return;
}

