
/* WARNING: Unknown calling convention */

void SHATransform(word32 *digest,word32 *block)

{
  uint *puVar1;
  word32 wVar2;
  uint uVar3;
  uint uVar4;
  uint *puVar5;
  word32 *pwVar6;
  uint uVar7;
  uint uVar8;
  word32 *pwVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  int in_GS_OFFSET;
  uint local_194;
  uint local_190;
  uint local_18c;
  word32 w [80];
  word32 local_20 [4];
  
  local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14);
  uVar3 = block[1];
  w[2] = block[2];
  w[0] = *block;
  w[3] = block[3];
  w[1] = uVar3;
  w[4] = block[4];
  w[5] = block[5];
  w[6] = block[6];
  w[7] = block[7];
  w[8] = block[8];
  w[9] = block[9];
  w[10] = block[10];
  w[0xb] = block[0xb];
  uVar8 = block[0xe];
  uVar10 = block[0xf];
  w[0xc] = block[0xc];
  uVar7 = block[0xd];
  w[0xe] = uVar8;
  w[0xd] = uVar7;
  w[0xf] = uVar10;
  iVar11 = 0x10;
  puVar5 = w + 2;
  local_190 = *block;
  do {
    puVar1 = puVar5 + 1;
    uVar8 = uVar8 ^ uVar3;
    iVar11 = iVar11 + 3;
    uVar3 = puVar5[2];
    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;
    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;
    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);
    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);
    puVar5[0xf] = uVar8;
    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;
    puVar5[0xe] = uVar7;
    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);
    puVar5[0x10] = uVar10;
    puVar5 = puVar5 + 3;
    local_190 = *puVar1;
  } while (iVar11 != 0x4f);
  pwVar6 = w;
  uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f];
  w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0);
  uVar3 = *digest;
  uVar10 = digest[3];
  uVar7 = digest[1];
  uVar12 = digest[4];
  uVar8 = digest[2];
  do {
    local_194 = uVar8;
    local_18c = uVar10;
    uVar4 = uVar3;
    wVar2 = *pwVar6;
    pwVar6 = pwVar6 + 1;
    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +
            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;
    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;
    uVar10 = local_194;
    uVar7 = uVar4;
    uVar12 = local_18c;
  } while (w + 0x14 != pwVar6);
  pwVar6 = w + 0x14;
  do {
    uVar10 = uVar8;
    uVar7 = uVar3;
    uVar12 = local_194;
    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;
    pwVar9 = pwVar6 + 1;
    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +
            local_18c;
    uVar4 = uVar7;
    local_194 = uVar10;
    pwVar6 = pwVar9;
    local_18c = uVar12;
  } while (w + 0x28 != pwVar9);
  pwVar6 = w + 0x28;
  local_194 = uVar12;
  do {
    local_18c = uVar3;
    uVar12 = uVar10;
    uVar10 = uVar8;
    wVar2 = *pwVar6;
    pwVar6 = pwVar6 + 1;
    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +
            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;
    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;
    uVar7 = local_18c;
    local_194 = uVar12;
  } while (pwVar6 != w + 0x3c);
  pwVar6 = w + 0x3c;
  do {
    uVar4 = uVar8;
    uVar12 = uVar10;
    uVar7 = uVar3;
    uVar8 = local_18c >> 2 | local_18c << 0x1e;
    pwVar9 = pwVar6 + 1;
    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +
            local_194;
    uVar10 = uVar4;
    pwVar6 = pwVar9;
    local_18c = uVar7;
    local_194 = uVar12;
  } while (pwVar9 != local_20);
  digest[1] = uVar7 + digest[1];
  *digest = uVar3 + *digest;
  digest[4] = uVar12 + digest[4];
  digest[2] = digest[2] + uVar8;
  digest[3] = digest[3] + uVar4;
  if (local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



void FUN_00042590(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  int in_GS_OFFSET;
  uint local_194;
  uint local_190;
  uint local_18c;
  uint local_160 [20];
  uint local_110 [20];
  uint local_c0 [20];
  uint local_70 [20];
  uint local_20 [4];
  
  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);
  uVar1 = param_2[1];
  local_160[2] = param_2[2];
  local_160[0] = *param_2;
  local_160[3] = param_2[3];
  local_160[1] = uVar1;
  local_160[4] = param_2[4];
  local_160[5] = param_2[5];
  local_160[6] = param_2[6];
  local_160[7] = param_2[7];
  local_160[8] = param_2[8];
  local_160[9] = param_2[9];
  local_160[10] = param_2[10];
  local_160[0xb] = param_2[0xb];
  uVar5 = param_2[0xe];
  uVar7 = param_2[0xf];
  local_160[0xc] = param_2[0xc];
  uVar4 = param_2[0xd];
  local_160[0xe] = uVar5;
  local_160[0xd] = uVar4;
  local_160[0xf] = uVar7;
  iVar8 = 0x10;
  puVar3 = local_160 + 2;
  local_190 = *param_2;
  do {
    puVar6 = puVar3 + 1;
    uVar5 = uVar5 ^ uVar1;
    iVar8 = iVar8 + 3;
    uVar1 = puVar3[2];
    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;
    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;
    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);
    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);
    puVar3[0xf] = uVar5;
    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;
    puVar3[0xe] = uVar4;
    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);
    puVar3[0x10] = uVar7;
    puVar3 = puVar3 + 3;
    local_190 = *puVar6;
  } while (iVar8 != 0x4f);
  puVar3 = local_160;
  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];
  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);
  uVar1 = *param_1;
  uVar7 = param_1[3];
  uVar4 = param_1[1];
  uVar9 = param_1[4];
  uVar5 = param_1[2];
  do {
    local_194 = uVar5;
    local_18c = uVar7;
    uVar2 = uVar1;
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +
            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;
    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;
    uVar7 = local_194;
    uVar4 = uVar2;
    uVar9 = local_18c;
  } while (local_110 != puVar3);
  puVar3 = local_110;
  do {
    uVar7 = uVar5;
    uVar4 = uVar1;
    uVar9 = local_194;
    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;
    puVar6 = puVar3 + 1;
    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +
            local_18c;
    uVar2 = uVar4;
    local_194 = uVar7;
    puVar3 = puVar6;
    local_18c = uVar9;
  } while (local_c0 != puVar6);
  puVar3 = local_c0;
  local_194 = uVar9;
  do {
    local_18c = uVar1;
    uVar9 = uVar7;
    uVar7 = uVar5;
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +
            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;
    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;
    uVar4 = local_18c;
    local_194 = uVar9;
  } while (puVar3 != local_70);
  puVar3 = local_70;
  do {
    uVar2 = uVar5;
    uVar9 = uVar7;
    uVar4 = uVar1;
    uVar5 = local_18c >> 2 | local_18c << 0x1e;
    puVar6 = puVar3 + 1;
    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +
            local_194;
    uVar7 = uVar2;
    puVar3 = puVar6;
    local_18c = uVar4;
    local_194 = uVar9;
  } while (puVar6 != local_20);
  param_1[1] = uVar4 + param_1[1];
  *param_1 = uVar1 + *param_1;
  param_1[4] = uVar9 + param_1[4];
  param_1[2] = param_1[2] + uVar5;
  param_1[3] = param_1[3] + uVar2;
  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0004d450();
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x18c
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x17c],EAX
XOR EAX,EAX
MOV ECX,dword ptr [ESP + 0x1a4]
MOV EBP,dword ptr [ESP + 0x1a0]
MOV EDX,dword ptr [ECX + 0x8]
MOV EDI,dword ptr [ECX]
MOV EAX,dword ptr [ECX + 0x4]
MOV dword ptr [ESP + 0x44],EDX
MOV EDX,dword ptr [ECX + 0xc]
MOV dword ptr [ESP + 0x3c],EDI
MOV dword ptr [ESP + 0x48],EDX
MOV EDX,dword ptr [ECX + 0x10]
MOV dword ptr [ESP + 0x40],EAX
MOV dword ptr [ESP + 0x4c],EDX
MOV EDX,dword ptr [ECX + 0x14]
MOV dword ptr [ESP + 0x50],EDX
MOV EDX,dword ptr [ECX + 0x18]
MOV dword ptr [ESP + 0x54],EDX
MOV EDX,dword ptr [ECX + 0x1c]
MOV dword ptr [ESP + 0x58],EDX
MOV EDX,dword ptr [ECX + 0x20]
MOV dword ptr [ESP + 0x5c],EDX
MOV EDX,dword ptr [ECX + 0x24]
MOV dword ptr [ESP + 0x60],EDX
MOV EDX,dword ptr [ECX + 0x28]
MOV dword ptr [ESP + 0x64],EDX
MOV EDX,dword ptr [ECX + 0x2c]
MOV dword ptr [ESP + 0x68],EDX
MOV EDX,dword ptr [ECX + 0x30]
MOV EBX,dword ptr [ECX + 0x38]
MOV ESI,dword ptr [ECX + 0x3c]
MOV dword ptr [ESP + 0x8],EBP
MOV dword ptr [ESP + 0x6c],EDX
MOV EDX,dword ptr [ECX + 0x34]
LEA ECX,[ESP + 0x44]
MOV dword ptr [ESP + 0x74],EBX
MOV dword ptr [ESP + 0x70],EDX
MOV dword ptr [ESP + 0x78],ESI
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,0x10
MOV EBP,dword ptr [ECX + 0x4]
XOR EBX,EAX
XOR EBX,dword ptr [ECX + 0x1c]
ADD EDI,0x3
XOR EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ECX + 0x8]
ADD ECX,0xc
XOR EBX,EBP
MOV dword ptr [ESP + 0xc],EBP
MOV EBP,dword ptr [ECX + 0x14]
XOR EDX,dword ptr [ECX + 0xc]
XOR EDX,dword ptr [ECX + -0xc]
ROL EBX,0x1
XOR EBP,EAX
ROL EDX,0x1
MOV dword ptr [ECX + 0x30],EBX
XOR EBP,ESI
XOR EBP,dword ptr [ECX + -0xc]
MOV dword ptr [ECX + 0x2c],EDX
MOV ESI,EBP
ROL ESI,0x1
MOV dword ptr [ECX + 0x34],ESI
CMP EDI,0x4f
JNZ 0x00042637
MOV EBP,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x16c]
LEA ECX,[ESP + 0x3c]
XOR EAX,dword ptr [ESP + 0x158]
XOR EAX,dword ptr [ESP + 0x140]
MOV dword ptr [ESP + 0x14],ECX
MOV ESI,dword ptr [EBP + 0x8]
XOR EAX,dword ptr [ESP + 0x138]
MOV dword ptr [ESP + 0x28],EBP
ROL EAX,0x1
MOV EBX,dword ptr [EBP + 0x4]
MOV EDX,dword ptr [EBP + 0xc]
MOV dword ptr [ESP + 0xc],ESI
LEA ESI,[ESP + 0x8c]
MOV EDI,dword ptr [EBP + 0x10]
MOV dword ptr [ESP + 0x178],EAX
MOV EAX,dword ptr [EBP]
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EBX
MOV dword ptr [ESP + 0x20],EDX
MOV dword ptr [ESP + 0x24],EDI
MOV dword ptr [ESP + 0x8],ESI
JMP 0x000426f2
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ESI
MOV EAX,EBP
MOV ESI,dword ptr [ECX]
MOV EBP,EAX
ADD ECX,0x4
ROL EBP,0x5
LEA EBP,[EBP + ESI*0x1 + 0x5a827999]
MOV ESI,dword ptr [ESP + 0x8]
XOR ESI,EDX
AND ESI,EBX
XOR ESI,EDX
ADD EBP,ESI
MOV ESI,EBX
MOV EBX,EAX
ADD EBP,EDI
ROR ESI,0x2
MOV EDI,EDX
CMP dword ptr [ESP + 0x10],ECX
JNZ 0x000426e8
MOV ECX,dword ptr [ESP + 0x14]
MOV EDI,EBP
MOV EBP,dword ptr [ESP + 0x28]
MOV EBX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],EDX
ADD ECX,0xa0
MOV dword ptr [ESP + 0x2c],EBP
MOV EBP,EDI
MOV dword ptr [ESP + 0x28],ECX
MOV ECX,dword ptr [ESP + 0x8]
JMP 0x00042756
MOV ECX,ESI
MOV EBP,EDI
MOV ESI,EDX
MOV EDX,EAX
MOV EDI,EBP
ROR EAX,0x2
ADD EBX,0x4
XOR EDX,ESI
ROL EDI,0x5
XOR EDX,ECX
LEA EDI,[EDX + EDI*0x1 + 0x6ed9eba1]
MOV EDX,EAX
ADD EDI,dword ptr [EBX + -0x4]
MOV EAX,EBP
ADD EDI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],ECX
CMP dword ptr [ESP + 0x28],EBX
JNZ 0x00042750
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x8],ECX
MOV ECX,EDX
LEA EDX,[ESP + 0xdc]
MOV dword ptr [ESP + 0x10],EDI
ADD EAX,0xf0
MOV dword ptr [ESP + 0x28],EAX
JMP 0x000427b0
MOV dword ptr [ESP + 0x10],EAX
MOV ESI,ECX
MOV ECX,EBX
MOV EAX,ECX
MOV EBX,ECX
MOV EDI,dword ptr [EDX]
ADD EDX,0x4
OR EAX,ESI
AND EBX,ESI
AND EAX,EBP
OR EAX,EBX
MOV EBX,dword ptr [ESP + 0x10]
ROL EBX,0x5
LEA EBX,[EBX + EDI*0x1 + 0x8f1bbcdc]
ADD EAX,EBX
MOV EBX,EBP
ADD EAX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0x10]
ROR EBX,0x2
MOV dword ptr [ESP + 0x8],ESI
CMP EDX,dword ptr [ESP + 0x28]
JNZ 0x000427a8
MOV dword ptr [ESP + 0x28],EBX
MOV EBX,dword ptr [ESP + 0x14]
MOV EDI,EBP
LEA EDX,[ESP + 0x12c]
MOV EBP,dword ptr [ESP + 0x2c]
MOV ESI,dword ptr [ESP + 0x28]
ADD EBX,0x140
MOV dword ptr [ESP + 0x10],EBX
MOV dword ptr [ESP + 0x14],EBP
JMP 0x0004281e
MOV ECX,ESI
MOV EAX,EBX
MOV ESI,EBP
MOV EBX,EDI
MOV EBP,EAX
ROR EDI,0x2
ADD EDX,0x4
XOR EBX,ESI
ROL EBP,0x5
XOR EBX,ECX
LEA EBX,[EBX + EBP*0x1 + 0xca62c1d6]
MOV EBP,EDI
ADD EBX,dword ptr [EDX + -0x4]
MOV EDI,EAX
ADD EBX,dword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ECX
CMP EDX,dword ptr [ESP + 0x10]
JNZ 0x00042818
MOV EDI,EBP
MOV EBP,dword ptr [ESP + 0x14]
ADD EAX,dword ptr [ESP + 0x1c]
ADD EBX,dword ptr [ESP + 0x18]
ADD ECX,dword ptr [ESP + 0x24]
MOV dword ptr [EBP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EBP],EBX
ADD EAX,EDI
MOV dword ptr [EBP + 0x10],ECX
MOV dword ptr [EBP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x20]
ADD EAX,ESI
MOV dword ptr [EBP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x17c]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00042893
ADD ESP,0x18c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CALL 0x0004d450
(translation_unit "void FUN_00042590(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0004d450();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00042590(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0004d450();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00042590(uint *param_1,uint *param_2)" identifier (parameter_list "(uint *param_1,uint *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0004d450();\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_194;" type_identifier identifier ;) (declaration "uint local_190;" type_identifier identifier ;) (declaration "uint local_18c;" type_identifier identifier ;) (declaration "uint local_160 [20];" type_identifier (array_declarator "local_160 [20]" identifier [ number_literal ]) ;) (declaration "uint local_110 [20];" type_identifier (array_declarator "local_110 [20]" identifier [ number_literal ]) ;) (declaration "uint local_c0 [20];" type_identifier (array_declarator "local_c0 [20]" identifier [ number_literal ]) ;) (declaration "uint local_70 [20];" type_identifier (array_declarator "local_70 [20]" identifier [ number_literal ]) ;) (declaration "uint local_20 [4];" type_identifier (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_160[2] = param_2[2];" (assignment_expression "local_160[2] = param_2[2]" (subscript_expression "local_160[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_160[0] = *param_2;" (assignment_expression "local_160[0] = *param_2" (subscript_expression "local_160[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_160[3] = param_2[3];" (assignment_expression "local_160[3] = param_2[3]" (subscript_expression "local_160[3]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "local_160[1] = uVar1;" (assignment_expression "local_160[1] = uVar1" (subscript_expression "local_160[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[4] = param_2[4];" (assignment_expression "local_160[4] = param_2[4]" (subscript_expression "local_160[4]" identifier [ number_literal ]) = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "local_160[5] = param_2[5];" (assignment_expression "local_160[5] = param_2[5]" (subscript_expression "local_160[5]" identifier [ number_literal ]) = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "local_160[6] = param_2[6];" (assignment_expression "local_160[6] = param_2[6]" (subscript_expression "local_160[6]" identifier [ number_literal ]) = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_160[7] = param_2[7];" (assignment_expression "local_160[7] = param_2[7]" (subscript_expression "local_160[7]" identifier [ number_literal ]) = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "local_160[8] = param_2[8];" (assignment_expression "local_160[8] = param_2[8]" (subscript_expression "local_160[8]" identifier [ number_literal ]) = (subscript_expression "param_2[8]" identifier [ number_literal ])) ;) (expression_statement "local_160[9] = param_2[9];" (assignment_expression "local_160[9] = param_2[9]" (subscript_expression "local_160[9]" identifier [ number_literal ]) = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "local_160[10] = param_2[10];" (assignment_expression "local_160[10] = param_2[10]" (subscript_expression "local_160[10]" identifier [ number_literal ]) = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xb] = param_2[0xb];" (assignment_expression "local_160[0xb] = param_2[0xb]" (subscript_expression "local_160[0xb]" identifier [ number_literal ]) = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_2[0xe];" (assignment_expression "uVar5 = param_2[0xe]" identifier = (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_2[0xf];" (assignment_expression "uVar7 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xc] = param_2[0xc];" (assignment_expression "local_160[0xc] = param_2[0xc]" (subscript_expression "local_160[0xc]" identifier [ number_literal ]) = (subscript_expression "param_2[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_2[0xd];" (assignment_expression "uVar4 = param_2[0xd]" identifier = (subscript_expression "param_2[0xd]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xe] = uVar5;" (assignment_expression "local_160[0xe] = uVar5" (subscript_expression "local_160[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[0xd] = uVar4;" (assignment_expression "local_160[0xd] = uVar4" (subscript_expression "local_160[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[0xf] = uVar7;" (assignment_expression "local_160[0xf] = uVar7" (subscript_expression "local_160[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" identifier = number_literal) ;) (expression_statement "puVar3 = local_160 + 2;" (assignment_expression "puVar3 = local_160 + 2" identifier = (binary_expression "local_160 + 2" identifier + number_literal)) ;) (expression_statement "local_190 = *param_2;" (assignment_expression "local_190 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (do_statement "do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);" do (compound_statement "{\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  }" { (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 ^ uVar1;" (assignment_expression "uVar5 = uVar5 ^ uVar1" identifier = (binary_expression "uVar5 ^ uVar1" identifier ^ identifier)) ;) (expression_statement "iVar8 = iVar8 + 3;" (assignment_expression "iVar8 = iVar8 + 3" identifier = (binary_expression "iVar8 + 3" identifier + number_literal)) ;) (expression_statement "uVar1 = puVar3[2];" (assignment_expression "uVar1 = puVar3[2]" identifier = (subscript_expression "puVar3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;" (assignment_expression "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6" identifier = (binary_expression "uVar5 ^ puVar3[7] ^ *puVar6" (binary_expression "uVar5 ^ puVar3[7]" identifier ^ (subscript_expression "puVar3[7]" identifier [ number_literal ])) ^ (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;" (assignment_expression "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" identifier = (binary_expression "uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" (binary_expression "uVar4 ^ local_190 ^ puVar3[6]" (binary_expression "uVar4 ^ local_190" identifier ^ identifier) ^ (subscript_expression "puVar3[6]" identifier [ number_literal ])) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);" (assignment_expression "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0)" identifier = (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);" (assignment_expression "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0)" identifier = (binary_expression "uVar4 << 1 | (uint)((int)uVar4 < 0)" (binary_expression "uVar4 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar4 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar3[0xf] = uVar5;" (assignment_expression "puVar3[0xf] = uVar5" (subscript_expression "puVar3[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;" (assignment_expression "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" identifier = (binary_expression "puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" (binary_expression "puVar3[8] ^ uVar1 ^ uVar7" (binary_expression "puVar3[8] ^ uVar1" (subscript_expression "puVar3[8]" identifier [ number_literal ]) ^ identifier) ^ identifier) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "puVar3[0xe] = uVar4;" (assignment_expression "puVar3[0xe] = uVar4" (subscript_expression "puVar3[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);" (assignment_expression "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0)" identifier = (binary_expression "uVar7 << 1 | (uint)((int)uVar7 < 0)" (binary_expression "uVar7 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar7 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar3[0x10] = uVar7;" (assignment_expression "puVar3[0x10] = uVar7" (subscript_expression "puVar3[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3 = puVar3 + 3;" (assignment_expression "puVar3 = puVar3 + 3" identifier = (binary_expression "puVar3 + 3" identifier + number_literal)) ;) (expression_statement "local_190 = *puVar6;" (assignment_expression "local_190 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) }) while (parenthesized_expression "(iVar8 != 0x4f)" ( (binary_expression "iVar8 != 0x4f" identifier != number_literal) )) ;) (expression_statement "puVar3 = local_160;" (assignment_expression "puVar3 = local_160" identifier = identifier) ;) (expression_statement "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];" (assignment_expression "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" identifier = (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5]" (binary_expression "local_70[0x10] ^ local_70[0xb]" (subscript_expression "local_70[0x10]" identifier [ number_literal ]) ^ (subscript_expression "local_70[0xb]" identifier [ number_literal ])) ^ (subscript_expression "local_70[5]" identifier [ number_literal ])) ^ (subscript_expression "local_70[3]" identifier [ number_literal ]))) ;) (expression_statement "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);" (assignment_expression "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0)" (subscript_expression "local_70[0x13]" identifier [ number_literal ]) = (binary_expression "uVar1 << 1 | (uint)((int)uVar1 < 0)" (binary_expression "uVar1 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar1 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar1 < 0)" ( (binary_expression "(int)uVar1 < 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[3];" (assignment_expression "uVar7 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = param_1[4];" (assignment_expression "uVar9 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (do_statement "do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);" do (compound_statement "{\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  }" { (expression_statement "local_194 = uVar5;" (assignment_expression "local_194 = uVar5" identifier = identifier) ;) (expression_statement "local_18c = uVar7;" (assignment_expression "local_18c = uVar7" identifier = identifier) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;" (assignment_expression "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" identifier = (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c)" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999" (parenthesized_expression "(uVar2 << 5 | uVar2 >> 0x1b)" ( (binary_expression "uVar2 << 5 | uVar2 >> 0x1b" (binary_expression "uVar2 << 5" identifier << number_literal) | (binary_expression "uVar2 >> 0x1b" identifier >> number_literal)) )) + number_literal) + identifier) + (parenthesized_expression "((local_194 ^ local_18c) & uVar4 ^ local_18c)" ( (binary_expression "(local_194 ^ local_18c) & uVar4 ^ local_18c" (binary_expression "(local_194 ^ local_18c) & uVar4" (parenthesized_expression "(local_194 ^ local_18c)" ( (binary_expression "local_194 ^ local_18c" identifier ^ identifier) )) & identifier) ^ identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" identifier = (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" identifier >> number_literal) | (binary_expression "uVar4 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar7 = local_194;" (assignment_expression "uVar7 = local_194" identifier = identifier) ;) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) (expression_statement "uVar9 = local_18c;" (assignment_expression "uVar9 = local_18c" identifier = identifier) ;) }) while (parenthesized_expression "(local_110 != puVar3)" ( (binary_expression "local_110 != puVar3" identifier != identifier) )) ;) (expression_statement "puVar3 = local_110;" (assignment_expression "puVar3 = local_110" identifier = identifier) ;) (do_statement "do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);" do (compound_statement "{\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (expression_statement "uVar9 = local_194;" (assignment_expression "uVar9 = local_194" identifier = identifier) ;) (expression_statement "uVar5 = uVar2 >> 2 | uVar2 << 0x1e;" (assignment_expression "uVar5 = uVar2 >> 2 | uVar2 << 0x1e" identifier = (binary_expression "uVar2 >> 2 | uVar2 << 0x1e" (binary_expression "uVar2 >> 2" identifier >> number_literal) | (binary_expression "uVar2 << 0x1e" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;" (assignment_expression "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" identifier = (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1" (parenthesized_expression "(uVar2 ^ uVar7 ^ uVar9)" ( (binary_expression "uVar2 ^ uVar7 ^ uVar9" (binary_expression "uVar2 ^ uVar7" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" ( (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" identifier << number_literal) | (binary_expression "uVar4 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*puVar3" * identifier)) + identifier)) ;) (expression_statement "uVar2 = uVar4;" (assignment_expression "uVar2 = uVar4" identifier = identifier) ;) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" identifier = identifier) ;) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (expression_statement "local_18c = uVar9;" (assignment_expression "local_18c = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(local_c0 != puVar6)" ( (binary_expression "local_c0 != puVar6" identifier != identifier) )) ;) (expression_statement "puVar3 = local_c0;" (assignment_expression "puVar3 = local_c0" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) (do_statement "do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);" do (compound_statement "{\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  }" { (expression_statement "local_18c = uVar1;" (assignment_expression "local_18c = uVar1" identifier = identifier) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;" (assignment_expression "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" identifier = (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b)" (parenthesized_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9)" ( (binary_expression "(uVar7 | uVar9) & uVar4 | uVar7 & uVar9" (binary_expression "(uVar7 | uVar9) & uVar4" (parenthesized_expression "(uVar7 | uVar9)" ( (binary_expression "uVar7 | uVar9" identifier | identifier) )) & identifier) | (binary_expression "uVar7 & uVar9" identifier & identifier)) )) + (parenthesized_expression "(local_18c << 5 | local_18c >> 0x1b)" ( (binary_expression "local_18c << 5 | local_18c >> 0x1b" (binary_expression "local_18c << 5" identifier << number_literal) | (binary_expression "local_18c >> 0x1b" identifier >> number_literal)) ))) + number_literal) + identifier) + identifier)) ;) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" identifier = (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" identifier >> number_literal) | (binary_expression "uVar4 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar4 = local_18c;" (assignment_expression "uVar4 = local_18c" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar3 != local_70)" ( (binary_expression "puVar3 != local_70" identifier != identifier) )) ;) (expression_statement "puVar3 = local_70;" (assignment_expression "puVar3 = local_70" identifier = identifier) ;) (do_statement "do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);" do (compound_statement "{\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  }" { (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" identifier = identifier) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (expression_statement "uVar5 = local_18c >> 2 | local_18c << 0x1e;" (assignment_expression "uVar5 = local_18c >> 2 | local_18c << 0x1e" identifier = (binary_expression "local_18c >> 2 | local_18c << 0x1e" (binary_expression "local_18c >> 2" identifier >> number_literal) | (binary_expression "local_18c << 0x1e" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;" (assignment_expression "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" identifier = (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6" (parenthesized_expression "(local_18c ^ uVar2 ^ uVar9)" ( (binary_expression "local_18c ^ uVar2 ^ uVar9" (binary_expression "local_18c ^ uVar2" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" ( (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" identifier << number_literal) | (binary_expression "uVar4 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*puVar3" * identifier)) + identifier)) ;) (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (expression_statement "local_18c = uVar4;" (assignment_expression "local_18c = uVar4" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar6 != local_20)" ( (binary_expression "puVar6 != local_20" identifier != identifier) )) ;) (expression_statement "param_1[1] = uVar4 + param_1[1];" (assignment_expression "param_1[1] = uVar4 + param_1[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "*param_1 = uVar1 + *param_1;" (assignment_expression "*param_1 = uVar1 + *param_1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "param_1[4] = uVar9 + param_1[4];" (assignment_expression "param_1[4] = uVar9 + param_1[4]" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "uVar9 + param_1[4]" identifier + (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "param_1[2] = param_1[2] + uVar5;" (assignment_expression "param_1[2] = param_1[2] + uVar5" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1[2] + uVar5" (subscript_expression "param_1[2]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "param_1[3] = param_1[3] + uVar2;" (assignment_expression "param_1[3] = param_1[3] + uVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "param_1[3] + uVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0004d450();\n  }" if (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0004d450();\n  }" { comment (expression_statement "FUN_0004d450();" (call_expression "FUN_0004d450()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nvoid SHATransform(word32 *digest,word32 *block)\n\n{\n  uint *puVar1;\n  word32 wVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  word32 *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  word32 *pwVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  word32 w [80];\n  word32 local_20 [4];\n  \n  local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14);\n  uVar3 = block[1];\n  w[2] = block[2];\n  w[0] = *block;\n  w[3] = block[3];\n  w[1] = uVar3;\n  w[4] = block[4];\n  w[5] = block[5];\n  w[6] = block[6];\n  w[7] = block[7];\n  w[8] = block[8];\n  w[9] = block[9];\n  w[10] = block[10];\n  w[0xb] = block[0xb];\n  uVar8 = block[0xe];\n  uVar10 = block[0xf];\n  w[0xc] = block[0xc];\n  uVar7 = block[0xd];\n  w[0xe] = uVar8;\n  w[0xd] = uVar7;\n  w[0xf] = uVar10;\n  iVar11 = 0x10;\n  puVar5 = w + 2;\n  local_190 = *block;\n  do {\n    puVar1 = puVar5 + 1;\n    uVar8 = uVar8 ^ uVar3;\n    iVar11 = iVar11 + 3;\n    uVar3 = puVar5[2];\n    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;\n    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;\n    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar5[0xf] = uVar8;\n    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;\n    puVar5[0xe] = uVar7;\n    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);\n    puVar5[0x10] = uVar10;\n    puVar5 = puVar5 + 3;\n    local_190 = *puVar1;\n  } while (iVar11 != 0x4f);\n  pwVar6 = w;\n  uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f];\n  w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0);\n  uVar3 = *digest;\n  uVar10 = digest[3];\n  uVar7 = digest[1];\n  uVar12 = digest[4];\n  uVar8 = digest[2];\n  do {\n    local_194 = uVar8;\n    local_18c = uVar10;\n    uVar4 = uVar3;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar10 = local_194;\n    uVar7 = uVar4;\n    uVar12 = local_18c;\n  } while (w + 0x14 != pwVar6);\n  pwVar6 = w + 0x14;\n  do {\n    uVar10 = uVar8;\n    uVar7 = uVar3;\n    uVar12 = local_194;\n    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;\n    uVar4 = uVar7;\n    local_194 = uVar10;\n    pwVar6 = pwVar9;\n    local_18c = uVar12;\n  } while (w + 0x28 != pwVar9);\n  pwVar6 = w + 0x28;\n  local_194 = uVar12;\n  do {\n    local_18c = uVar3;\n    uVar12 = uVar10;\n    uVar10 = uVar8;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar7 = local_18c;\n    local_194 = uVar12;\n  } while (pwVar6 != w + 0x3c);\n  pwVar6 = w + 0x3c;\n  do {\n    uVar4 = uVar8;\n    uVar12 = uVar10;\n    uVar7 = uVar3;\n    uVar8 = local_18c >> 2 | local_18c << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;\n    uVar10 = uVar4;\n    pwVar6 = pwVar9;\n    local_18c = uVar7;\n    local_194 = uVar12;\n  } while (pwVar9 != local_20);\n  digest[1] = uVar7 + digest[1];\n  *digest = uVar3 + *digest;\n  digest[4] = uVar12 + digest[4];\n  digest[2] = digest[2] + uVar8;\n  digest[3] = digest[3] + uVar4;\n  if (local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" comment (function_definition "void SHATransform(word32 *digest,word32 *block)\n\n{\n  uint *puVar1;\n  word32 wVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  word32 *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  word32 *pwVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  word32 w [80];\n  word32 local_20 [4];\n  \n  local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14);\n  uVar3 = block[1];\n  w[2] = block[2];\n  w[0] = *block;\n  w[3] = block[3];\n  w[1] = uVar3;\n  w[4] = block[4];\n  w[5] = block[5];\n  w[6] = block[6];\n  w[7] = block[7];\n  w[8] = block[8];\n  w[9] = block[9];\n  w[10] = block[10];\n  w[0xb] = block[0xb];\n  uVar8 = block[0xe];\n  uVar10 = block[0xf];\n  w[0xc] = block[0xc];\n  uVar7 = block[0xd];\n  w[0xe] = uVar8;\n  w[0xd] = uVar7;\n  w[0xf] = uVar10;\n  iVar11 = 0x10;\n  puVar5 = w + 2;\n  local_190 = *block;\n  do {\n    puVar1 = puVar5 + 1;\n    uVar8 = uVar8 ^ uVar3;\n    iVar11 = iVar11 + 3;\n    uVar3 = puVar5[2];\n    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;\n    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;\n    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar5[0xf] = uVar8;\n    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;\n    puVar5[0xe] = uVar7;\n    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);\n    puVar5[0x10] = uVar10;\n    puVar5 = puVar5 + 3;\n    local_190 = *puVar1;\n  } while (iVar11 != 0x4f);\n  pwVar6 = w;\n  uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f];\n  w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0);\n  uVar3 = *digest;\n  uVar10 = digest[3];\n  uVar7 = digest[1];\n  uVar12 = digest[4];\n  uVar8 = digest[2];\n  do {\n    local_194 = uVar8;\n    local_18c = uVar10;\n    uVar4 = uVar3;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar10 = local_194;\n    uVar7 = uVar4;\n    uVar12 = local_18c;\n  } while (w + 0x14 != pwVar6);\n  pwVar6 = w + 0x14;\n  do {\n    uVar10 = uVar8;\n    uVar7 = uVar3;\n    uVar12 = local_194;\n    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;\n    uVar4 = uVar7;\n    local_194 = uVar10;\n    pwVar6 = pwVar9;\n    local_18c = uVar12;\n  } while (w + 0x28 != pwVar9);\n  pwVar6 = w + 0x28;\n  local_194 = uVar12;\n  do {\n    local_18c = uVar3;\n    uVar12 = uVar10;\n    uVar10 = uVar8;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar7 = local_18c;\n    local_194 = uVar12;\n  } while (pwVar6 != w + 0x3c);\n  pwVar6 = w + 0x3c;\n  do {\n    uVar4 = uVar8;\n    uVar12 = uVar10;\n    uVar7 = uVar3;\n    uVar8 = local_18c >> 2 | local_18c << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;\n    uVar10 = uVar4;\n    pwVar6 = pwVar9;\n    local_18c = uVar7;\n    local_194 = uVar12;\n  } while (pwVar9 != local_20);\n  digest[1] = uVar7 + digest[1];\n  *digest = uVar3 + *digest;\n  digest[4] = uVar12 + digest[4];\n  digest[2] = digest[2] + uVar8;\n  digest[3] = digest[3] + uVar4;\n  if (local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (function_declarator "SHATransform(word32 *digest,word32 *block)" identifier (parameter_list "(word32 *digest,word32 *block)" ( (parameter_declaration "word32 *digest" type_identifier (pointer_declarator "*digest" * identifier)) , (parameter_declaration "word32 *block" type_identifier (pointer_declarator "*block" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  word32 wVar2;\n  uint uVar3;\n  uint uVar4;\n  uint *puVar5;\n  word32 *pwVar6;\n  uint uVar7;\n  uint uVar8;\n  word32 *pwVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  word32 w [80];\n  word32 local_20 [4];\n  \n  local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14);\n  uVar3 = block[1];\n  w[2] = block[2];\n  w[0] = *block;\n  w[3] = block[3];\n  w[1] = uVar3;\n  w[4] = block[4];\n  w[5] = block[5];\n  w[6] = block[6];\n  w[7] = block[7];\n  w[8] = block[8];\n  w[9] = block[9];\n  w[10] = block[10];\n  w[0xb] = block[0xb];\n  uVar8 = block[0xe];\n  uVar10 = block[0xf];\n  w[0xc] = block[0xc];\n  uVar7 = block[0xd];\n  w[0xe] = uVar8;\n  w[0xd] = uVar7;\n  w[0xf] = uVar10;\n  iVar11 = 0x10;\n  puVar5 = w + 2;\n  local_190 = *block;\n  do {\n    puVar1 = puVar5 + 1;\n    uVar8 = uVar8 ^ uVar3;\n    iVar11 = iVar11 + 3;\n    uVar3 = puVar5[2];\n    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;\n    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;\n    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar5[0xf] = uVar8;\n    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;\n    puVar5[0xe] = uVar7;\n    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);\n    puVar5[0x10] = uVar10;\n    puVar5 = puVar5 + 3;\n    local_190 = *puVar1;\n  } while (iVar11 != 0x4f);\n  pwVar6 = w;\n  uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f];\n  w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0);\n  uVar3 = *digest;\n  uVar10 = digest[3];\n  uVar7 = digest[1];\n  uVar12 = digest[4];\n  uVar8 = digest[2];\n  do {\n    local_194 = uVar8;\n    local_18c = uVar10;\n    uVar4 = uVar3;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar10 = local_194;\n    uVar7 = uVar4;\n    uVar12 = local_18c;\n  } while (w + 0x14 != pwVar6);\n  pwVar6 = w + 0x14;\n  do {\n    uVar10 = uVar8;\n    uVar7 = uVar3;\n    uVar12 = local_194;\n    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;\n    uVar4 = uVar7;\n    local_194 = uVar10;\n    pwVar6 = pwVar9;\n    local_18c = uVar12;\n  } while (w + 0x28 != pwVar9);\n  pwVar6 = w + 0x28;\n  local_194 = uVar12;\n  do {\n    local_18c = uVar3;\n    uVar12 = uVar10;\n    uVar10 = uVar8;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar7 = local_18c;\n    local_194 = uVar12;\n  } while (pwVar6 != w + 0x3c);\n  pwVar6 = w + 0x3c;\n  do {\n    uVar4 = uVar8;\n    uVar12 = uVar10;\n    uVar7 = uVar3;\n    uVar8 = local_18c >> 2 | local_18c << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;\n    uVar10 = uVar4;\n    pwVar6 = pwVar9;\n    local_18c = uVar7;\n    local_194 = uVar12;\n  } while (pwVar9 != local_20);\n  digest[1] = uVar7 + digest[1];\n  *digest = uVar3 + *digest;\n  digest[4] = uVar12 + digest[4];\n  digest[2] = digest[2] + uVar8;\n  digest[3] = digest[3] + uVar4;\n  if (local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "word32 wVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "word32 *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "word32 *pwVar9;" type_identifier (pointer_declarator "*pwVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_194;" type_identifier identifier ;) (declaration "uint local_190;" type_identifier identifier ;) (declaration "uint local_18c;" type_identifier identifier ;) (declaration "word32 w [80];" type_identifier (array_declarator "w [80]" identifier [ number_literal ]) ;) (declaration "word32 local_20 [4];" type_identifier (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(word32 *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(word32 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(word32 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "word32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = block[1];" (assignment_expression "uVar3 = block[1]" identifier = (subscript_expression "block[1]" identifier [ number_literal ])) ;) (expression_statement "w[2] = block[2];" (assignment_expression "w[2] = block[2]" (subscript_expression "w[2]" identifier [ number_literal ]) = (subscript_expression "block[2]" identifier [ number_literal ])) ;) (expression_statement "w[0] = *block;" (assignment_expression "w[0] = *block" (subscript_expression "w[0]" identifier [ number_literal ]) = (pointer_expression "*block" * identifier)) ;) (expression_statement "w[3] = block[3];" (assignment_expression "w[3] = block[3]" (subscript_expression "w[3]" identifier [ number_literal ]) = (subscript_expression "block[3]" identifier [ number_literal ])) ;) (expression_statement "w[1] = uVar3;" (assignment_expression "w[1] = uVar3" (subscript_expression "w[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "w[4] = block[4];" (assignment_expression "w[4] = block[4]" (subscript_expression "w[4]" identifier [ number_literal ]) = (subscript_expression "block[4]" identifier [ number_literal ])) ;) (expression_statement "w[5] = block[5];" (assignment_expression "w[5] = block[5]" (subscript_expression "w[5]" identifier [ number_literal ]) = (subscript_expression "block[5]" identifier [ number_literal ])) ;) (expression_statement "w[6] = block[6];" (assignment_expression "w[6] = block[6]" (subscript_expression "w[6]" identifier [ number_literal ]) = (subscript_expression "block[6]" identifier [ number_literal ])) ;) (expression_statement "w[7] = block[7];" (assignment_expression "w[7] = block[7]" (subscript_expression "w[7]" identifier [ number_literal ]) = (subscript_expression "block[7]" identifier [ number_literal ])) ;) (expression_statement "w[8] = block[8];" (assignment_expression "w[8] = block[8]" (subscript_expression "w[8]" identifier [ number_literal ]) = (subscript_expression "block[8]" identifier [ number_literal ])) ;) (expression_statement "w[9] = block[9];" (assignment_expression "w[9] = block[9]" (subscript_expression "w[9]" identifier [ number_literal ]) = (subscript_expression "block[9]" identifier [ number_literal ])) ;) (expression_statement "w[10] = block[10];" (assignment_expression "w[10] = block[10]" (subscript_expression "w[10]" identifier [ number_literal ]) = (subscript_expression "block[10]" identifier [ number_literal ])) ;) (expression_statement "w[0xb] = block[0xb];" (assignment_expression "w[0xb] = block[0xb]" (subscript_expression "w[0xb]" identifier [ number_literal ]) = (subscript_expression "block[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = block[0xe];" (assignment_expression "uVar8 = block[0xe]" identifier = (subscript_expression "block[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = block[0xf];" (assignment_expression "uVar10 = block[0xf]" identifier = (subscript_expression "block[0xf]" identifier [ number_literal ])) ;) (expression_statement "w[0xc] = block[0xc];" (assignment_expression "w[0xc] = block[0xc]" (subscript_expression "w[0xc]" identifier [ number_literal ]) = (subscript_expression "block[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = block[0xd];" (assignment_expression "uVar7 = block[0xd]" identifier = (subscript_expression "block[0xd]" identifier [ number_literal ])) ;) (expression_statement "w[0xe] = uVar8;" (assignment_expression "w[0xe] = uVar8" (subscript_expression "w[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "w[0xd] = uVar7;" (assignment_expression "w[0xd] = uVar7" (subscript_expression "w[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "w[0xf] = uVar10;" (assignment_expression "w[0xf] = uVar10" (subscript_expression "w[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar11 = 0x10;" (assignment_expression "iVar11 = 0x10" identifier = number_literal) ;) (expression_statement "puVar5 = w + 2;" (assignment_expression "puVar5 = w + 2" identifier = (binary_expression "w + 2" identifier + number_literal)) ;) (expression_statement "local_190 = *block;" (assignment_expression "local_190 = *block" identifier = (pointer_expression "*block" * identifier)) ;) (do_statement "do {\n    puVar1 = puVar5 + 1;\n    uVar8 = uVar8 ^ uVar3;\n    iVar11 = iVar11 + 3;\n    uVar3 = puVar5[2];\n    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;\n    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;\n    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar5[0xf] = uVar8;\n    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;\n    puVar5[0xe] = uVar7;\n    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);\n    puVar5[0x10] = uVar10;\n    puVar5 = puVar5 + 3;\n    local_190 = *puVar1;\n  } while (iVar11 != 0x4f);" do (compound_statement "{\n    puVar1 = puVar5 + 1;\n    uVar8 = uVar8 ^ uVar3;\n    iVar11 = iVar11 + 3;\n    uVar3 = puVar5[2];\n    uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;\n    uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;\n    uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar5[0xf] = uVar8;\n    uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;\n    puVar5[0xe] = uVar7;\n    uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);\n    puVar5[0x10] = uVar10;\n    puVar5 = puVar5 + 3;\n    local_190 = *puVar1;\n  }" { (expression_statement "puVar1 = puVar5 + 1;" (assignment_expression "puVar1 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = uVar8 ^ uVar3;" (assignment_expression "uVar8 = uVar8 ^ uVar3" identifier = (binary_expression "uVar8 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "iVar11 = iVar11 + 3;" (assignment_expression "iVar11 = iVar11 + 3" identifier = (binary_expression "iVar11 + 3" identifier + number_literal)) ;) (expression_statement "uVar3 = puVar5[2];" (assignment_expression "uVar3 = puVar5[2]" identifier = (subscript_expression "puVar5[2]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = uVar8 ^ puVar5[7] ^ *puVar1;" (assignment_expression "uVar8 = uVar8 ^ puVar5[7] ^ *puVar1" identifier = (binary_expression "uVar8 ^ puVar5[7] ^ *puVar1" (binary_expression "uVar8 ^ puVar5[7]" identifier ^ (subscript_expression "puVar5[7]" identifier [ number_literal ])) ^ (pointer_expression "*puVar1" * identifier))) ;) (expression_statement "uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5;" (assignment_expression "uVar7 = uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5" identifier = (binary_expression "uVar7 ^ local_190 ^ puVar5[6] ^ *puVar5" (binary_expression "uVar7 ^ local_190 ^ puVar5[6]" (binary_expression "uVar7 ^ local_190" identifier ^ identifier) ^ (subscript_expression "puVar5[6]" identifier [ number_literal ])) ^ (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0);" (assignment_expression "uVar8 = uVar8 << 1 | (uint)((int)uVar8 < 0)" identifier = (binary_expression "uVar8 << 1 | (uint)((int)uVar8 < 0)" (binary_expression "uVar8 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar8 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);" (assignment_expression "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0)" identifier = (binary_expression "uVar7 << 1 | (uint)((int)uVar7 < 0)" (binary_expression "uVar7 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar7 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar5[0xf] = uVar8;" (assignment_expression "puVar5[0xf] = uVar8" (subscript_expression "puVar5[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5;" (assignment_expression "uVar10 = puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5" identifier = (binary_expression "puVar5[8] ^ uVar3 ^ uVar10 ^ *puVar5" (binary_expression "puVar5[8] ^ uVar3 ^ uVar10" (binary_expression "puVar5[8] ^ uVar3" (subscript_expression "puVar5[8]" identifier [ number_literal ]) ^ identifier) ^ identifier) ^ (pointer_expression "*puVar5" * identifier))) ;) (expression_statement "puVar5[0xe] = uVar7;" (assignment_expression "puVar5[0xe] = uVar7" (subscript_expression "puVar5[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0);" (assignment_expression "uVar10 = uVar10 << 1 | (uint)((int)uVar10 < 0)" identifier = (binary_expression "uVar10 << 1 | (uint)((int)uVar10 < 0)" (binary_expression "uVar10 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar10 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar5[0x10] = uVar10;" (assignment_expression "puVar5[0x10] = uVar10" (subscript_expression "puVar5[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar5 = puVar5 + 3;" (assignment_expression "puVar5 = puVar5 + 3" identifier = (binary_expression "puVar5 + 3" identifier + number_literal)) ;) (expression_statement "local_190 = *puVar1;" (assignment_expression "local_190 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) }) while (parenthesized_expression "(iVar11 != 0x4f)" ( (binary_expression "iVar11 != 0x4f" identifier != number_literal) )) ;) (expression_statement "pwVar6 = w;" (assignment_expression "pwVar6 = w" identifier = identifier) ;) (expression_statement "uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f];" (assignment_expression "uVar3 = w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f]" identifier = (binary_expression "w[0x4c] ^ w[0x47] ^ w[0x41] ^ w[0x3f]" (binary_expression "w[0x4c] ^ w[0x47] ^ w[0x41]" (binary_expression "w[0x4c] ^ w[0x47]" (subscript_expression "w[0x4c]" identifier [ number_literal ]) ^ (subscript_expression "w[0x47]" identifier [ number_literal ])) ^ (subscript_expression "w[0x41]" identifier [ number_literal ])) ^ (subscript_expression "w[0x3f]" identifier [ number_literal ]))) ;) (expression_statement "w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0);" (assignment_expression "w[0x4f] = uVar3 << 1 | (uint)((int)uVar3 < 0)" (subscript_expression "w[0x4f]" identifier [ number_literal ]) = (binary_expression "uVar3 << 1 | (uint)((int)uVar3 < 0)" (binary_expression "uVar3 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar3 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar3 < 0)" ( (binary_expression "(int)uVar3 < 0" (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar3 = *digest;" (assignment_expression "uVar3 = *digest" identifier = (pointer_expression "*digest" * identifier)) ;) (expression_statement "uVar10 = digest[3];" (assignment_expression "uVar10 = digest[3]" identifier = (subscript_expression "digest[3]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = digest[1];" (assignment_expression "uVar7 = digest[1]" identifier = (subscript_expression "digest[1]" identifier [ number_literal ])) ;) (expression_statement "uVar12 = digest[4];" (assignment_expression "uVar12 = digest[4]" identifier = (subscript_expression "digest[4]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = digest[2];" (assignment_expression "uVar8 = digest[2]" identifier = (subscript_expression "digest[2]" identifier [ number_literal ])) ;) (do_statement "do {\n    local_194 = uVar8;\n    local_18c = uVar10;\n    uVar4 = uVar3;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar10 = local_194;\n    uVar7 = uVar4;\n    uVar12 = local_18c;\n  } while (w + 0x14 != pwVar6);" do (compound_statement "{\n    local_194 = uVar8;\n    local_18c = uVar10;\n    uVar4 = uVar3;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar10 = local_194;\n    uVar7 = uVar4;\n    uVar12 = local_18c;\n  }" { (expression_statement "local_194 = uVar8;" (assignment_expression "local_194 = uVar8" identifier = identifier) ;) (expression_statement "local_18c = uVar10;" (assignment_expression "local_18c = uVar10" identifier = identifier) ;) (expression_statement "uVar4 = uVar3;" (assignment_expression "uVar4 = uVar3" identifier = identifier) ;) (expression_statement "wVar2 = *pwVar6;" (assignment_expression "wVar2 = *pwVar6" identifier = (pointer_expression "*pwVar6" * identifier)) ;) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12;" (assignment_expression "uVar3 = (uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12" identifier = (binary_expression "(uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c) + uVar12" (binary_expression "(uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2 +\n            ((local_194 ^ local_18c) & uVar7 ^ local_18c)" (binary_expression "(uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999 + wVar2" (binary_expression "(uVar4 << 5 | uVar4 >> 0x1b) + 0x5a827999" (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" ( (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" identifier << number_literal) | (binary_expression "uVar4 >> 0x1b" identifier >> number_literal)) )) + number_literal) + identifier) + (parenthesized_expression "((local_194 ^ local_18c) & uVar7 ^ local_18c)" ( (binary_expression "(local_194 ^ local_18c) & uVar7 ^ local_18c" (binary_expression "(local_194 ^ local_18c) & uVar7" (parenthesized_expression "(local_194 ^ local_18c)" ( (binary_expression "local_194 ^ local_18c" identifier ^ identifier) )) & identifier) ^ identifier) ))) + identifier)) ;) (expression_statement "uVar8 = uVar7 >> 2 | uVar7 << 0x1e;" (assignment_expression "uVar8 = uVar7 >> 2 | uVar7 << 0x1e" identifier = (binary_expression "uVar7 >> 2 | uVar7 << 0x1e" (binary_expression "uVar7 >> 2" identifier >> number_literal) | (binary_expression "uVar7 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar10 = local_194;" (assignment_expression "uVar10 = local_194" identifier = identifier) ;) (expression_statement "uVar7 = uVar4;" (assignment_expression "uVar7 = uVar4" identifier = identifier) ;) (expression_statement "uVar12 = local_18c;" (assignment_expression "uVar12 = local_18c" identifier = identifier) ;) }) while (parenthesized_expression "(w + 0x14 != pwVar6)" ( (binary_expression "w + 0x14 != pwVar6" (binary_expression "w + 0x14" identifier + number_literal) != identifier) )) ;) (expression_statement "pwVar6 = w + 0x14;" (assignment_expression "pwVar6 = w + 0x14" identifier = (binary_expression "w + 0x14" identifier + number_literal)) ;) (do_statement "do {\n    uVar10 = uVar8;\n    uVar7 = uVar3;\n    uVar12 = local_194;\n    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;\n    uVar4 = uVar7;\n    local_194 = uVar10;\n    pwVar6 = pwVar9;\n    local_18c = uVar12;\n  } while (w + 0x28 != pwVar9);" do (compound_statement "{\n    uVar10 = uVar8;\n    uVar7 = uVar3;\n    uVar12 = local_194;\n    uVar8 = uVar4 >> 2 | uVar4 << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;\n    uVar4 = uVar7;\n    local_194 = uVar10;\n    pwVar6 = pwVar9;\n    local_18c = uVar12;\n  }" { (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) (expression_statement "uVar12 = local_194;" (assignment_expression "uVar12 = local_194" identifier = identifier) ;) (expression_statement "uVar8 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar8 = uVar4 >> 2 | uVar4 << 0x1e" identifier = (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" identifier >> number_literal) | (binary_expression "uVar4 << 0x1e" identifier << number_literal))) ;) (expression_statement "pwVar9 = pwVar6 + 1;" (assignment_expression "pwVar9 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c;" (assignment_expression "uVar3 = (uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c" identifier = (binary_expression "(uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_18c" (binary_expression "(uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6" (binary_expression "(uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1 + (uVar7 << 5 | uVar7 >> 0x1b)" (binary_expression "(uVar4 ^ uVar10 ^ uVar12) + 0x6ed9eba1" (parenthesized_expression "(uVar4 ^ uVar10 ^ uVar12)" ( (binary_expression "uVar4 ^ uVar10 ^ uVar12" (binary_expression "uVar4 ^ uVar10" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar7 << 5 | uVar7 >> 0x1b)" ( (binary_expression "uVar7 << 5 | uVar7 >> 0x1b" (binary_expression "uVar7 << 5" identifier << number_literal) | (binary_expression "uVar7 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*pwVar6" * identifier)) + identifier)) ;) (expression_statement "uVar4 = uVar7;" (assignment_expression "uVar4 = uVar7" identifier = identifier) ;) (expression_statement "local_194 = uVar10;" (assignment_expression "local_194 = uVar10" identifier = identifier) ;) (expression_statement "pwVar6 = pwVar9;" (assignment_expression "pwVar6 = pwVar9" identifier = identifier) ;) (expression_statement "local_18c = uVar12;" (assignment_expression "local_18c = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(w + 0x28 != pwVar9)" ( (binary_expression "w + 0x28 != pwVar9" (binary_expression "w + 0x28" identifier + number_literal) != identifier) )) ;) (expression_statement "pwVar6 = w + 0x28;" (assignment_expression "pwVar6 = w + 0x28" identifier = (binary_expression "w + 0x28" identifier + number_literal)) ;) (expression_statement "local_194 = uVar12;" (assignment_expression "local_194 = uVar12" identifier = identifier) ;) (do_statement "do {\n    local_18c = uVar3;\n    uVar12 = uVar10;\n    uVar10 = uVar8;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar7 = local_18c;\n    local_194 = uVar12;\n  } while (pwVar6 != w + 0x3c);" do (compound_statement "{\n    local_18c = uVar3;\n    uVar12 = uVar10;\n    uVar10 = uVar8;\n    wVar2 = *pwVar6;\n    pwVar6 = pwVar6 + 1;\n    uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;\n    uVar8 = uVar7 >> 2 | uVar7 << 0x1e;\n    uVar7 = local_18c;\n    local_194 = uVar12;\n  }" { (expression_statement "local_18c = uVar3;" (assignment_expression "local_18c = uVar3" identifier = identifier) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) (expression_statement "wVar2 = *pwVar6;" (assignment_expression "wVar2 = *pwVar6" identifier = (pointer_expression "*pwVar6" * identifier)) ;) (expression_statement "pwVar6 = pwVar6 + 1;" (assignment_expression "pwVar6 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194;" (assignment_expression "uVar3 = ((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194" identifier = (binary_expression "((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2 + local_194" (binary_expression "((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + wVar2" (binary_expression "((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc" (binary_expression "((uVar10 | uVar12) & uVar7 | uVar10 & uVar12) +\n            (local_18c << 5 | local_18c >> 0x1b)" (parenthesized_expression "((uVar10 | uVar12) & uVar7 | uVar10 & uVar12)" ( (binary_expression "(uVar10 | uVar12) & uVar7 | uVar10 & uVar12" (binary_expression "(uVar10 | uVar12) & uVar7" (parenthesized_expression "(uVar10 | uVar12)" ( (binary_expression "uVar10 | uVar12" identifier | identifier) )) & identifier) | (binary_expression "uVar10 & uVar12" identifier & identifier)) )) + (parenthesized_expression "(local_18c << 5 | local_18c >> 0x1b)" ( (binary_expression "local_18c << 5 | local_18c >> 0x1b" (binary_expression "local_18c << 5" identifier << number_literal) | (binary_expression "local_18c >> 0x1b" identifier >> number_literal)) ))) + number_literal) + identifier) + identifier)) ;) (expression_statement "uVar8 = uVar7 >> 2 | uVar7 << 0x1e;" (assignment_expression "uVar8 = uVar7 >> 2 | uVar7 << 0x1e" identifier = (binary_expression "uVar7 >> 2 | uVar7 << 0x1e" (binary_expression "uVar7 >> 2" identifier >> number_literal) | (binary_expression "uVar7 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar7 = local_18c;" (assignment_expression "uVar7 = local_18c" identifier = identifier) ;) (expression_statement "local_194 = uVar12;" (assignment_expression "local_194 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar6 != w + 0x3c)" ( (binary_expression "pwVar6 != w + 0x3c" identifier != (binary_expression "w + 0x3c" identifier + number_literal)) )) ;) (expression_statement "pwVar6 = w + 0x3c;" (assignment_expression "pwVar6 = w + 0x3c" identifier = (binary_expression "w + 0x3c" identifier + number_literal)) ;) (do_statement "do {\n    uVar4 = uVar8;\n    uVar12 = uVar10;\n    uVar7 = uVar3;\n    uVar8 = local_18c >> 2 | local_18c << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;\n    uVar10 = uVar4;\n    pwVar6 = pwVar9;\n    local_18c = uVar7;\n    local_194 = uVar12;\n  } while (pwVar9 != local_20);" do (compound_statement "{\n    uVar4 = uVar8;\n    uVar12 = uVar10;\n    uVar7 = uVar3;\n    uVar8 = local_18c >> 2 | local_18c << 0x1e;\n    pwVar9 = pwVar6 + 1;\n    uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;\n    uVar10 = uVar4;\n    pwVar6 = pwVar9;\n    local_18c = uVar7;\n    local_194 = uVar12;\n  }" { (expression_statement "uVar4 = uVar8;" (assignment_expression "uVar4 = uVar8" identifier = identifier) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) (expression_statement "uVar7 = uVar3;" (assignment_expression "uVar7 = uVar3" identifier = identifier) ;) (expression_statement "uVar8 = local_18c >> 2 | local_18c << 0x1e;" (assignment_expression "uVar8 = local_18c >> 2 | local_18c << 0x1e" identifier = (binary_expression "local_18c >> 2 | local_18c << 0x1e" (binary_expression "local_18c >> 2" identifier >> number_literal) | (binary_expression "local_18c << 0x1e" identifier << number_literal))) ;) (expression_statement "pwVar9 = pwVar6 + 1;" (assignment_expression "pwVar9 = pwVar6 + 1" identifier = (binary_expression "pwVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194;" (assignment_expression "uVar3 = (local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194" identifier = (binary_expression "(local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6 +\n            local_194" (binary_expression "(local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b) + *pwVar6" (binary_expression "(local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6 + (uVar7 << 5 | uVar7 >> 0x1b)" (binary_expression "(local_18c ^ uVar4 ^ uVar12) + 0xca62c1d6" (parenthesized_expression "(local_18c ^ uVar4 ^ uVar12)" ( (binary_expression "local_18c ^ uVar4 ^ uVar12" (binary_expression "local_18c ^ uVar4" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar7 << 5 | uVar7 >> 0x1b)" ( (binary_expression "uVar7 << 5 | uVar7 >> 0x1b" (binary_expression "uVar7 << 5" identifier << number_literal) | (binary_expression "uVar7 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*pwVar6" * identifier)) + identifier)) ;) (expression_statement "uVar10 = uVar4;" (assignment_expression "uVar10 = uVar4" identifier = identifier) ;) (expression_statement "pwVar6 = pwVar9;" (assignment_expression "pwVar6 = pwVar9" identifier = identifier) ;) (expression_statement "local_18c = uVar7;" (assignment_expression "local_18c = uVar7" identifier = identifier) ;) (expression_statement "local_194 = uVar12;" (assignment_expression "local_194 = uVar12" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar9 != local_20)" ( (binary_expression "pwVar9 != local_20" identifier != identifier) )) ;) (expression_statement "digest[1] = uVar7 + digest[1];" (assignment_expression "digest[1] = uVar7 + digest[1]" (subscript_expression "digest[1]" identifier [ number_literal ]) = (binary_expression "uVar7 + digest[1]" identifier + (subscript_expression "digest[1]" identifier [ number_literal ]))) ;) (expression_statement "*digest = uVar3 + *digest;" (assignment_expression "*digest = uVar3 + *digest" (pointer_expression "*digest" * identifier) = (binary_expression "uVar3 + *digest" identifier + (pointer_expression "*digest" * identifier))) ;) (expression_statement "digest[4] = uVar12 + digest[4];" (assignment_expression "digest[4] = uVar12 + digest[4]" (subscript_expression "digest[4]" identifier [ number_literal ]) = (binary_expression "uVar12 + digest[4]" identifier + (subscript_expression "digest[4]" identifier [ number_literal ]))) ;) (expression_statement "digest[2] = digest[2] + uVar8;" (assignment_expression "digest[2] = digest[2] + uVar8" (subscript_expression "digest[2]" identifier [ number_literal ]) = (binary_expression "digest[2] + uVar8" (subscript_expression "digest[2]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "digest[3] = digest[3] + uVar4;" (assignment_expression "digest[3] = digest[3] + uVar4" (subscript_expression "digest[3]" identifier [ number_literal ]) = (binary_expression "digest[3] + uVar4" (subscript_expression "digest[3]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(word32 *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(word32 *)(in_GS_OFFSET + 0x14)" * (cast_expression "(word32 *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "word32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00042590(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00042590(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00042590(uint *param_1,uint *param_2)" identifier (parameter_list "(uint *param_1,uint *param_2)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_194;" type_identifier identifier ;) (declaration "uint local_190;" type_identifier identifier ;) (declaration "uint local_18c;" type_identifier identifier ;) (declaration "uint local_160 [20];" type_identifier (array_declarator "local_160 [20]" identifier [ number_literal ]) ;) (declaration "uint local_110 [20];" type_identifier (array_declarator "local_110 [20]" identifier [ number_literal ]) ;) (declaration "uint local_c0 [20];" type_identifier (array_declarator "local_c0 [20]" identifier [ number_literal ]) ;) (declaration "uint local_70 [20];" type_identifier (array_declarator "local_70 [20]" identifier [ number_literal ]) ;) (declaration "uint local_20 [4];" type_identifier (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "local_160[2] = param_2[2];" (assignment_expression "local_160[2] = param_2[2]" (subscript_expression "local_160[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "local_160[0] = *param_2;" (assignment_expression "local_160[0] = *param_2" (subscript_expression "local_160[0]" identifier [ number_literal ]) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_160[3] = param_2[3];" (assignment_expression "local_160[3] = param_2[3]" (subscript_expression "local_160[3]" identifier [ number_literal ]) = (subscript_expression "param_2[3]" identifier [ number_literal ])) ;) (expression_statement "local_160[1] = uVar1;" (assignment_expression "local_160[1] = uVar1" (subscript_expression "local_160[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[4] = param_2[4];" (assignment_expression "local_160[4] = param_2[4]" (subscript_expression "local_160[4]" identifier [ number_literal ]) = (subscript_expression "param_2[4]" identifier [ number_literal ])) ;) (expression_statement "local_160[5] = param_2[5];" (assignment_expression "local_160[5] = param_2[5]" (subscript_expression "local_160[5]" identifier [ number_literal ]) = (subscript_expression "param_2[5]" identifier [ number_literal ])) ;) (expression_statement "local_160[6] = param_2[6];" (assignment_expression "local_160[6] = param_2[6]" (subscript_expression "local_160[6]" identifier [ number_literal ]) = (subscript_expression "param_2[6]" identifier [ number_literal ])) ;) (expression_statement "local_160[7] = param_2[7];" (assignment_expression "local_160[7] = param_2[7]" (subscript_expression "local_160[7]" identifier [ number_literal ]) = (subscript_expression "param_2[7]" identifier [ number_literal ])) ;) (expression_statement "local_160[8] = param_2[8];" (assignment_expression "local_160[8] = param_2[8]" (subscript_expression "local_160[8]" identifier [ number_literal ]) = (subscript_expression "param_2[8]" identifier [ number_literal ])) ;) (expression_statement "local_160[9] = param_2[9];" (assignment_expression "local_160[9] = param_2[9]" (subscript_expression "local_160[9]" identifier [ number_literal ]) = (subscript_expression "param_2[9]" identifier [ number_literal ])) ;) (expression_statement "local_160[10] = param_2[10];" (assignment_expression "local_160[10] = param_2[10]" (subscript_expression "local_160[10]" identifier [ number_literal ]) = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xb] = param_2[0xb];" (assignment_expression "local_160[0xb] = param_2[0xb]" (subscript_expression "local_160[0xb]" identifier [ number_literal ]) = (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_2[0xe];" (assignment_expression "uVar5 = param_2[0xe]" identifier = (subscript_expression "param_2[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_2[0xf];" (assignment_expression "uVar7 = param_2[0xf]" identifier = (subscript_expression "param_2[0xf]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xc] = param_2[0xc];" (assignment_expression "local_160[0xc] = param_2[0xc]" (subscript_expression "local_160[0xc]" identifier [ number_literal ]) = (subscript_expression "param_2[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_2[0xd];" (assignment_expression "uVar4 = param_2[0xd]" identifier = (subscript_expression "param_2[0xd]" identifier [ number_literal ])) ;) (expression_statement "local_160[0xe] = uVar5;" (assignment_expression "local_160[0xe] = uVar5" (subscript_expression "local_160[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[0xd] = uVar4;" (assignment_expression "local_160[0xd] = uVar4" (subscript_expression "local_160[0xd]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_160[0xf] = uVar7;" (assignment_expression "local_160[0xf] = uVar7" (subscript_expression "local_160[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" identifier = number_literal) ;) (expression_statement "puVar3 = local_160 + 2;" (assignment_expression "puVar3 = local_160 + 2" identifier = (binary_expression "local_160 + 2" identifier + number_literal)) ;) (expression_statement "local_190 = *param_2;" (assignment_expression "local_190 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (do_statement "do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);" do (compound_statement "{\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  }" { (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar5 ^ uVar1;" (assignment_expression "uVar5 = uVar5 ^ uVar1" identifier = (binary_expression "uVar5 ^ uVar1" identifier ^ identifier)) ;) (expression_statement "iVar8 = iVar8 + 3;" (assignment_expression "iVar8 = iVar8 + 3" identifier = (binary_expression "iVar8 + 3" identifier + number_literal)) ;) (expression_statement "uVar1 = puVar3[2];" (assignment_expression "uVar1 = puVar3[2]" identifier = (subscript_expression "puVar3[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;" (assignment_expression "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6" identifier = (binary_expression "uVar5 ^ puVar3[7] ^ *puVar6" (binary_expression "uVar5 ^ puVar3[7]" identifier ^ (subscript_expression "puVar3[7]" identifier [ number_literal ])) ^ (pointer_expression "*puVar6" * identifier))) ;) (expression_statement "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;" (assignment_expression "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" identifier = (binary_expression "uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" (binary_expression "uVar4 ^ local_190 ^ puVar3[6]" (binary_expression "uVar4 ^ local_190" identifier ^ identifier) ^ (subscript_expression "puVar3[6]" identifier [ number_literal ])) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);" (assignment_expression "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0)" identifier = (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);" (assignment_expression "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0)" identifier = (binary_expression "uVar4 << 1 | (uint)((int)uVar4 < 0)" (binary_expression "uVar4 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar4 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar4 < 0)" ( (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar3[0xf] = uVar5;" (assignment_expression "puVar3[0xf] = uVar5" (subscript_expression "puVar3[0xf]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;" (assignment_expression "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" identifier = (binary_expression "puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" (binary_expression "puVar3[8] ^ uVar1 ^ uVar7" (binary_expression "puVar3[8] ^ uVar1" (subscript_expression "puVar3[8]" identifier [ number_literal ]) ^ identifier) ^ identifier) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "puVar3[0xe] = uVar4;" (assignment_expression "puVar3[0xe] = uVar4" (subscript_expression "puVar3[0xe]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);" (assignment_expression "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0)" identifier = (binary_expression "uVar7 << 1 | (uint)((int)uVar7 < 0)" (binary_expression "uVar7 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar7 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar7 < 0)" ( (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "puVar3[0x10] = uVar7;" (assignment_expression "puVar3[0x10] = uVar7" (subscript_expression "puVar3[0x10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3 = puVar3 + 3;" (assignment_expression "puVar3 = puVar3 + 3" identifier = (binary_expression "puVar3 + 3" identifier + number_literal)) ;) (expression_statement "local_190 = *puVar6;" (assignment_expression "local_190 = *puVar6" identifier = (pointer_expression "*puVar6" * identifier)) ;) }) while (parenthesized_expression "(iVar8 != 0x4f)" ( (binary_expression "iVar8 != 0x4f" identifier != number_literal) )) ;) (expression_statement "puVar3 = local_160;" (assignment_expression "puVar3 = local_160" identifier = identifier) ;) (expression_statement "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];" (assignment_expression "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" identifier = (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5]" (binary_expression "local_70[0x10] ^ local_70[0xb]" (subscript_expression "local_70[0x10]" identifier [ number_literal ]) ^ (subscript_expression "local_70[0xb]" identifier [ number_literal ])) ^ (subscript_expression "local_70[5]" identifier [ number_literal ])) ^ (subscript_expression "local_70[3]" identifier [ number_literal ]))) ;) (expression_statement "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);" (assignment_expression "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0)" (subscript_expression "local_70[0x13]" identifier [ number_literal ]) = (binary_expression "uVar1 << 1 | (uint)((int)uVar1 < 0)" (binary_expression "uVar1 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar1 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar1 < 0)" ( (binary_expression "(int)uVar1 < 0" (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) ))))) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar7 = param_1[3];" (assignment_expression "uVar7 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = param_1[4];" (assignment_expression "uVar9 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (do_statement "do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);" do (compound_statement "{\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  }" { (expression_statement "local_194 = uVar5;" (assignment_expression "local_194 = uVar5" identifier = identifier) ;) (expression_statement "local_18c = uVar7;" (assignment_expression "local_18c = uVar7" identifier = identifier) ;) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" identifier = identifier) ;) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;" (assignment_expression "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" identifier = (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c)" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999" (parenthesized_expression "(uVar2 << 5 | uVar2 >> 0x1b)" ( (binary_expression "uVar2 << 5 | uVar2 >> 0x1b" (binary_expression "uVar2 << 5" identifier << number_literal) | (binary_expression "uVar2 >> 0x1b" identifier >> number_literal)) )) + number_literal) + identifier) + (parenthesized_expression "((local_194 ^ local_18c) & uVar4 ^ local_18c)" ( (binary_expression "(local_194 ^ local_18c) & uVar4 ^ local_18c" (binary_expression "(local_194 ^ local_18c) & uVar4" (parenthesized_expression "(local_194 ^ local_18c)" ( (binary_expression "local_194 ^ local_18c" identifier ^ identifier) )) & identifier) ^ identifier) ))) + identifier)) ;) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" identifier = (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" identifier >> number_literal) | (binary_expression "uVar4 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar7 = local_194;" (assignment_expression "uVar7 = local_194" identifier = identifier) ;) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) (expression_statement "uVar9 = local_18c;" (assignment_expression "uVar9 = local_18c" identifier = identifier) ;) }) while (parenthesized_expression "(local_110 != puVar3)" ( (binary_expression "local_110 != puVar3" identifier != identifier) )) ;) (expression_statement "puVar3 = local_110;" (assignment_expression "puVar3 = local_110" identifier = identifier) ;) (do_statement "do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);" do (compound_statement "{\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  }" { (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (expression_statement "uVar9 = local_194;" (assignment_expression "uVar9 = local_194" identifier = identifier) ;) (expression_statement "uVar5 = uVar2 >> 2 | uVar2 << 0x1e;" (assignment_expression "uVar5 = uVar2 >> 2 | uVar2 << 0x1e" identifier = (binary_expression "uVar2 >> 2 | uVar2 << 0x1e" (binary_expression "uVar2 >> 2" identifier >> number_literal) | (binary_expression "uVar2 << 0x1e" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;" (assignment_expression "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" identifier = (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1" (parenthesized_expression "(uVar2 ^ uVar7 ^ uVar9)" ( (binary_expression "uVar2 ^ uVar7 ^ uVar9" (binary_expression "uVar2 ^ uVar7" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" ( (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" identifier << number_literal) | (binary_expression "uVar4 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*puVar3" * identifier)) + identifier)) ;) (expression_statement "uVar2 = uVar4;" (assignment_expression "uVar2 = uVar4" identifier = identifier) ;) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" identifier = identifier) ;) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (expression_statement "local_18c = uVar9;" (assignment_expression "local_18c = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(local_c0 != puVar6)" ( (binary_expression "local_c0 != puVar6" identifier != identifier) )) ;) (expression_statement "puVar3 = local_c0;" (assignment_expression "puVar3 = local_c0" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) (do_statement "do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);" do (compound_statement "{\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  }" { (expression_statement "local_18c = uVar1;" (assignment_expression "local_18c = uVar1" identifier = identifier) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" identifier = identifier) ;) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;" (assignment_expression "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" identifier = (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b)" (parenthesized_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9)" ( (binary_expression "(uVar7 | uVar9) & uVar4 | uVar7 & uVar9" (binary_expression "(uVar7 | uVar9) & uVar4" (parenthesized_expression "(uVar7 | uVar9)" ( (binary_expression "uVar7 | uVar9" identifier | identifier) )) & identifier) | (binary_expression "uVar7 & uVar9" identifier & identifier)) )) + (parenthesized_expression "(local_18c << 5 | local_18c >> 0x1b)" ( (binary_expression "local_18c << 5 | local_18c >> 0x1b" (binary_expression "local_18c << 5" identifier << number_literal) | (binary_expression "local_18c >> 0x1b" identifier >> number_literal)) ))) + number_literal) + identifier) + identifier)) ;) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" identifier = (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" identifier >> number_literal) | (binary_expression "uVar4 << 0x1e" identifier << number_literal))) ;) (expression_statement "uVar4 = local_18c;" (assignment_expression "uVar4 = local_18c" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar3 != local_70)" ( (binary_expression "puVar3 != local_70" identifier != identifier) )) ;) (expression_statement "puVar3 = local_70;" (assignment_expression "puVar3 = local_70" identifier = identifier) ;) (do_statement "do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);" do (compound_statement "{\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  }" { (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" identifier = identifier) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" identifier = identifier) ;) (expression_statement "uVar5 = local_18c >> 2 | local_18c << 0x1e;" (assignment_expression "uVar5 = local_18c >> 2 | local_18c << 0x1e" identifier = (binary_expression "local_18c >> 2 | local_18c << 0x1e" (binary_expression "local_18c >> 2" identifier >> number_literal) | (binary_expression "local_18c << 0x1e" identifier << number_literal))) ;) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;" (assignment_expression "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" identifier = (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6" (parenthesized_expression "(local_18c ^ uVar2 ^ uVar9)" ( (binary_expression "local_18c ^ uVar2 ^ uVar9" (binary_expression "local_18c ^ uVar2" identifier ^ identifier) ^ identifier) )) + number_literal) + (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" ( (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" identifier << number_literal) | (binary_expression "uVar4 >> 0x1b" identifier >> number_literal)) ))) + (pointer_expression "*puVar3" * identifier)) + identifier)) ;) (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" identifier = identifier) ;) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" identifier = identifier) ;) (expression_statement "local_18c = uVar4;" (assignment_expression "local_18c = uVar4" identifier = identifier) ;) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(puVar6 != local_20)" ( (binary_expression "puVar6 != local_20" identifier != identifier) )) ;) (expression_statement "param_1[1] = uVar4 + param_1[1];" (assignment_expression "param_1[1] = uVar4 + param_1[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + param_1[1]" identifier + (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "*param_1 = uVar1 + *param_1;" (assignment_expression "*param_1 = uVar1 + *param_1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar1 + *param_1" identifier + (pointer_expression "*param_1" * identifier))) ;) (expression_statement "param_1[4] = uVar9 + param_1[4];" (assignment_expression "param_1[4] = uVar9 + param_1[4]" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "uVar9 + param_1[4]" identifier + (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "param_1[2] = param_1[2] + uVar5;" (assignment_expression "param_1[2] = param_1[2] + uVar5" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (binary_expression "param_1[2] + uVar5" (subscript_expression "param_1[2]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "param_1[3] = param_1[3] + uVar2;" (assignment_expression "param_1[3] = param_1[3] + uVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (binary_expression "param_1[3] + uVar2" (subscript_expression "param_1[3]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }" if (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" * (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0004d450();\n  }" { (expression_statement "FUN_0004d450();" (call_expression "FUN_0004d450()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT ^ (subscript_expression IDENT [ LIT ])) ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT ^ IDENT) ^ (subscript_expression IDENT [ LIT ])) ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) ^ IDENT) ^ IDENT) ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) ^ (subscript_expression IDENT [ LIT ])) ^ (subscript_expression IDENT [ LIT ])) ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) )) + LIT) + IDENT) + (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ IDENT) )) & IDENT) ^ IDENT) ))) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT ^ IDENT) ^ IDENT) )) + LIT) + (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))) + (pointer_expression * IDENT)) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) & IDENT) | (binary_expression IDENT & IDENT)) )) + (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))) + LIT) + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT ^ IDENT) ^ IDENT) )) + LIT) + (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (binary_expression IDENT >> LIT)) ))) + (pointer_expression * IDENT)) + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00042590(uint *param_1,uint *param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00042590(uint *param_1,uint *param_2)" (identifier "FUN_00042590") (parameter_list "(uint *param_1,uint *param_2)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  uint uVar5;\n  uint *puVar6;\n  uint uVar7;\n  int iVar8;\n  uint uVar9;\n  int in_GS_OFFSET;\n  uint local_194;\n  uint local_190;\n  uint local_18c;\n  uint local_160 [20];\n  uint local_110 [20];\n  uint local_c0 [20];\n  uint local_70 [20];\n  uint local_20 [4];\n  \n  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);\n  uVar1 = param_2[1];\n  local_160[2] = param_2[2];\n  local_160[0] = *param_2;\n  local_160[3] = param_2[3];\n  local_160[1] = uVar1;\n  local_160[4] = param_2[4];\n  local_160[5] = param_2[5];\n  local_160[6] = param_2[6];\n  local_160[7] = param_2[7];\n  local_160[8] = param_2[8];\n  local_160[9] = param_2[9];\n  local_160[10] = param_2[10];\n  local_160[0xb] = param_2[0xb];\n  uVar5 = param_2[0xe];\n  uVar7 = param_2[0xf];\n  local_160[0xc] = param_2[0xc];\n  uVar4 = param_2[0xd];\n  local_160[0xe] = uVar5;\n  local_160[0xd] = uVar4;\n  local_160[0xf] = uVar7;\n  iVar8 = 0x10;\n  puVar3 = local_160 + 2;\n  local_190 = *param_2;\n  do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);\n  puVar3 = local_160;\n  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];\n  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);\n  uVar1 = *param_1;\n  uVar7 = param_1[3];\n  uVar4 = param_1[1];\n  uVar9 = param_1[4];\n  uVar5 = param_1[2];\n  do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);\n  puVar3 = local_110;\n  do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);\n  puVar3 = local_c0;\n  local_194 = uVar9;\n  do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);\n  puVar3 = local_70;\n  do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);\n  param_1[1] = uVar4 + param_1[1];\n  *param_1 = uVar1 + *param_1;\n  param_1[4] = uVar9 + param_1[4];\n  param_1[2] = param_1[2] + uVar5;\n  param_1[3] = param_1[3] + uVar2;\n  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint *puVar6;" (type_identifier "uint") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_194;" (type_identifier "uint") (identifier "local_194") (; ";")) (declaration "uint local_190;" (type_identifier "uint") (identifier "local_190") (; ";")) (declaration "uint local_18c;" (type_identifier "uint") (identifier "local_18c") (; ";")) (declaration "uint local_160 [20];" (type_identifier "uint") (array_declarator "local_160 [20]" (identifier "local_160") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "uint local_110 [20];" (type_identifier "uint") (array_declarator "local_110 [20]" (identifier "local_110") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "uint local_c0 [20];" (type_identifier "uint") (array_declarator "local_c0 [20]" (identifier "local_c0") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "uint local_70 [20];" (type_identifier "uint") (array_declarator "local_70 [20]" (identifier "local_70") ([ "[") (number_literal "20") (] "]")) (; ";")) (declaration "uint local_20 [4];" (type_identifier "uint") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20[0] = *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar1 = param_2[1];" (assignment_expression "uVar1 = param_2[1]" (identifier "uVar1") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_160[2] = param_2[2];" (assignment_expression "local_160[2] = param_2[2]" (subscript_expression "local_160[2]" (identifier "local_160") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_160[0] = *param_2;" (assignment_expression "local_160[0] = *param_2" (subscript_expression "local_160[0]" (identifier "local_160") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_160[3] = param_2[3];" (assignment_expression "local_160[3] = param_2[3]" (subscript_expression "local_160[3]" (identifier "local_160") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_160[1] = uVar1;" (assignment_expression "local_160[1] = uVar1" (subscript_expression "local_160[1]" (identifier "local_160") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "local_160[4] = param_2[4];" (assignment_expression "local_160[4] = param_2[4]" (subscript_expression "local_160[4]" (identifier "local_160") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "local_160[5] = param_2[5];" (assignment_expression "local_160[5] = param_2[5]" (subscript_expression "local_160[5]" (identifier "local_160") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_160[6] = param_2[6];" (assignment_expression "local_160[6] = param_2[6]" (subscript_expression "local_160[6]" (identifier "local_160") ([ "[") (number_literal "6") (] "]")) (= "=") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_160[7] = param_2[7];" (assignment_expression "local_160[7] = param_2[7]" (subscript_expression "local_160[7]" (identifier "local_160") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_160[8] = param_2[8];" (assignment_expression "local_160[8] = param_2[8]" (subscript_expression "local_160[8]" (identifier "local_160") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_160[9] = param_2[9];" (assignment_expression "local_160[9] = param_2[9]" (subscript_expression "local_160[9]" (identifier "local_160") ([ "[") (number_literal "9") (] "]")) (= "=") (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_160[10] = param_2[10];" (assignment_expression "local_160[10] = param_2[10]" (subscript_expression "local_160[10]" (identifier "local_160") ([ "[") (number_literal "10") (] "]")) (= "=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "local_160[0xb] = param_2[0xb];" (assignment_expression "local_160[0xb] = param_2[0xb]" (subscript_expression "local_160[0xb]" (identifier "local_160") ([ "[") (number_literal "0xb") (] "]")) (= "=") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "uVar5 = param_2[0xe];" (assignment_expression "uVar5 = param_2[0xe]" (identifier "uVar5") (= "=") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "uVar7 = param_2[0xf];" (assignment_expression "uVar7 = param_2[0xf]" (identifier "uVar7") (= "=") (subscript_expression "param_2[0xf]" (identifier "param_2") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "local_160[0xc] = param_2[0xc];" (assignment_expression "local_160[0xc] = param_2[0xc]" (subscript_expression "local_160[0xc]" (identifier "local_160") ([ "[") (number_literal "0xc") (] "]")) (= "=") (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "uVar4 = param_2[0xd];" (assignment_expression "uVar4 = param_2[0xd]" (identifier "uVar4") (= "=") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "local_160[0xe] = uVar5;" (assignment_expression "local_160[0xe] = uVar5" (subscript_expression "local_160[0xe]" (identifier "local_160") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "local_160[0xd] = uVar4;" (assignment_expression "local_160[0xd] = uVar4" (subscript_expression "local_160[0xd]" (identifier "local_160") ([ "[") (number_literal "0xd") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "local_160[0xf] = uVar7;" (assignment_expression "local_160[0xf] = uVar7" (subscript_expression "local_160[0xf]" (identifier "local_160") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar8 = 0x10;" (assignment_expression "iVar8 = 0x10" (identifier "iVar8") (= "=") (number_literal "0x10")) (; ";")) (expression_statement "puVar3 = local_160 + 2;" (assignment_expression "puVar3 = local_160 + 2" (identifier "puVar3") (= "=") (binary_expression "local_160 + 2" (identifier "local_160") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_190 = *param_2;" (assignment_expression "local_190 = *param_2" (identifier "local_190") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (do_statement "do {\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  } while (iVar8 != 0x4f);" (do "do") (compound_statement "{\n    puVar6 = puVar3 + 1;\n    uVar5 = uVar5 ^ uVar1;\n    iVar8 = iVar8 + 3;\n    uVar1 = puVar3[2];\n    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;\n    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;\n    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);\n    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);\n    puVar3[0xf] = uVar5;\n    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;\n    puVar3[0xe] = uVar4;\n    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);\n    puVar3[0x10] = uVar7;\n    puVar3 = puVar3 + 3;\n    local_190 = *puVar6;\n  }" ({ "{") (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = uVar5 ^ uVar1;" (assignment_expression "uVar5 = uVar5 ^ uVar1" (identifier "uVar5") (= "=") (binary_expression "uVar5 ^ uVar1" (identifier "uVar5") (^ "^") (identifier "uVar1"))) (; ";")) (expression_statement "iVar8 = iVar8 + 3;" (assignment_expression "iVar8 = iVar8 + 3" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 3" (identifier "iVar8") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar1 = puVar3[2];" (assignment_expression "uVar1 = puVar3[2]" (identifier "uVar1") (= "=") (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;" (assignment_expression "uVar5 = uVar5 ^ puVar3[7] ^ *puVar6" (identifier "uVar5") (= "=") (binary_expression "uVar5 ^ puVar3[7] ^ *puVar6" (binary_expression "uVar5 ^ puVar3[7]" (identifier "uVar5") (^ "^") (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]"))) (^ "^") (pointer_expression "*puVar6" (* "*") (identifier "puVar6")))) (; ";")) (expression_statement "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;" (assignment_expression "uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" (identifier "uVar4") (= "=") (binary_expression "uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3" (binary_expression "uVar4 ^ local_190 ^ puVar3[6]" (binary_expression "uVar4 ^ local_190" (identifier "uVar4") (^ "^") (identifier "local_190")) (^ "^") (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]"))) (^ "^") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (expression_statement "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);" (assignment_expression "uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0)" (identifier "uVar5") (= "=") (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" (identifier "uVar5") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);" (assignment_expression "uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0)" (identifier "uVar4") (= "=") (binary_expression "uVar4 << 1 | (uint)((int)uVar4 < 0)" (binary_expression "uVar4 << 1" (identifier "uVar4") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar4 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar4 < 0)" (( "(") (binary_expression "(int)uVar4 < 0" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (< "<") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "puVar3[0xf] = uVar5;" (assignment_expression "puVar3[0xf] = uVar5" (subscript_expression "puVar3[0xf]" (identifier "puVar3") ([ "[") (number_literal "0xf") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;" (assignment_expression "uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" (identifier "uVar7") (= "=") (binary_expression "puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3" (binary_expression "puVar3[8] ^ uVar1 ^ uVar7" (binary_expression "puVar3[8] ^ uVar1" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (^ "^") (identifier "uVar1")) (^ "^") (identifier "uVar7")) (^ "^") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (expression_statement "puVar3[0xe] = uVar4;" (assignment_expression "puVar3[0xe] = uVar4" (subscript_expression "puVar3[0xe]" (identifier "puVar3") ([ "[") (number_literal "0xe") (] "]")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);" (assignment_expression "uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0)" (identifier "uVar7") (= "=") (binary_expression "uVar7 << 1 | (uint)((int)uVar7 < 0)" (binary_expression "uVar7 << 1" (identifier "uVar7") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar7 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar7 < 0)" (( "(") (binary_expression "(int)uVar7 < 0" (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (< "<") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "puVar3[0x10] = uVar7;" (assignment_expression "puVar3[0x10] = uVar7" (subscript_expression "puVar3[0x10]" (identifier "puVar3") ([ "[") (number_literal "0x10") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar3 = puVar3 + 3;" (assignment_expression "puVar3 = puVar3 + 3" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 3" (identifier "puVar3") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "local_190 = *puVar6;" (assignment_expression "local_190 = *puVar6" (identifier "local_190") (= "=") (pointer_expression "*puVar6" (* "*") (identifier "puVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != 0x4f)" (( "(") (binary_expression "iVar8 != 0x4f" (identifier "iVar8") (!= "!=") (number_literal "0x4f")) () ")")) (; ";")) (expression_statement "puVar3 = local_160;" (assignment_expression "puVar3 = local_160" (identifier "puVar3") (= "=") (identifier "local_160")) (; ";")) (expression_statement "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];" (assignment_expression "uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" (identifier "uVar1") (= "=") (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3]" (binary_expression "local_70[0x10] ^ local_70[0xb] ^ local_70[5]" (binary_expression "local_70[0x10] ^ local_70[0xb]" (subscript_expression "local_70[0x10]" (identifier "local_70") ([ "[") (number_literal "0x10") (] "]")) (^ "^") (subscript_expression "local_70[0xb]" (identifier "local_70") ([ "[") (number_literal "0xb") (] "]"))) (^ "^") (subscript_expression "local_70[5]" (identifier "local_70") ([ "[") (number_literal "5") (] "]"))) (^ "^") (subscript_expression "local_70[3]" (identifier "local_70") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);" (assignment_expression "local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0)" (subscript_expression "local_70[0x13]" (identifier "local_70") ([ "[") (number_literal "0x13") (] "]")) (= "=") (binary_expression "uVar1 << 1 | (uint)((int)uVar1 < 0)" (binary_expression "uVar1 << 1" (identifier "uVar1") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar1 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar1 < 0)" (( "(") (binary_expression "(int)uVar1 < 0" (cast_expression "(int)uVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar1")) (< "<") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar7 = param_1[3];" (assignment_expression "uVar7 = param_1[3]" (identifier "uVar7") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "uVar4 = param_1[1];" (assignment_expression "uVar4 = param_1[1]" (identifier "uVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar9 = param_1[4];" (assignment_expression "uVar9 = param_1[4]" (identifier "uVar9") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (do_statement "do {\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  } while (local_110 != puVar3);" (do "do") (compound_statement "{\n    local_194 = uVar5;\n    local_18c = uVar7;\n    uVar2 = uVar1;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar7 = local_194;\n    uVar4 = uVar2;\n    uVar9 = local_18c;\n  }" ({ "{") (expression_statement "local_194 = uVar5;" (assignment_expression "local_194 = uVar5" (identifier "local_194") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "local_18c = uVar7;" (assignment_expression "local_18c = uVar7" (identifier "local_18c") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar2 = uVar1;" (assignment_expression "uVar2 = uVar1" (identifier "uVar2") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" (identifier "uVar1") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;" (assignment_expression "uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" (identifier "uVar1") (= "=") (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +\n            ((local_194 ^ local_18c) & uVar4 ^ local_18c)" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1" (binary_expression "(uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999" (parenthesized_expression "(uVar2 << 5 | uVar2 >> 0x1b)" (( "(") (binary_expression "uVar2 << 5 | uVar2 >> 0x1b" (binary_expression "uVar2 << 5" (identifier "uVar2") (<< "<<") (number_literal "5")) (| "|") (binary_expression "uVar2 >> 0x1b" (identifier "uVar2") (>> ">>") (number_literal "0x1b"))) () ")")) (+ "+") (number_literal "0x5a827999")) (+ "+") (identifier "uVar1")) (+ "+") (parenthesized_expression "((local_194 ^ local_18c) & uVar4 ^ local_18c)" (( "(") (binary_expression "(local_194 ^ local_18c) & uVar4 ^ local_18c" (binary_expression "(local_194 ^ local_18c) & uVar4" (parenthesized_expression "(local_194 ^ local_18c)" (( "(") (binary_expression "local_194 ^ local_18c" (identifier "local_194") (^ "^") (identifier "local_18c")) () ")")) (& "&") (identifier "uVar4")) (^ "^") (identifier "local_18c")) () ")"))) (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" (identifier "uVar5") (= "=") (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" (identifier "uVar4") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar4 << 0x1e" (identifier "uVar4") (<< "<<") (number_literal "0x1e")))) (; ";")) (expression_statement "uVar7 = local_194;" (assignment_expression "uVar7 = local_194" (identifier "uVar7") (= "=") (identifier "local_194")) (; ";")) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" (identifier "uVar4") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar9 = local_18c;" (assignment_expression "uVar9 = local_18c" (identifier "uVar9") (= "=") (identifier "local_18c")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_110 != puVar3)" (( "(") (binary_expression "local_110 != puVar3" (identifier "local_110") (!= "!=") (identifier "puVar3")) () ")")) (; ";")) (expression_statement "puVar3 = local_110;" (assignment_expression "puVar3 = local_110" (identifier "puVar3") (= "=") (identifier "local_110")) (; ";")) (do_statement "do {\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  } while (local_c0 != puVar6);" (do "do") (compound_statement "{\n    uVar7 = uVar5;\n    uVar4 = uVar1;\n    uVar9 = local_194;\n    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;\n    uVar2 = uVar4;\n    local_194 = uVar7;\n    puVar3 = puVar6;\n    local_18c = uVar9;\n  }" ({ "{") (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" (identifier "uVar4") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar9 = local_194;" (assignment_expression "uVar9 = local_194" (identifier "uVar9") (= "=") (identifier "local_194")) (; ";")) (expression_statement "uVar5 = uVar2 >> 2 | uVar2 << 0x1e;" (assignment_expression "uVar5 = uVar2 >> 2 | uVar2 << 0x1e" (identifier "uVar5") (= "=") (binary_expression "uVar2 >> 2 | uVar2 << 0x1e" (binary_expression "uVar2 >> 2" (identifier "uVar2") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar2 << 0x1e" (identifier "uVar2") (<< "<<") (number_literal "0x1e")))) (; ";")) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c;" (assignment_expression "uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" (identifier "uVar1") (= "=") (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_18c" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1" (parenthesized_expression "(uVar2 ^ uVar7 ^ uVar9)" (( "(") (binary_expression "uVar2 ^ uVar7 ^ uVar9" (binary_expression "uVar2 ^ uVar7" (identifier "uVar2") (^ "^") (identifier "uVar7")) (^ "^") (identifier "uVar9")) () ")")) (+ "+") (number_literal "0x6ed9eba1")) (+ "+") (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" (( "(") (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" (identifier "uVar4") (<< "<<") (number_literal "5")) (| "|") (binary_expression "uVar4 >> 0x1b" (identifier "uVar4") (>> ">>") (number_literal "0x1b"))) () ")"))) (+ "+") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (+ "+") (identifier "local_18c"))) (; ";")) (expression_statement "uVar2 = uVar4;" (assignment_expression "uVar2 = uVar4" (identifier "uVar2") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "local_194 = uVar7;" (assignment_expression "local_194 = uVar7" (identifier "local_194") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" (identifier "puVar3") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "local_18c = uVar9;" (assignment_expression "local_18c = uVar9" (identifier "local_18c") (= "=") (identifier "uVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_c0 != puVar6)" (( "(") (binary_expression "local_c0 != puVar6" (identifier "local_c0") (!= "!=") (identifier "puVar6")) () ")")) (; ";")) (expression_statement "puVar3 = local_c0;" (assignment_expression "puVar3 = local_c0" (identifier "puVar3") (= "=") (identifier "local_c0")) (; ";")) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" (identifier "local_194") (= "=") (identifier "uVar9")) (; ";")) (do_statement "do {\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  } while (puVar3 != local_70);" (do "do") (compound_statement "{\n    local_18c = uVar1;\n    uVar9 = uVar7;\n    uVar7 = uVar5;\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;\n    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;\n    uVar4 = local_18c;\n    local_194 = uVar9;\n  }" ({ "{") (expression_statement "local_18c = uVar1;" (assignment_expression "local_18c = uVar1" (identifier "local_18c") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" (identifier "uVar9") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar7 = uVar5;" (assignment_expression "uVar7 = uVar5" (identifier "uVar7") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" (identifier "uVar1") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;" (assignment_expression "uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" (identifier "uVar1") (= "=") (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc" (binary_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +\n            (local_18c << 5 | local_18c >> 0x1b)" (parenthesized_expression "((uVar7 | uVar9) & uVar4 | uVar7 & uVar9)" (( "(") (binary_expression "(uVar7 | uVar9) & uVar4 | uVar7 & uVar9" (binary_expression "(uVar7 | uVar9) & uVar4" (parenthesized_expression "(uVar7 | uVar9)" (( "(") (binary_expression "uVar7 | uVar9" (identifier "uVar7") (| "|") (identifier "uVar9")) () ")")) (& "&") (identifier "uVar4")) (| "|") (binary_expression "uVar7 & uVar9" (identifier "uVar7") (& "&") (identifier "uVar9"))) () ")")) (+ "+") (parenthesized_expression "(local_18c << 5 | local_18c >> 0x1b)" (( "(") (binary_expression "local_18c << 5 | local_18c >> 0x1b" (binary_expression "local_18c << 5" (identifier "local_18c") (<< "<<") (number_literal "5")) (| "|") (binary_expression "local_18c >> 0x1b" (identifier "local_18c") (>> ">>") (number_literal "0x1b"))) () ")"))) (+ "+") (number_literal "0x8f1bbcdc")) (+ "+") (identifier "uVar1")) (+ "+") (identifier "local_194"))) (; ";")) (expression_statement "uVar5 = uVar4 >> 2 | uVar4 << 0x1e;" (assignment_expression "uVar5 = uVar4 >> 2 | uVar4 << 0x1e" (identifier "uVar5") (= "=") (binary_expression "uVar4 >> 2 | uVar4 << 0x1e" (binary_expression "uVar4 >> 2" (identifier "uVar4") (>> ">>") (number_literal "2")) (| "|") (binary_expression "uVar4 << 0x1e" (identifier "uVar4") (<< "<<") (number_literal "0x1e")))) (; ";")) (expression_statement "uVar4 = local_18c;" (assignment_expression "uVar4 = local_18c" (identifier "uVar4") (= "=") (identifier "local_18c")) (; ";")) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" (identifier "local_194") (= "=") (identifier "uVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar3 != local_70)" (( "(") (binary_expression "puVar3 != local_70" (identifier "puVar3") (!= "!=") (identifier "local_70")) () ")")) (; ";")) (expression_statement "puVar3 = local_70;" (assignment_expression "puVar3 = local_70" (identifier "puVar3") (= "=") (identifier "local_70")) (; ";")) (do_statement "do {\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  } while (puVar6 != local_20);" (do "do") (compound_statement "{\n    uVar2 = uVar5;\n    uVar9 = uVar7;\n    uVar4 = uVar1;\n    uVar5 = local_18c >> 2 | local_18c << 0x1e;\n    puVar6 = puVar3 + 1;\n    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;\n    uVar7 = uVar2;\n    puVar3 = puVar6;\n    local_18c = uVar4;\n    local_194 = uVar9;\n  }" ({ "{") (expression_statement "uVar2 = uVar5;" (assignment_expression "uVar2 = uVar5" (identifier "uVar2") (= "=") (identifier "uVar5")) (; ";")) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" (identifier "uVar9") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "uVar4 = uVar1;" (assignment_expression "uVar4 = uVar1" (identifier "uVar4") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "uVar5 = local_18c >> 2 | local_18c << 0x1e;" (assignment_expression "uVar5 = local_18c >> 2 | local_18c << 0x1e" (identifier "uVar5") (= "=") (binary_expression "local_18c >> 2 | local_18c << 0x1e" (binary_expression "local_18c >> 2" (identifier "local_18c") (>> ">>") (number_literal "2")) (| "|") (binary_expression "local_18c << 0x1e" (identifier "local_18c") (<< "<<") (number_literal "0x1e")))) (; ";")) (expression_statement "puVar6 = puVar3 + 1;" (assignment_expression "puVar6 = puVar3 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194;" (assignment_expression "uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" (identifier "uVar1") (= "=") (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +\n            local_194" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b)" (binary_expression "(local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6" (parenthesized_expression "(local_18c ^ uVar2 ^ uVar9)" (( "(") (binary_expression "local_18c ^ uVar2 ^ uVar9" (binary_expression "local_18c ^ uVar2" (identifier "local_18c") (^ "^") (identifier "uVar2")) (^ "^") (identifier "uVar9")) () ")")) (+ "+") (number_literal "0xca62c1d6")) (+ "+") (parenthesized_expression "(uVar4 << 5 | uVar4 >> 0x1b)" (( "(") (binary_expression "uVar4 << 5 | uVar4 >> 0x1b" (binary_expression "uVar4 << 5" (identifier "uVar4") (<< "<<") (number_literal "5")) (| "|") (binary_expression "uVar4 >> 0x1b" (identifier "uVar4") (>> ">>") (number_literal "0x1b"))) () ")"))) (+ "+") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (+ "+") (identifier "local_194"))) (; ";")) (expression_statement "uVar7 = uVar2;" (assignment_expression "uVar7 = uVar2" (identifier "uVar7") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar3 = puVar6;" (assignment_expression "puVar3 = puVar6" (identifier "puVar3") (= "=") (identifier "puVar6")) (; ";")) (expression_statement "local_18c = uVar4;" (assignment_expression "local_18c = uVar4" (identifier "local_18c") (= "=") (identifier "uVar4")) (; ";")) (expression_statement "local_194 = uVar9;" (assignment_expression "local_194 = uVar9" (identifier "local_194") (= "=") (identifier "uVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar6 != local_20)" (( "(") (binary_expression "puVar6 != local_20" (identifier "puVar6") (!= "!=") (identifier "local_20")) () ")")) (; ";")) (expression_statement "param_1[1] = uVar4 + param_1[1];" (assignment_expression "param_1[1] = uVar4 + param_1[1]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar4 + param_1[1]" (identifier "uVar4") (+ "+") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*param_1 = uVar1 + *param_1;" (assignment_expression "*param_1 = uVar1 + *param_1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar1 + *param_1" (identifier "uVar1") (+ "+") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "param_1[4] = uVar9 + param_1[4];" (assignment_expression "param_1[4] = uVar9 + param_1[4]" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "uVar9 + param_1[4]" (identifier "uVar9") (+ "+") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "param_1[2] = param_1[2] + uVar5;" (assignment_expression "param_1[2] = param_1[2] + uVar5" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_1[2] + uVar5" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "uVar5"))) (; ";")) (expression_statement "param_1[3] = param_1[3] + uVar2;" (assignment_expression "param_1[3] = param_1[3] + uVar2" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "param_1[3] + uVar2" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (+ "+") (identifier "uVar2"))) (; ";")) (if_statement "if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0004d450();\n  }" (if "if") (parenthesized_expression "(local_20[0] != *(uint *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (!= "!=") (pointer_expression "*(uint *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(uint *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0004d450();\n  }" ({ "{") (expression_statement "FUN_0004d450();" (call_expression "FUN_0004d450()" (identifier "FUN_0004d450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

void function_1(type_1 *digest,type_1 *block)

{
  type_2 *puVar1;
  type_1 var_12;
  type_2 var_5;
  type_2 var_11;
  type_2 *var_3;
  type_1 *var_10;
  type_2 var_7;
  type_2 var_4;
  type_1 *var_16;
  type_2 var_9;
  int var_6;
  type_2 var_15;
  int var_1;
  type_2 var_13;
  type_2 var_8;
  type_2 var_14;
  type_1 var_2 [80];
  type_1 var_17 [4];
  
  var_17[0] = *(type_1 *)(var_1 + 0x14);
  var_5 = block[1];
  var_2[2] = block[2];
  var_2[0] = *block;
  var_2[3] = block[3];
  var_2[1] = var_5;
  var_2[4] = block[4];
  var_2[5] = block[5];
  var_2[6] = block[6];
  var_2[7] = block[7];
  var_2[8] = block[8];
  var_2[9] = block[9];
  var_2[10] = block[10];
  var_2[0xb] = block[0xb];
  var_4 = block[0xe];
  var_9 = block[0xf];
  var_2[0xc] = block[0xc];
  var_7 = block[0xd];
  var_2[0xe] = var_4;
  var_2[0xd] = var_7;
  var_2[0xf] = var_9;
  var_6 = 0x10;
  var_3 = var_2 + 2;
  var_8 = *block;
  do {
    puVar1 = var_3 + 1;
    var_4 = var_4 ^ var_5;
    var_6 = var_6 + 3;
    var_5 = var_3[2];
    var_4 = var_4 ^ var_3[7] ^ *puVar1;
    var_7 = var_7 ^ var_8 ^ var_3[6] ^ *var_3;
    var_4 = var_4 << 1 | (type_2)((int)var_4 < 0);
    var_7 = var_7 << 1 | (type_2)((int)var_7 < 0);
    var_3[0xf] = var_4;
    var_9 = var_3[8] ^ var_5 ^ var_9 ^ *var_3;
    var_3[0xe] = var_7;
    var_9 = var_9 << 1 | (type_2)((int)var_9 < 0);
    var_3[0x10] = var_9;
    var_3 = var_3 + 3;
    var_8 = *puVar1;
  } while (var_6 != 0x4f);
  var_10 = var_2;
  var_5 = var_2[0x4c] ^ var_2[0x47] ^ var_2[0x41] ^ var_2[0x3f];
  var_2[0x4f] = var_5 << 1 | (type_2)((int)var_5 < 0);
  var_5 = *digest;
  var_9 = digest[3];
  var_7 = digest[1];
  var_15 = digest[4];
  var_4 = digest[2];
  do {
    var_13 = var_4;
    var_14 = var_9;
    var_11 = var_5;
    var_12 = *var_10;
    var_10 = var_10 + 1;
    var_5 = (var_11 << 5 | var_11 >> 0x1b) + 0x5a827999 + var_12 +
            ((var_13 ^ var_14) & var_7 ^ var_14) + var_15;
    var_4 = var_7 >> 2 | var_7 << 0x1e;
    var_9 = var_13;
    var_7 = var_11;
    var_15 = var_14;
  } while (var_2 + 0x14 != var_10);
  var_10 = var_2 + 0x14;
  do {
    var_9 = var_4;
    var_7 = var_5;
    var_15 = var_13;
    var_4 = var_11 >> 2 | var_11 << 0x1e;
    var_16 = var_10 + 1;
    var_5 = (var_11 ^ var_9 ^ var_15) + 0x6ed9eba1 + (var_7 << 5 | var_7 >> 0x1b) + *var_10 +
            var_14;
    var_11 = var_7;
    var_13 = var_9;
    var_10 = var_16;
    var_14 = var_15;
  } while (var_2 + 0x28 != var_16);
  var_10 = var_2 + 0x28;
  var_13 = var_15;
  do {
    var_14 = var_5;
    var_15 = var_9;
    var_9 = var_4;
    var_12 = *var_10;
    var_10 = var_10 + 1;
    var_5 = ((var_9 | var_15) & var_7 | var_9 & var_15) +
            (var_14 << 5 | var_14 >> 0x1b) + 0x8f1bbcdc + var_12 + var_13;
    var_4 = var_7 >> 2 | var_7 << 0x1e;
    var_7 = var_14;
    var_13 = var_15;
  } while (var_10 != var_2 + 0x3c);
  var_10 = var_2 + 0x3c;
  do {
    var_11 = var_4;
    var_15 = var_9;
    var_7 = var_5;
    var_4 = var_14 >> 2 | var_14 << 0x1e;
    var_16 = var_10 + 1;
    var_5 = (var_14 ^ var_11 ^ var_15) + 0xca62c1d6 + (var_7 << 5 | var_7 >> 0x1b) + *var_10 +
            var_13;
    var_9 = var_11;
    var_10 = var_16;
    var_14 = var_7;
    var_13 = var_15;
  } while (var_16 != var_17);
  digest[1] = var_7 + digest[1];
  *digest = var_5 + *digest;
  digest[4] = var_15 + digest[4];
  digest[2] = digest[2] + var_4;
  digest[3] = digest[3] + var_11;
  if (var_17[0] != *(type_1 *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_18();
  }
  return;
}


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

void MASKED(uint *param_1,uint *param_2)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  uint uVar5;
  uint *puVar6;
  uint uVar7;
  int iVar8;
  uint uVar9;
  int in_GS_OFFSET;
  uint local_194;
  uint local_190;
  uint local_18c;
  uint local_160 [20];
  uint local_110 [20];
  uint local_c0 [20];
  uint local_70 [20];
  uint local_20 [4];
  
  local_20[0] = *(uint *)(in_GS_OFFSET + 0x14);
  uVar1 = param_2[1];
  local_160[2] = param_2[2];
  local_160[0] = *param_2;
  local_160[3] = param_2[3];
  local_160[1] = uVar1;
  local_160[4] = param_2[4];
  local_160[5] = param_2[5];
  local_160[6] = param_2[6];
  local_160[7] = param_2[7];
  local_160[8] = param_2[8];
  local_160[9] = param_2[9];
  local_160[10] = param_2[10];
  local_160[0xb] = param_2[0xb];
  uVar5 = param_2[0xe];
  uVar7 = param_2[0xf];
  local_160[0xc] = param_2[0xc];
  uVar4 = param_2[0xd];
  local_160[0xe] = uVar5;
  local_160[0xd] = uVar4;
  local_160[0xf] = uVar7;
  iVar8 = 0x10;
  puVar3 = local_160 + 2;
  local_190 = *param_2;
  do {
    puVar6 = puVar3 + 1;
    uVar5 = uVar5 ^ uVar1;
    iVar8 = iVar8 + 3;
    uVar1 = puVar3[2];
    uVar5 = uVar5 ^ puVar3[7] ^ *puVar6;
    uVar4 = uVar4 ^ local_190 ^ puVar3[6] ^ *puVar3;
    uVar5 = uVar5 << 1 | (uint)((int)uVar5 < 0);
    uVar4 = uVar4 << 1 | (uint)((int)uVar4 < 0);
    puVar3[0xf] = uVar5;
    uVar7 = puVar3[8] ^ uVar1 ^ uVar7 ^ *puVar3;
    puVar3[0xe] = uVar4;
    uVar7 = uVar7 << 1 | (uint)((int)uVar7 < 0);
    puVar3[0x10] = uVar7;
    puVar3 = puVar3 + 3;
    local_190 = *puVar6;
  } while (iVar8 != 0x4f);
  puVar3 = local_160;
  uVar1 = local_70[0x10] ^ local_70[0xb] ^ local_70[5] ^ local_70[3];
  local_70[0x13] = uVar1 << 1 | (uint)((int)uVar1 < 0);
  uVar1 = *param_1;
  uVar7 = param_1[3];
  uVar4 = param_1[1];
  uVar9 = param_1[4];
  uVar5 = param_1[2];
  do {
    local_194 = uVar5;
    local_18c = uVar7;
    uVar2 = uVar1;
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar1 = (uVar2 << 5 | uVar2 >> 0x1b) + 0x5a827999 + uVar1 +
            ((local_194 ^ local_18c) & uVar4 ^ local_18c) + uVar9;
    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;
    uVar7 = local_194;
    uVar4 = uVar2;
    uVar9 = local_18c;
  } while (local_110 != puVar3);
  puVar3 = local_110;
  do {
    uVar7 = uVar5;
    uVar4 = uVar1;
    uVar9 = local_194;
    uVar5 = uVar2 >> 2 | uVar2 << 0x1e;
    puVar6 = puVar3 + 1;
    uVar1 = (uVar2 ^ uVar7 ^ uVar9) + 0x6ed9eba1 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +
            local_18c;
    uVar2 = uVar4;
    local_194 = uVar7;
    puVar3 = puVar6;
    local_18c = uVar9;
  } while (local_c0 != puVar6);
  puVar3 = local_c0;
  local_194 = uVar9;
  do {
    local_18c = uVar1;
    uVar9 = uVar7;
    uVar7 = uVar5;
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar1 = ((uVar7 | uVar9) & uVar4 | uVar7 & uVar9) +
            (local_18c << 5 | local_18c >> 0x1b) + 0x8f1bbcdc + uVar1 + local_194;
    uVar5 = uVar4 >> 2 | uVar4 << 0x1e;
    uVar4 = local_18c;
    local_194 = uVar9;
  } while (puVar3 != local_70);
  puVar3 = local_70;
  do {
    uVar2 = uVar5;
    uVar9 = uVar7;
    uVar4 = uVar1;
    uVar5 = local_18c >> 2 | local_18c << 0x1e;
    puVar6 = puVar3 + 1;
    uVar1 = (local_18c ^ uVar2 ^ uVar9) + 0xca62c1d6 + (uVar4 << 5 | uVar4 >> 0x1b) + *puVar3 +
            local_194;
    uVar7 = uVar2;
    puVar3 = puVar6;
    local_18c = uVar4;
    local_194 = uVar9;
  } while (puVar6 != local_20);
  param_1[1] = uVar4 + param_1[1];
  *param_1 = uVar1 + *param_1;
  param_1[4] = uVar9 + param_1[4];
  param_1[2] = param_1[2] + uVar5;
  param_1[3] = param_1[3] + uVar2;
  if (local_20[0] != *(uint *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0004d450();
  }
  return;
}

