
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void random_stir(void)

{
  int iVar1;
  word32 *pwVar2;
  int iVar3;
  RandPool *pRVar4;
  RandPool *pRVar5;
  int in_GS_OFFSET;
  bool bVar6;
  int local_c4;
  word32 digest [5];
  word32 block [16];
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  pool.stir_pending = 1;
  noise_get_light(random_add_noise);
  SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb);
  pool.incomingpos = 0;
  digest[0]._0_1_ = pool.incoming[0];
  digest[0]._1_1_ = pool.incoming[1];
  digest[0]._2_1_ = pool.incoming[2];
  digest[0]._3_1_ = pool.incoming[3];
  digest[1]._0_1_ = pool.incoming[4];
  digest[1]._1_1_ = pool.incoming[5];
  digest[1]._2_1_ = pool.incoming[6];
  digest[1]._3_1_ = pool.incoming[7];
  digest[2]._0_1_ = pool.incoming[8];
  digest[2]._1_1_ = pool.incoming[9];
  digest[2]._2_1_ = pool.incoming[10];
  digest[2]._3_1_ = pool.incoming[0xb];
  digest[3]._0_1_ = pool.incoming[0xc];
  digest[3]._1_1_ = pool.incoming[0xd];
  digest[3]._2_1_ = pool.incoming[0xe];
  digest[3]._3_1_ = pool.incoming[0xf];
  digest[4]._0_1_ = pool.incoming[0x10];
  digest[4]._1_1_ = pool.incoming[0x11];
  digest[4]._2_1_ = pool.incoming[0x12];
  digest[4]._3_1_ = pool.incoming[0x13];
  local_c4 = 2;
  while( true ) {
    block[0]._0_1_ = pool.pool[0];
    block[0]._1_1_ = pool.pool[1];
    block[0]._2_1_ = pool.pool[2];
    block[0]._3_1_ = pool.pool[3];
    block[1]._0_1_ = pool.pool[4];
    block[1]._1_1_ = pool.pool[5];
    block[1]._2_1_ = pool.pool[6];
    block[1]._3_1_ = pool.pool[7];
    block[2]._0_1_ = pool.pool[8];
    block[2]._1_1_ = pool.pool[9];
    block[2]._2_1_ = pool.pool[10];
    block[2]._3_1_ = pool.pool[0xb];
    block[3]._0_1_ = pool.pool[0xc];
    block[3]._1_1_ = pool.pool[0xd];
    block[3]._2_1_ = pool.pool[0xe];
    block[3]._3_1_ = pool.pool[0xf];
    block[4]._0_1_ = pool.pool[0x10];
    block[4]._1_1_ = pool.pool[0x11];
    block[4]._2_1_ = pool.pool[0x12];
    block[4]._3_1_ = pool.pool[0x13];
    block[5]._0_1_ = pool.pool[0x14];
    block[5]._1_1_ = pool.pool[0x15];
    block[5]._2_1_ = pool.pool[0x16];
    block[5]._3_1_ = pool.pool[0x17];
    block[6]._0_1_ = pool.pool[0x18];
    block[6]._1_1_ = pool.pool[0x19];
    block[6]._2_1_ = pool.pool[0x1a];
    block[6]._3_1_ = pool.pool[0x1b];
    block[7]._0_1_ = pool.pool[0x1c];
    block[7]._1_1_ = pool.pool[0x1d];
    block[7]._2_1_ = pool.pool[0x1e];
    block[7]._3_1_ = pool.pool[0x1f];
    block[8]._0_1_ = pool.pool[0x20];
    block[8]._1_1_ = pool.pool[0x21];
    block[8]._2_1_ = pool.pool[0x22];
    block[8]._3_1_ = pool.pool[0x23];
    block[9]._0_1_ = pool.pool[0x24];
    block[9]._1_1_ = pool.pool[0x25];
    block[9]._2_1_ = pool.pool[0x26];
    block[9]._3_1_ = pool.pool[0x27];
    block[10]._0_1_ = pool.pool[0x28];
    block[10]._1_1_ = pool.pool[0x29];
    block[10]._2_1_ = pool.pool[0x2a];
    block[10]._3_1_ = pool.pool[0x2b];
    block[0xb]._0_1_ = pool.pool[0x2c];
    block[0xb]._1_1_ = pool.pool[0x2d];
    block[0xb]._2_1_ = pool.pool[0x2e];
    block[0xb]._3_1_ = pool.pool[0x2f];
    block[0xc]._0_1_ = pool.pool[0x30];
    block[0xc]._1_1_ = pool.pool[0x31];
    block[0xc]._2_1_ = pool.pool[0x32];
    block[0xc]._3_1_ = pool.pool[0x33];
    block[0xd]._0_1_ = pool.pool[0x34];
    block[0xd]._1_1_ = pool.pool[0x35];
    block[0xd]._2_1_ = pool.pool[0x36];
    block[0xd]._3_1_ = pool.pool[0x37];
    block[0xe]._0_1_ = pool.pool[0x38];
    block[0xe]._1_1_ = pool.pool[0x39];
    block[0xe]._2_1_ = pool.pool[0x3a];
    block[0xe]._3_1_ = pool.pool[0x3b];
    block[0xf]._0_1_ = pool.pool[0x3c];
    block[0xf]._1_1_ = pool.pool[0x3d];
    block[0xf]._2_1_ = pool.pool[0x3e];
    block[0xf]._3_1_ = pool.pool[0x3f];
    pwVar2 = digest;
    pRVar4 = (RandPool *)(pool.pool + 0x49c);
    pRVar5 = (RandPool *)(pool.pool + 0x49c);
    do {
      do {
        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;
        pwVar2 = pwVar2 + 1;
        pRVar4 = (RandPool *)(pRVar4->pool + 4);
      } while (pwVar2 != block);
      SHATransform(digest,block);
      iVar3 = 0;
      do {
        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];
        iVar3 = iVar3 + 1;
      } while (iVar3 != 5);
      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);
      bVar6 = pRVar5 != &pool;
      pwVar2 = digest;
      pRVar5 = pRVar4;
    } while (bVar6);
    if (local_c4 == 1) break;
    local_c4 = 1;
  }
  SHATransform(digest,block);
  pool.poolpos = 0x14;
  pool.stir_pending = 0;
  pool.incoming[0] = (undefined1)digest[0];
  pool.incoming[1] = digest[0]._1_1_;
  pool.incoming[2] = digest[0]._2_1_;
  pool.incoming[3] = digest[0]._3_1_;
  pool.incoming[4] = (undefined1)digest[1];
  pool.incoming[5] = digest[1]._1_1_;
  pool.incoming[6] = digest[1]._2_1_;
  pool.incoming[7] = digest[1]._3_1_;
  pool.incoming[8] = (undefined1)digest[2];
  pool.incoming[9] = digest[2]._1_1_;
  pool.incoming[10] = digest[2]._2_1_;
  pool.incoming[0xb] = digest[2]._3_1_;
  pool.incoming[0xc] = (undefined1)digest[3];
  pool.incoming[0xd] = digest[3]._1_1_;
  pool.incoming[0xe] = digest[3]._2_1_;
  pool.incoming[0xf] = digest[3]._3_1_;
  pool.incoming[0x10] = (undefined1)digest[4];
  pool.incoming[0x11] = digest[4]._1_1_;
  pool.incoming[0x12] = digest[4]._2_1_;
  pool.incoming[0x13] = digest[4]._3_1_;
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void FUN_00057690(void)

{
  uint *puVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  int in_GS_OFFSET;
  bool bVar5;
  int local_c4;
  uint local_74 [5];
  uint local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x57699;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  DAT_000aaa8c = 1;
  FUN_00068ac0(FUN_00057a50);
  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);
  DAT_000aaa88 = 0;
  local_74[0] = DAT_000aaa34;
  local_74[1] = DAT_000aaa38;
  local_74[2] = DAT_000aaa3c;
  local_74[3] = DAT_000aaa40;
  local_74[4] = DAT_000aaa44;
  local_c4 = 2;
  while( true ) {
    local_60 = DAT_000aa580;
    local_5c = DAT_000aa584;
    local_58 = DAT_000aa588;
    local_54 = DAT_000aa58c;
    local_50 = DAT_000aa590;
    local_4c = DAT_000aa594;
    local_48 = DAT_000aa598;
    local_44 = DAT_000aa59c;
    local_40 = DAT_000aa5a0;
    local_3c = DAT_000aa5a4;
    local_38 = DAT_000aa5a8;
    local_34 = DAT_000aa5ac;
    local_30 = DAT_000aa5b0;
    local_2c = DAT_000aa5b4;
    local_28 = DAT_000aa5b8;
    local_24 = DAT_000aa5bc;
    puVar1 = local_74;
    puVar3 = &DAT_000aaa1c;
    puVar4 = &DAT_000aaa1c;
    do {
      do {
        *puVar1 = *puVar1 ^ *puVar3;
        puVar1 = puVar1 + 1;
        puVar3 = puVar3 + 1;
      } while (puVar1 != &local_60);
      FUN_0005cdb0(local_74,&local_60);
      iVar2 = 0;
      do {
        puVar4[iVar2] = local_74[iVar2];
        iVar2 = iVar2 + 1;
      } while (iVar2 != 5);
      puVar3 = puVar4 + -5;
      bVar5 = puVar4 != &DAT_000aa580;
      puVar1 = local_74;
      puVar4 = puVar3;
    } while (bVar5);
    if (local_c4 == 1) break;
    local_c4 = 1;
  }
  FUN_0005cdb0(local_74,&local_60);
  DAT_000aaa30 = 0x14;
  DAT_000aaa8c = 0;
  DAT_000aaa34 = local_74[0];
  DAT_000aaa38 = local_74[1];
  DAT_000aaa3c = local_74[2];
  DAT_000aaa40 = local_74[3];
  DAT_000aaa44 = local_74[4];
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006f430();
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00014970
ADD EBX,0x526f7
SUB ESP,0xc8
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0xb8],EAX
XOR EAX,EAX
MOV dword ptr [EBX + 0xcfc],0x1
LEA EAX,[EBX + 0xfffadcc0]
PUSH EAX
CALL 0x00068ac0
POP EAX
LEA EAX,[EBX + 0xcb8]
POP EDX
PUSH EAX
LEA EAX,[EBX + 0xca4]
PUSH EAX
CALL 0x0005cdb0
MOV EAX,dword ptr [EBX + 0xca4]
MOV dword ptr [EBX + 0xcf8],0x0
MOV dword ptr [ESP + 0x68],EAX
MOV EAX,dword ptr [EBX + 0xca8]
MOV dword ptr [ESP + 0x6c],EAX
MOV EAX,dword ptr [EBX + 0xcac]
MOV dword ptr [ESP + 0x70],EAX
MOV EAX,dword ptr [EBX + 0xcb0]
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [EBX + 0xcb4]
MOV dword ptr [ESP + 0x78],EAX
ADD ESP,0x10
LEA EAX,[0x7f0]
LEA EDI,[ESP + 0x6c]
LEA EBP,[ESP + 0x58]
MOV ESI,EDI
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[0x7f4]
MOV dword ptr [ESP + 0x24],EAX
LEA EAX,[0x7f8]
MOV dword ptr [ESP + 0x34],EAX
LEA EAX,[0x7fc]
MOV dword ptr [ESP + 0x3c],EAX
LEA EAX,[0x800]
MOV dword ptr [ESP + 0x44],EAX
LEA EAX,[0x804]
MOV dword ptr [ESP + 0x4c],EAX
LEA EAX,[0x808]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[0x80c]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[0x810]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[0x814]
MOV dword ptr [ESP + 0x18],EAX
LEA EAX,[0x818]
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[0x81c]
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[0x820]
MOV dword ptr [ESP + 0x2c],EAX
LEA EAX,[0x824]
MOV dword ptr [ESP + 0x38],EAX
LEA EAX,[0x828]
MOV dword ptr [ESP + 0x40],EAX
LEA EAX,[0x82c]
MOV dword ptr [ESP + 0x48],EAX
LEA EAX,[EBX + 0xc8c]
MOV dword ptr [ESP + 0x30],EAX
LEA EAX,[EBX + 0x7f0]
MOV dword ptr [ESP + 0x8],0x2
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x6c],EAX
MOV EAX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x70],EAX
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x74],EAX
MOV EAX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x78],EAX
MOV EAX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x7c],EAX
MOV EAX,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x80],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x84],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x88],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x8c],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x90],EAX
MOV EAX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x94],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x30]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x98],EAX
MOV EAX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0x9c],EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0xa0],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0xa4],EAX
MOV EAX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX + EBX*0x1]
MOV dword ptr [ESP + 0xa8],EAX
MOV EAX,ESI
MOV ESI,EDI
MOV EDI,EAX
NOP
MOV EAX,EBP
MOV EDX,ESI
LEA ESI,[ESI]
MOV ECX,dword ptr [EDX]
XOR dword ptr [EAX],ECX
ADD EAX,0x4
ADD EDX,0x4
CMP EAX,EDI
JNZ 0x000578c8
SUB ESP,0x8
PUSH EDI
PUSH EBP
CALL 0x0005cdb0
ADD ESP,0x10
XOR EAX,EAX
LEA ESI,[ESI]
MOV EDX,dword ptr [EBP + EAX*0x4]
MOV dword ptr [ESI + EAX*0x4],EDX
ADD EAX,0x1
CMP EAX,0x5
JNZ 0x000578e8
LEA EAX,[ESI + -0x14]
CMP dword ptr [ESP + 0x4],ESI
JZ 0x00057904
MOV ESI,EAX
JMP 0x000578c0
CMP dword ptr [ESP + 0x8],0x1
MOV ESI,EDI
JNZ 0x0005797b
SUB ESP,0x8
PUSH EDI
PUSH EBP
CALL 0x0005cdb0
MOV EAX,dword ptr [ESP + 0x68]
MOV dword ptr [EBX + 0xca0],0x14
MOV dword ptr [EBX + 0xcfc],0x0
MOV dword ptr [EBX + 0xca4],EAX
MOV EAX,dword ptr [ESP + 0x6c]
MOV dword ptr [EBX + 0xca8],EAX
MOV EAX,dword ptr [ESP + 0x70]
MOV dword ptr [EBX + 0xcac],EAX
MOV EAX,dword ptr [ESP + 0x74]
MOV dword ptr [EBX + 0xcb0],EAX
MOV EAX,dword ptr [ESP + 0x78]
ADD ESP,0x10
MOV dword ptr [EBX + 0xcb4],EAX
MOV EAX,dword ptr [ESP + 0xac]
XOR EAX,dword ptr GS:[0x14]
JNZ 0x00057988
ADD ESP,0xbc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x8],0x1
JMP 0x000577e4
CALL 0x0006f430
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00057690(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006f430();\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00057690(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006f430();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00057690(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006f430();\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "uint local_74 [5];" type_identifier (array_declarator "local_74 [5]" identifier [ number_literal ]) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x57699;" (assignment_expression "uStack_14 = 0x57699" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "DAT_000aaa8c = 1;" (assignment_expression "DAT_000aaa8c = 1" identifier = number_literal) ;) (expression_statement "FUN_00068ac0(FUN_00057a50);" (call_expression "FUN_00068ac0(FUN_00057a50)" identifier (argument_list "(FUN_00057a50)" ( identifier ))) ;) (expression_statement "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);" (call_expression "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48)" identifier (argument_list "(&DAT_000aaa34,&DAT_000aaa48)" ( (pointer_expression "&DAT_000aaa34" & identifier) , (pointer_expression "&DAT_000aaa48" & identifier) ))) ;) (expression_statement "DAT_000aaa88 = 0;" (assignment_expression "DAT_000aaa88 = 0" identifier = number_literal) ;) (expression_statement "local_74[0] = DAT_000aaa34;" (assignment_expression "local_74[0] = DAT_000aaa34" (subscript_expression "local_74[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[1] = DAT_000aaa38;" (assignment_expression "local_74[1] = DAT_000aaa38" (subscript_expression "local_74[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[2] = DAT_000aaa3c;" (assignment_expression "local_74[2] = DAT_000aaa3c" (subscript_expression "local_74[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[3] = DAT_000aaa40;" (assignment_expression "local_74[3] = DAT_000aaa40" (subscript_expression "local_74[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[4] = DAT_000aaa44;" (assignment_expression "local_74[4] = DAT_000aaa44" (subscript_expression "local_74[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_c4 = 2;" (assignment_expression "local_c4 = 2" identifier = number_literal) ;) (while_statement "while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" { (expression_statement "local_60 = DAT_000aa580;" (assignment_expression "local_60 = DAT_000aa580" identifier = identifier) ;) (expression_statement "local_5c = DAT_000aa584;" (assignment_expression "local_5c = DAT_000aa584" identifier = identifier) ;) (expression_statement "local_58 = DAT_000aa588;" (assignment_expression "local_58 = DAT_000aa588" identifier = identifier) ;) (expression_statement "local_54 = DAT_000aa58c;" (assignment_expression "local_54 = DAT_000aa58c" identifier = identifier) ;) (expression_statement "local_50 = DAT_000aa590;" (assignment_expression "local_50 = DAT_000aa590" identifier = identifier) ;) (expression_statement "local_4c = DAT_000aa594;" (assignment_expression "local_4c = DAT_000aa594" identifier = identifier) ;) (expression_statement "local_48 = DAT_000aa598;" (assignment_expression "local_48 = DAT_000aa598" identifier = identifier) ;) (expression_statement "local_44 = DAT_000aa59c;" (assignment_expression "local_44 = DAT_000aa59c" identifier = identifier) ;) (expression_statement "local_40 = DAT_000aa5a0;" (assignment_expression "local_40 = DAT_000aa5a0" identifier = identifier) ;) (expression_statement "local_3c = DAT_000aa5a4;" (assignment_expression "local_3c = DAT_000aa5a4" identifier = identifier) ;) (expression_statement "local_38 = DAT_000aa5a8;" (assignment_expression "local_38 = DAT_000aa5a8" identifier = identifier) ;) (expression_statement "local_34 = DAT_000aa5ac;" (assignment_expression "local_34 = DAT_000aa5ac" identifier = identifier) ;) (expression_statement "local_30 = DAT_000aa5b0;" (assignment_expression "local_30 = DAT_000aa5b0" identifier = identifier) ;) (expression_statement "local_2c = DAT_000aa5b4;" (assignment_expression "local_2c = DAT_000aa5b4" identifier = identifier) ;) (expression_statement "local_28 = DAT_000aa5b8;" (assignment_expression "local_28 = DAT_000aa5b8" identifier = identifier) ;) (expression_statement "local_24 = DAT_000aa5bc;" (assignment_expression "local_24 = DAT_000aa5bc" identifier = identifier) ;) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" identifier = identifier) ;) (expression_statement "puVar3 = &DAT_000aaa1c;" (assignment_expression "puVar3 = &DAT_000aaa1c" identifier = (pointer_expression "&DAT_000aaa1c" & identifier)) ;) (expression_statement "puVar4 = &DAT_000aaa1c;" (assignment_expression "puVar4 = &DAT_000aaa1c" identifier = (pointer_expression "&DAT_000aaa1c" & identifier)) ;) (do_statement "do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);" do (compound_statement "{\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    }" { (do_statement "do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);" do (compound_statement "{\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      }" { (expression_statement "*puVar1 = *puVar1 ^ *puVar3;" (assignment_expression "*puVar1 = *puVar1 ^ *puVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *puVar3" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar1 != &local_60)" ( (binary_expression "puVar1 != &local_60" identifier != (pointer_expression "&local_60" & identifier)) )) ;) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" identifier (argument_list "(local_74,&local_60)" ( identifier , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);" do (compound_statement "{\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      }" { (expression_statement "puVar4[iVar2] = local_74[iVar2];" (assignment_expression "puVar4[iVar2] = local_74[iVar2]" (subscript_expression "puVar4[iVar2]" identifier [ identifier ]) = (subscript_expression "local_74[iVar2]" identifier [ identifier ])) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 5)" ( (binary_expression "iVar2 != 5" identifier != number_literal) )) ;) (expression_statement "puVar3 = puVar4 + -5;" (assignment_expression "puVar3 = puVar4 + -5" identifier = (binary_expression "puVar4 + -5" identifier + number_literal)) ;) (expression_statement "bVar5 = puVar4 != &DAT_000aa580;" (assignment_expression "bVar5 = puVar4 != &DAT_000aa580" identifier = (binary_expression "puVar4 != &DAT_000aa580" identifier != (pointer_expression "&DAT_000aa580" & identifier))) ;) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" identifier = identifier) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) (if_statement "if (local_c4 == 1) break;" if (parenthesized_expression "(local_c4 == 1)" ( (binary_expression "local_c4 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_c4 = 1;" (assignment_expression "local_c4 = 1" identifier = number_literal) ;) })) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" identifier (argument_list "(local_74,&local_60)" ( identifier , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "DAT_000aaa30 = 0x14;" (assignment_expression "DAT_000aaa30 = 0x14" identifier = number_literal) ;) (expression_statement "DAT_000aaa8c = 0;" (assignment_expression "DAT_000aaa8c = 0" identifier = number_literal) ;) (expression_statement "DAT_000aaa34 = local_74[0];" (assignment_expression "DAT_000aaa34 = local_74[0]" identifier = (subscript_expression "local_74[0]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa38 = local_74[1];" (assignment_expression "DAT_000aaa38 = local_74[1]" identifier = (subscript_expression "local_74[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa3c = local_74[2];" (assignment_expression "DAT_000aaa3c = local_74[2]" identifier = (subscript_expression "local_74[2]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa40 = local_74[3];" (assignment_expression "DAT_000aaa40 = local_74[3]" identifier = (subscript_expression "local_74[3]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa44 = local_74[4];" (assignment_expression "DAT_000aaa44 = local_74[4]" identifier = (subscript_expression "local_74[4]" identifier [ number_literal ])) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0006f430();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (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_0006f430();\n  }" { comment (expression_statement "FUN_0006f430();" (call_expression "FUN_0006f430()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid random_stir(void)\n\n{\n  int iVar1;\n  word32 *pwVar2;\n  int iVar3;\n  RandPool *pRVar4;\n  RandPool *pRVar5;\n  int in_GS_OFFSET;\n  bool bVar6;\n  int local_c4;\n  word32 digest [5];\n  word32 block [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pool.stir_pending = 1;\n  noise_get_light(random_add_noise);\n  SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb);\n  pool.incomingpos = 0;\n  digest[0]._0_1_ = pool.incoming[0];\n  digest[0]._1_1_ = pool.incoming[1];\n  digest[0]._2_1_ = pool.incoming[2];\n  digest[0]._3_1_ = pool.incoming[3];\n  digest[1]._0_1_ = pool.incoming[4];\n  digest[1]._1_1_ = pool.incoming[5];\n  digest[1]._2_1_ = pool.incoming[6];\n  digest[1]._3_1_ = pool.incoming[7];\n  digest[2]._0_1_ = pool.incoming[8];\n  digest[2]._1_1_ = pool.incoming[9];\n  digest[2]._2_1_ = pool.incoming[10];\n  digest[2]._3_1_ = pool.incoming[0xb];\n  digest[3]._0_1_ = pool.incoming[0xc];\n  digest[3]._1_1_ = pool.incoming[0xd];\n  digest[3]._2_1_ = pool.incoming[0xe];\n  digest[3]._3_1_ = pool.incoming[0xf];\n  digest[4]._0_1_ = pool.incoming[0x10];\n  digest[4]._1_1_ = pool.incoming[0x11];\n  digest[4]._2_1_ = pool.incoming[0x12];\n  digest[4]._3_1_ = pool.incoming[0x13];\n  local_c4 = 2;\n  while( true ) {\n    block[0]._0_1_ = pool.pool[0];\n    block[0]._1_1_ = pool.pool[1];\n    block[0]._2_1_ = pool.pool[2];\n    block[0]._3_1_ = pool.pool[3];\n    block[1]._0_1_ = pool.pool[4];\n    block[1]._1_1_ = pool.pool[5];\n    block[1]._2_1_ = pool.pool[6];\n    block[1]._3_1_ = pool.pool[7];\n    block[2]._0_1_ = pool.pool[8];\n    block[2]._1_1_ = pool.pool[9];\n    block[2]._2_1_ = pool.pool[10];\n    block[2]._3_1_ = pool.pool[0xb];\n    block[3]._0_1_ = pool.pool[0xc];\n    block[3]._1_1_ = pool.pool[0xd];\n    block[3]._2_1_ = pool.pool[0xe];\n    block[3]._3_1_ = pool.pool[0xf];\n    block[4]._0_1_ = pool.pool[0x10];\n    block[4]._1_1_ = pool.pool[0x11];\n    block[4]._2_1_ = pool.pool[0x12];\n    block[4]._3_1_ = pool.pool[0x13];\n    block[5]._0_1_ = pool.pool[0x14];\n    block[5]._1_1_ = pool.pool[0x15];\n    block[5]._2_1_ = pool.pool[0x16];\n    block[5]._3_1_ = pool.pool[0x17];\n    block[6]._0_1_ = pool.pool[0x18];\n    block[6]._1_1_ = pool.pool[0x19];\n    block[6]._2_1_ = pool.pool[0x1a];\n    block[6]._3_1_ = pool.pool[0x1b];\n    block[7]._0_1_ = pool.pool[0x1c];\n    block[7]._1_1_ = pool.pool[0x1d];\n    block[7]._2_1_ = pool.pool[0x1e];\n    block[7]._3_1_ = pool.pool[0x1f];\n    block[8]._0_1_ = pool.pool[0x20];\n    block[8]._1_1_ = pool.pool[0x21];\n    block[8]._2_1_ = pool.pool[0x22];\n    block[8]._3_1_ = pool.pool[0x23];\n    block[9]._0_1_ = pool.pool[0x24];\n    block[9]._1_1_ = pool.pool[0x25];\n    block[9]._2_1_ = pool.pool[0x26];\n    block[9]._3_1_ = pool.pool[0x27];\n    block[10]._0_1_ = pool.pool[0x28];\n    block[10]._1_1_ = pool.pool[0x29];\n    block[10]._2_1_ = pool.pool[0x2a];\n    block[10]._3_1_ = pool.pool[0x2b];\n    block[0xb]._0_1_ = pool.pool[0x2c];\n    block[0xb]._1_1_ = pool.pool[0x2d];\n    block[0xb]._2_1_ = pool.pool[0x2e];\n    block[0xb]._3_1_ = pool.pool[0x2f];\n    block[0xc]._0_1_ = pool.pool[0x30];\n    block[0xc]._1_1_ = pool.pool[0x31];\n    block[0xc]._2_1_ = pool.pool[0x32];\n    block[0xc]._3_1_ = pool.pool[0x33];\n    block[0xd]._0_1_ = pool.pool[0x34];\n    block[0xd]._1_1_ = pool.pool[0x35];\n    block[0xd]._2_1_ = pool.pool[0x36];\n    block[0xd]._3_1_ = pool.pool[0x37];\n    block[0xe]._0_1_ = pool.pool[0x38];\n    block[0xe]._1_1_ = pool.pool[0x39];\n    block[0xe]._2_1_ = pool.pool[0x3a];\n    block[0xe]._3_1_ = pool.pool[0x3b];\n    block[0xf]._0_1_ = pool.pool[0x3c];\n    block[0xf]._1_1_ = pool.pool[0x3d];\n    block[0xf]._2_1_ = pool.pool[0x3e];\n    block[0xf]._3_1_ = pool.pool[0x3f];\n    pwVar2 = digest;\n    pRVar4 = (RandPool *)(pool.pool + 0x49c);\n    pRVar5 = (RandPool *)(pool.pool + 0x49c);\n    do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  SHATransform(digest,block);\n  pool.poolpos = 0x14;\n  pool.stir_pending = 0;\n  pool.incoming[0] = (undefined1)digest[0];\n  pool.incoming[1] = digest[0]._1_1_;\n  pool.incoming[2] = digest[0]._2_1_;\n  pool.incoming[3] = digest[0]._3_1_;\n  pool.incoming[4] = (undefined1)digest[1];\n  pool.incoming[5] = digest[1]._1_1_;\n  pool.incoming[6] = digest[1]._2_1_;\n  pool.incoming[7] = digest[1]._3_1_;\n  pool.incoming[8] = (undefined1)digest[2];\n  pool.incoming[9] = digest[2]._1_1_;\n  pool.incoming[10] = digest[2]._2_1_;\n  pool.incoming[0xb] = digest[2]._3_1_;\n  pool.incoming[0xc] = (undefined1)digest[3];\n  pool.incoming[0xd] = digest[3]._1_1_;\n  pool.incoming[0xe] = digest[3]._2_1_;\n  pool.incoming[0xf] = digest[3]._3_1_;\n  pool.incoming[0x10] = (undefined1)digest[4];\n  pool.incoming[0x11] = digest[4]._1_1_;\n  pool.incoming[0x12] = digest[4]._2_1_;\n  pool.incoming[0x13] = digest[4]._3_1_;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}\n\n" comment comment (function_definition "void random_stir(void)\n\n{\n  int iVar1;\n  word32 *pwVar2;\n  int iVar3;\n  RandPool *pRVar4;\n  RandPool *pRVar5;\n  int in_GS_OFFSET;\n  bool bVar6;\n  int local_c4;\n  word32 digest [5];\n  word32 block [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pool.stir_pending = 1;\n  noise_get_light(random_add_noise);\n  SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb);\n  pool.incomingpos = 0;\n  digest[0]._0_1_ = pool.incoming[0];\n  digest[0]._1_1_ = pool.incoming[1];\n  digest[0]._2_1_ = pool.incoming[2];\n  digest[0]._3_1_ = pool.incoming[3];\n  digest[1]._0_1_ = pool.incoming[4];\n  digest[1]._1_1_ = pool.incoming[5];\n  digest[1]._2_1_ = pool.incoming[6];\n  digest[1]._3_1_ = pool.incoming[7];\n  digest[2]._0_1_ = pool.incoming[8];\n  digest[2]._1_1_ = pool.incoming[9];\n  digest[2]._2_1_ = pool.incoming[10];\n  digest[2]._3_1_ = pool.incoming[0xb];\n  digest[3]._0_1_ = pool.incoming[0xc];\n  digest[3]._1_1_ = pool.incoming[0xd];\n  digest[3]._2_1_ = pool.incoming[0xe];\n  digest[3]._3_1_ = pool.incoming[0xf];\n  digest[4]._0_1_ = pool.incoming[0x10];\n  digest[4]._1_1_ = pool.incoming[0x11];\n  digest[4]._2_1_ = pool.incoming[0x12];\n  digest[4]._3_1_ = pool.incoming[0x13];\n  local_c4 = 2;\n  while( true ) {\n    block[0]._0_1_ = pool.pool[0];\n    block[0]._1_1_ = pool.pool[1];\n    block[0]._2_1_ = pool.pool[2];\n    block[0]._3_1_ = pool.pool[3];\n    block[1]._0_1_ = pool.pool[4];\n    block[1]._1_1_ = pool.pool[5];\n    block[1]._2_1_ = pool.pool[6];\n    block[1]._3_1_ = pool.pool[7];\n    block[2]._0_1_ = pool.pool[8];\n    block[2]._1_1_ = pool.pool[9];\n    block[2]._2_1_ = pool.pool[10];\n    block[2]._3_1_ = pool.pool[0xb];\n    block[3]._0_1_ = pool.pool[0xc];\n    block[3]._1_1_ = pool.pool[0xd];\n    block[3]._2_1_ = pool.pool[0xe];\n    block[3]._3_1_ = pool.pool[0xf];\n    block[4]._0_1_ = pool.pool[0x10];\n    block[4]._1_1_ = pool.pool[0x11];\n    block[4]._2_1_ = pool.pool[0x12];\n    block[4]._3_1_ = pool.pool[0x13];\n    block[5]._0_1_ = pool.pool[0x14];\n    block[5]._1_1_ = pool.pool[0x15];\n    block[5]._2_1_ = pool.pool[0x16];\n    block[5]._3_1_ = pool.pool[0x17];\n    block[6]._0_1_ = pool.pool[0x18];\n    block[6]._1_1_ = pool.pool[0x19];\n    block[6]._2_1_ = pool.pool[0x1a];\n    block[6]._3_1_ = pool.pool[0x1b];\n    block[7]._0_1_ = pool.pool[0x1c];\n    block[7]._1_1_ = pool.pool[0x1d];\n    block[7]._2_1_ = pool.pool[0x1e];\n    block[7]._3_1_ = pool.pool[0x1f];\n    block[8]._0_1_ = pool.pool[0x20];\n    block[8]._1_1_ = pool.pool[0x21];\n    block[8]._2_1_ = pool.pool[0x22];\n    block[8]._3_1_ = pool.pool[0x23];\n    block[9]._0_1_ = pool.pool[0x24];\n    block[9]._1_1_ = pool.pool[0x25];\n    block[9]._2_1_ = pool.pool[0x26];\n    block[9]._3_1_ = pool.pool[0x27];\n    block[10]._0_1_ = pool.pool[0x28];\n    block[10]._1_1_ = pool.pool[0x29];\n    block[10]._2_1_ = pool.pool[0x2a];\n    block[10]._3_1_ = pool.pool[0x2b];\n    block[0xb]._0_1_ = pool.pool[0x2c];\n    block[0xb]._1_1_ = pool.pool[0x2d];\n    block[0xb]._2_1_ = pool.pool[0x2e];\n    block[0xb]._3_1_ = pool.pool[0x2f];\n    block[0xc]._0_1_ = pool.pool[0x30];\n    block[0xc]._1_1_ = pool.pool[0x31];\n    block[0xc]._2_1_ = pool.pool[0x32];\n    block[0xc]._3_1_ = pool.pool[0x33];\n    block[0xd]._0_1_ = pool.pool[0x34];\n    block[0xd]._1_1_ = pool.pool[0x35];\n    block[0xd]._2_1_ = pool.pool[0x36];\n    block[0xd]._3_1_ = pool.pool[0x37];\n    block[0xe]._0_1_ = pool.pool[0x38];\n    block[0xe]._1_1_ = pool.pool[0x39];\n    block[0xe]._2_1_ = pool.pool[0x3a];\n    block[0xe]._3_1_ = pool.pool[0x3b];\n    block[0xf]._0_1_ = pool.pool[0x3c];\n    block[0xf]._1_1_ = pool.pool[0x3d];\n    block[0xf]._2_1_ = pool.pool[0x3e];\n    block[0xf]._3_1_ = pool.pool[0x3f];\n    pwVar2 = digest;\n    pRVar4 = (RandPool *)(pool.pool + 0x49c);\n    pRVar5 = (RandPool *)(pool.pool + 0x49c);\n    do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  SHATransform(digest,block);\n  pool.poolpos = 0x14;\n  pool.stir_pending = 0;\n  pool.incoming[0] = (undefined1)digest[0];\n  pool.incoming[1] = digest[0]._1_1_;\n  pool.incoming[2] = digest[0]._2_1_;\n  pool.incoming[3] = digest[0]._3_1_;\n  pool.incoming[4] = (undefined1)digest[1];\n  pool.incoming[5] = digest[1]._1_1_;\n  pool.incoming[6] = digest[1]._2_1_;\n  pool.incoming[7] = digest[1]._3_1_;\n  pool.incoming[8] = (undefined1)digest[2];\n  pool.incoming[9] = digest[2]._1_1_;\n  pool.incoming[10] = digest[2]._2_1_;\n  pool.incoming[0xb] = digest[2]._3_1_;\n  pool.incoming[0xc] = (undefined1)digest[3];\n  pool.incoming[0xd] = digest[3]._1_1_;\n  pool.incoming[0xe] = digest[3]._2_1_;\n  pool.incoming[0xf] = digest[3]._3_1_;\n  pool.incoming[0x10] = (undefined1)digest[4];\n  pool.incoming[0x11] = digest[4]._1_1_;\n  pool.incoming[0x12] = digest[4]._2_1_;\n  pool.incoming[0x13] = digest[4]._3_1_;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" primitive_type (function_declarator "random_stir(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  word32 *pwVar2;\n  int iVar3;\n  RandPool *pRVar4;\n  RandPool *pRVar5;\n  int in_GS_OFFSET;\n  bool bVar6;\n  int local_c4;\n  word32 digest [5];\n  word32 block [16];\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  pool.stir_pending = 1;\n  noise_get_light(random_add_noise);\n  SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb);\n  pool.incomingpos = 0;\n  digest[0]._0_1_ = pool.incoming[0];\n  digest[0]._1_1_ = pool.incoming[1];\n  digest[0]._2_1_ = pool.incoming[2];\n  digest[0]._3_1_ = pool.incoming[3];\n  digest[1]._0_1_ = pool.incoming[4];\n  digest[1]._1_1_ = pool.incoming[5];\n  digest[1]._2_1_ = pool.incoming[6];\n  digest[1]._3_1_ = pool.incoming[7];\n  digest[2]._0_1_ = pool.incoming[8];\n  digest[2]._1_1_ = pool.incoming[9];\n  digest[2]._2_1_ = pool.incoming[10];\n  digest[2]._3_1_ = pool.incoming[0xb];\n  digest[3]._0_1_ = pool.incoming[0xc];\n  digest[3]._1_1_ = pool.incoming[0xd];\n  digest[3]._2_1_ = pool.incoming[0xe];\n  digest[3]._3_1_ = pool.incoming[0xf];\n  digest[4]._0_1_ = pool.incoming[0x10];\n  digest[4]._1_1_ = pool.incoming[0x11];\n  digest[4]._2_1_ = pool.incoming[0x12];\n  digest[4]._3_1_ = pool.incoming[0x13];\n  local_c4 = 2;\n  while( true ) {\n    block[0]._0_1_ = pool.pool[0];\n    block[0]._1_1_ = pool.pool[1];\n    block[0]._2_1_ = pool.pool[2];\n    block[0]._3_1_ = pool.pool[3];\n    block[1]._0_1_ = pool.pool[4];\n    block[1]._1_1_ = pool.pool[5];\n    block[1]._2_1_ = pool.pool[6];\n    block[1]._3_1_ = pool.pool[7];\n    block[2]._0_1_ = pool.pool[8];\n    block[2]._1_1_ = pool.pool[9];\n    block[2]._2_1_ = pool.pool[10];\n    block[2]._3_1_ = pool.pool[0xb];\n    block[3]._0_1_ = pool.pool[0xc];\n    block[3]._1_1_ = pool.pool[0xd];\n    block[3]._2_1_ = pool.pool[0xe];\n    block[3]._3_1_ = pool.pool[0xf];\n    block[4]._0_1_ = pool.pool[0x10];\n    block[4]._1_1_ = pool.pool[0x11];\n    block[4]._2_1_ = pool.pool[0x12];\n    block[4]._3_1_ = pool.pool[0x13];\n    block[5]._0_1_ = pool.pool[0x14];\n    block[5]._1_1_ = pool.pool[0x15];\n    block[5]._2_1_ = pool.pool[0x16];\n    block[5]._3_1_ = pool.pool[0x17];\n    block[6]._0_1_ = pool.pool[0x18];\n    block[6]._1_1_ = pool.pool[0x19];\n    block[6]._2_1_ = pool.pool[0x1a];\n    block[6]._3_1_ = pool.pool[0x1b];\n    block[7]._0_1_ = pool.pool[0x1c];\n    block[7]._1_1_ = pool.pool[0x1d];\n    block[7]._2_1_ = pool.pool[0x1e];\n    block[7]._3_1_ = pool.pool[0x1f];\n    block[8]._0_1_ = pool.pool[0x20];\n    block[8]._1_1_ = pool.pool[0x21];\n    block[8]._2_1_ = pool.pool[0x22];\n    block[8]._3_1_ = pool.pool[0x23];\n    block[9]._0_1_ = pool.pool[0x24];\n    block[9]._1_1_ = pool.pool[0x25];\n    block[9]._2_1_ = pool.pool[0x26];\n    block[9]._3_1_ = pool.pool[0x27];\n    block[10]._0_1_ = pool.pool[0x28];\n    block[10]._1_1_ = pool.pool[0x29];\n    block[10]._2_1_ = pool.pool[0x2a];\n    block[10]._3_1_ = pool.pool[0x2b];\n    block[0xb]._0_1_ = pool.pool[0x2c];\n    block[0xb]._1_1_ = pool.pool[0x2d];\n    block[0xb]._2_1_ = pool.pool[0x2e];\n    block[0xb]._3_1_ = pool.pool[0x2f];\n    block[0xc]._0_1_ = pool.pool[0x30];\n    block[0xc]._1_1_ = pool.pool[0x31];\n    block[0xc]._2_1_ = pool.pool[0x32];\n    block[0xc]._3_1_ = pool.pool[0x33];\n    block[0xd]._0_1_ = pool.pool[0x34];\n    block[0xd]._1_1_ = pool.pool[0x35];\n    block[0xd]._2_1_ = pool.pool[0x36];\n    block[0xd]._3_1_ = pool.pool[0x37];\n    block[0xe]._0_1_ = pool.pool[0x38];\n    block[0xe]._1_1_ = pool.pool[0x39];\n    block[0xe]._2_1_ = pool.pool[0x3a];\n    block[0xe]._3_1_ = pool.pool[0x3b];\n    block[0xf]._0_1_ = pool.pool[0x3c];\n    block[0xf]._1_1_ = pool.pool[0x3d];\n    block[0xf]._2_1_ = pool.pool[0x3e];\n    block[0xf]._3_1_ = pool.pool[0x3f];\n    pwVar2 = digest;\n    pRVar4 = (RandPool *)(pool.pool + 0x49c);\n    pRVar5 = (RandPool *)(pool.pool + 0x49c);\n    do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  SHATransform(digest,block);\n  pool.poolpos = 0x14;\n  pool.stir_pending = 0;\n  pool.incoming[0] = (undefined1)digest[0];\n  pool.incoming[1] = digest[0]._1_1_;\n  pool.incoming[2] = digest[0]._2_1_;\n  pool.incoming[3] = digest[0]._3_1_;\n  pool.incoming[4] = (undefined1)digest[1];\n  pool.incoming[5] = digest[1]._1_1_;\n  pool.incoming[6] = digest[1]._2_1_;\n  pool.incoming[7] = digest[1]._3_1_;\n  pool.incoming[8] = (undefined1)digest[2];\n  pool.incoming[9] = digest[2]._1_1_;\n  pool.incoming[10] = digest[2]._2_1_;\n  pool.incoming[0xb] = digest[2]._3_1_;\n  pool.incoming[0xc] = (undefined1)digest[3];\n  pool.incoming[0xd] = digest[3]._1_1_;\n  pool.incoming[0xe] = digest[3]._2_1_;\n  pool.incoming[0xf] = digest[3]._3_1_;\n  pool.incoming[0x10] = (undefined1)digest[4];\n  pool.incoming[0x11] = digest[4]._1_1_;\n  pool.incoming[0x12] = digest[4]._2_1_;\n  pool.incoming[0x13] = digest[4]._3_1_;\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "word32 *pwVar2;" type_identifier (pointer_declarator "*pwVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "RandPool *pRVar4;" type_identifier (pointer_declarator "*pRVar4" * identifier) ;) (declaration "RandPool *pRVar5;" type_identifier (pointer_declarator "*pRVar5" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "word32 digest [5];" type_identifier (array_declarator "digest [5]" identifier [ number_literal ]) ;) (declaration "word32 block [16];" type_identifier (array_declarator "block [16]" identifier [ number_literal ]) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pool.stir_pending = 1;" (assignment_expression "pool.stir_pending = 1" (field_expression "pool.stir_pending" identifier . field_identifier) = number_literal) ;) (expression_statement "noise_get_light(random_add_noise);" (call_expression "noise_get_light(random_add_noise)" identifier (argument_list "(random_add_noise)" ( identifier ))) ;) (expression_statement "SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb);" (call_expression "SHATransform((word32 *)pool.incoming,(word32 *)pool.incomingb)" identifier (argument_list "((word32 *)pool.incoming,(word32 *)pool.incomingb)" ( (cast_expression "(word32 *)pool.incoming" ( (type_descriptor "word32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pool.incoming" identifier . field_identifier)) , (cast_expression "(word32 *)pool.incomingb" ( (type_descriptor "word32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pool.incomingb" identifier . field_identifier)) ))) ;) (expression_statement "pool.incomingpos = 0;" (assignment_expression "pool.incomingpos = 0" (field_expression "pool.incomingpos" identifier . field_identifier) = number_literal) ;) (expression_statement "digest[0]._0_1_ = pool.incoming[0];" (assignment_expression "digest[0]._0_1_ = pool.incoming[0]" (field_expression "digest[0]._0_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[0]._1_1_ = pool.incoming[1];" (assignment_expression "digest[0]._1_1_ = pool.incoming[1]" (field_expression "digest[0]._1_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[1]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[0]._2_1_ = pool.incoming[2];" (assignment_expression "digest[0]._2_1_ = pool.incoming[2]" (field_expression "digest[0]._2_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[2]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[0]._3_1_ = pool.incoming[3];" (assignment_expression "digest[0]._3_1_ = pool.incoming[3]" (field_expression "digest[0]._3_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[3]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[1]._0_1_ = pool.incoming[4];" (assignment_expression "digest[1]._0_1_ = pool.incoming[4]" (field_expression "digest[1]._0_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[4]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[1]._1_1_ = pool.incoming[5];" (assignment_expression "digest[1]._1_1_ = pool.incoming[5]" (field_expression "digest[1]._1_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[5]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[1]._2_1_ = pool.incoming[6];" (assignment_expression "digest[1]._2_1_ = pool.incoming[6]" (field_expression "digest[1]._2_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[6]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[1]._3_1_ = pool.incoming[7];" (assignment_expression "digest[1]._3_1_ = pool.incoming[7]" (field_expression "digest[1]._3_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[7]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[2]._0_1_ = pool.incoming[8];" (assignment_expression "digest[2]._0_1_ = pool.incoming[8]" (field_expression "digest[2]._0_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[8]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[2]._1_1_ = pool.incoming[9];" (assignment_expression "digest[2]._1_1_ = pool.incoming[9]" (field_expression "digest[2]._1_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[9]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[2]._2_1_ = pool.incoming[10];" (assignment_expression "digest[2]._2_1_ = pool.incoming[10]" (field_expression "digest[2]._2_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[10]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[2]._3_1_ = pool.incoming[0xb];" (assignment_expression "digest[2]._3_1_ = pool.incoming[0xb]" (field_expression "digest[2]._3_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0xb]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[3]._0_1_ = pool.incoming[0xc];" (assignment_expression "digest[3]._0_1_ = pool.incoming[0xc]" (field_expression "digest[3]._0_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0xc]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[3]._1_1_ = pool.incoming[0xd];" (assignment_expression "digest[3]._1_1_ = pool.incoming[0xd]" (field_expression "digest[3]._1_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0xd]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[3]._2_1_ = pool.incoming[0xe];" (assignment_expression "digest[3]._2_1_ = pool.incoming[0xe]" (field_expression "digest[3]._2_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0xe]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[3]._3_1_ = pool.incoming[0xf];" (assignment_expression "digest[3]._3_1_ = pool.incoming[0xf]" (field_expression "digest[3]._3_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0xf]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[4]._0_1_ = pool.incoming[0x10];" (assignment_expression "digest[4]._0_1_ = pool.incoming[0x10]" (field_expression "digest[4]._0_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0x10]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[4]._1_1_ = pool.incoming[0x11];" (assignment_expression "digest[4]._1_1_ = pool.incoming[0x11]" (field_expression "digest[4]._1_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0x11]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[4]._2_1_ = pool.incoming[0x12];" (assignment_expression "digest[4]._2_1_ = pool.incoming[0x12]" (field_expression "digest[4]._2_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0x12]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "digest[4]._3_1_ = pool.incoming[0x13];" (assignment_expression "digest[4]._3_1_ = pool.incoming[0x13]" (field_expression "digest[4]._3_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.incoming[0x13]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "local_c4 = 2;" (assignment_expression "local_c4 = 2" identifier = number_literal) ;) (while_statement "while( true ) {\n    block[0]._0_1_ = pool.pool[0];\n    block[0]._1_1_ = pool.pool[1];\n    block[0]._2_1_ = pool.pool[2];\n    block[0]._3_1_ = pool.pool[3];\n    block[1]._0_1_ = pool.pool[4];\n    block[1]._1_1_ = pool.pool[5];\n    block[1]._2_1_ = pool.pool[6];\n    block[1]._3_1_ = pool.pool[7];\n    block[2]._0_1_ = pool.pool[8];\n    block[2]._1_1_ = pool.pool[9];\n    block[2]._2_1_ = pool.pool[10];\n    block[2]._3_1_ = pool.pool[0xb];\n    block[3]._0_1_ = pool.pool[0xc];\n    block[3]._1_1_ = pool.pool[0xd];\n    block[3]._2_1_ = pool.pool[0xe];\n    block[3]._3_1_ = pool.pool[0xf];\n    block[4]._0_1_ = pool.pool[0x10];\n    block[4]._1_1_ = pool.pool[0x11];\n    block[4]._2_1_ = pool.pool[0x12];\n    block[4]._3_1_ = pool.pool[0x13];\n    block[5]._0_1_ = pool.pool[0x14];\n    block[5]._1_1_ = pool.pool[0x15];\n    block[5]._2_1_ = pool.pool[0x16];\n    block[5]._3_1_ = pool.pool[0x17];\n    block[6]._0_1_ = pool.pool[0x18];\n    block[6]._1_1_ = pool.pool[0x19];\n    block[6]._2_1_ = pool.pool[0x1a];\n    block[6]._3_1_ = pool.pool[0x1b];\n    block[7]._0_1_ = pool.pool[0x1c];\n    block[7]._1_1_ = pool.pool[0x1d];\n    block[7]._2_1_ = pool.pool[0x1e];\n    block[7]._3_1_ = pool.pool[0x1f];\n    block[8]._0_1_ = pool.pool[0x20];\n    block[8]._1_1_ = pool.pool[0x21];\n    block[8]._2_1_ = pool.pool[0x22];\n    block[8]._3_1_ = pool.pool[0x23];\n    block[9]._0_1_ = pool.pool[0x24];\n    block[9]._1_1_ = pool.pool[0x25];\n    block[9]._2_1_ = pool.pool[0x26];\n    block[9]._3_1_ = pool.pool[0x27];\n    block[10]._0_1_ = pool.pool[0x28];\n    block[10]._1_1_ = pool.pool[0x29];\n    block[10]._2_1_ = pool.pool[0x2a];\n    block[10]._3_1_ = pool.pool[0x2b];\n    block[0xb]._0_1_ = pool.pool[0x2c];\n    block[0xb]._1_1_ = pool.pool[0x2d];\n    block[0xb]._2_1_ = pool.pool[0x2e];\n    block[0xb]._3_1_ = pool.pool[0x2f];\n    block[0xc]._0_1_ = pool.pool[0x30];\n    block[0xc]._1_1_ = pool.pool[0x31];\n    block[0xc]._2_1_ = pool.pool[0x32];\n    block[0xc]._3_1_ = pool.pool[0x33];\n    block[0xd]._0_1_ = pool.pool[0x34];\n    block[0xd]._1_1_ = pool.pool[0x35];\n    block[0xd]._2_1_ = pool.pool[0x36];\n    block[0xd]._3_1_ = pool.pool[0x37];\n    block[0xe]._0_1_ = pool.pool[0x38];\n    block[0xe]._1_1_ = pool.pool[0x39];\n    block[0xe]._2_1_ = pool.pool[0x3a];\n    block[0xe]._3_1_ = pool.pool[0x3b];\n    block[0xf]._0_1_ = pool.pool[0x3c];\n    block[0xf]._1_1_ = pool.pool[0x3d];\n    block[0xf]._2_1_ = pool.pool[0x3e];\n    block[0xf]._3_1_ = pool.pool[0x3f];\n    pwVar2 = digest;\n    pRVar4 = (RandPool *)(pool.pool + 0x49c);\n    pRVar5 = (RandPool *)(pool.pool + 0x49c);\n    do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    block[0]._0_1_ = pool.pool[0];\n    block[0]._1_1_ = pool.pool[1];\n    block[0]._2_1_ = pool.pool[2];\n    block[0]._3_1_ = pool.pool[3];\n    block[1]._0_1_ = pool.pool[4];\n    block[1]._1_1_ = pool.pool[5];\n    block[1]._2_1_ = pool.pool[6];\n    block[1]._3_1_ = pool.pool[7];\n    block[2]._0_1_ = pool.pool[8];\n    block[2]._1_1_ = pool.pool[9];\n    block[2]._2_1_ = pool.pool[10];\n    block[2]._3_1_ = pool.pool[0xb];\n    block[3]._0_1_ = pool.pool[0xc];\n    block[3]._1_1_ = pool.pool[0xd];\n    block[3]._2_1_ = pool.pool[0xe];\n    block[3]._3_1_ = pool.pool[0xf];\n    block[4]._0_1_ = pool.pool[0x10];\n    block[4]._1_1_ = pool.pool[0x11];\n    block[4]._2_1_ = pool.pool[0x12];\n    block[4]._3_1_ = pool.pool[0x13];\n    block[5]._0_1_ = pool.pool[0x14];\n    block[5]._1_1_ = pool.pool[0x15];\n    block[5]._2_1_ = pool.pool[0x16];\n    block[5]._3_1_ = pool.pool[0x17];\n    block[6]._0_1_ = pool.pool[0x18];\n    block[6]._1_1_ = pool.pool[0x19];\n    block[6]._2_1_ = pool.pool[0x1a];\n    block[6]._3_1_ = pool.pool[0x1b];\n    block[7]._0_1_ = pool.pool[0x1c];\n    block[7]._1_1_ = pool.pool[0x1d];\n    block[7]._2_1_ = pool.pool[0x1e];\n    block[7]._3_1_ = pool.pool[0x1f];\n    block[8]._0_1_ = pool.pool[0x20];\n    block[8]._1_1_ = pool.pool[0x21];\n    block[8]._2_1_ = pool.pool[0x22];\n    block[8]._3_1_ = pool.pool[0x23];\n    block[9]._0_1_ = pool.pool[0x24];\n    block[9]._1_1_ = pool.pool[0x25];\n    block[9]._2_1_ = pool.pool[0x26];\n    block[9]._3_1_ = pool.pool[0x27];\n    block[10]._0_1_ = pool.pool[0x28];\n    block[10]._1_1_ = pool.pool[0x29];\n    block[10]._2_1_ = pool.pool[0x2a];\n    block[10]._3_1_ = pool.pool[0x2b];\n    block[0xb]._0_1_ = pool.pool[0x2c];\n    block[0xb]._1_1_ = pool.pool[0x2d];\n    block[0xb]._2_1_ = pool.pool[0x2e];\n    block[0xb]._3_1_ = pool.pool[0x2f];\n    block[0xc]._0_1_ = pool.pool[0x30];\n    block[0xc]._1_1_ = pool.pool[0x31];\n    block[0xc]._2_1_ = pool.pool[0x32];\n    block[0xc]._3_1_ = pool.pool[0x33];\n    block[0xd]._0_1_ = pool.pool[0x34];\n    block[0xd]._1_1_ = pool.pool[0x35];\n    block[0xd]._2_1_ = pool.pool[0x36];\n    block[0xd]._3_1_ = pool.pool[0x37];\n    block[0xe]._0_1_ = pool.pool[0x38];\n    block[0xe]._1_1_ = pool.pool[0x39];\n    block[0xe]._2_1_ = pool.pool[0x3a];\n    block[0xe]._3_1_ = pool.pool[0x3b];\n    block[0xf]._0_1_ = pool.pool[0x3c];\n    block[0xf]._1_1_ = pool.pool[0x3d];\n    block[0xf]._2_1_ = pool.pool[0x3e];\n    block[0xf]._3_1_ = pool.pool[0x3f];\n    pwVar2 = digest;\n    pRVar4 = (RandPool *)(pool.pool + 0x49c);\n    pRVar5 = (RandPool *)(pool.pool + 0x49c);\n    do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" { (expression_statement "block[0]._0_1_ = pool.pool[0];" (assignment_expression "block[0]._0_1_ = pool.pool[0]" (field_expression "block[0]._0_1_" (subscript_expression "block[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0]._1_1_ = pool.pool[1];" (assignment_expression "block[0]._1_1_ = pool.pool[1]" (field_expression "block[0]._1_1_" (subscript_expression "block[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[1]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0]._2_1_ = pool.pool[2];" (assignment_expression "block[0]._2_1_ = pool.pool[2]" (field_expression "block[0]._2_1_" (subscript_expression "block[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[2]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0]._3_1_ = pool.pool[3];" (assignment_expression "block[0]._3_1_ = pool.pool[3]" (field_expression "block[0]._3_1_" (subscript_expression "block[0]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[3]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[1]._0_1_ = pool.pool[4];" (assignment_expression "block[1]._0_1_ = pool.pool[4]" (field_expression "block[1]._0_1_" (subscript_expression "block[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[4]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[1]._1_1_ = pool.pool[5];" (assignment_expression "block[1]._1_1_ = pool.pool[5]" (field_expression "block[1]._1_1_" (subscript_expression "block[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[5]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[1]._2_1_ = pool.pool[6];" (assignment_expression "block[1]._2_1_ = pool.pool[6]" (field_expression "block[1]._2_1_" (subscript_expression "block[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[6]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[1]._3_1_ = pool.pool[7];" (assignment_expression "block[1]._3_1_ = pool.pool[7]" (field_expression "block[1]._3_1_" (subscript_expression "block[1]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[7]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[2]._0_1_ = pool.pool[8];" (assignment_expression "block[2]._0_1_ = pool.pool[8]" (field_expression "block[2]._0_1_" (subscript_expression "block[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[8]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[2]._1_1_ = pool.pool[9];" (assignment_expression "block[2]._1_1_ = pool.pool[9]" (field_expression "block[2]._1_1_" (subscript_expression "block[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[9]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[2]._2_1_ = pool.pool[10];" (assignment_expression "block[2]._2_1_ = pool.pool[10]" (field_expression "block[2]._2_1_" (subscript_expression "block[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[10]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[2]._3_1_ = pool.pool[0xb];" (assignment_expression "block[2]._3_1_ = pool.pool[0xb]" (field_expression "block[2]._3_1_" (subscript_expression "block[2]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0xb]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[3]._0_1_ = pool.pool[0xc];" (assignment_expression "block[3]._0_1_ = pool.pool[0xc]" (field_expression "block[3]._0_1_" (subscript_expression "block[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0xc]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[3]._1_1_ = pool.pool[0xd];" (assignment_expression "block[3]._1_1_ = pool.pool[0xd]" (field_expression "block[3]._1_1_" (subscript_expression "block[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0xd]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[3]._2_1_ = pool.pool[0xe];" (assignment_expression "block[3]._2_1_ = pool.pool[0xe]" (field_expression "block[3]._2_1_" (subscript_expression "block[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0xe]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[3]._3_1_ = pool.pool[0xf];" (assignment_expression "block[3]._3_1_ = pool.pool[0xf]" (field_expression "block[3]._3_1_" (subscript_expression "block[3]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0xf]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[4]._0_1_ = pool.pool[0x10];" (assignment_expression "block[4]._0_1_ = pool.pool[0x10]" (field_expression "block[4]._0_1_" (subscript_expression "block[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x10]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[4]._1_1_ = pool.pool[0x11];" (assignment_expression "block[4]._1_1_ = pool.pool[0x11]" (field_expression "block[4]._1_1_" (subscript_expression "block[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x11]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[4]._2_1_ = pool.pool[0x12];" (assignment_expression "block[4]._2_1_ = pool.pool[0x12]" (field_expression "block[4]._2_1_" (subscript_expression "block[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x12]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[4]._3_1_ = pool.pool[0x13];" (assignment_expression "block[4]._3_1_ = pool.pool[0x13]" (field_expression "block[4]._3_1_" (subscript_expression "block[4]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x13]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[5]._0_1_ = pool.pool[0x14];" (assignment_expression "block[5]._0_1_ = pool.pool[0x14]" (field_expression "block[5]._0_1_" (subscript_expression "block[5]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x14]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[5]._1_1_ = pool.pool[0x15];" (assignment_expression "block[5]._1_1_ = pool.pool[0x15]" (field_expression "block[5]._1_1_" (subscript_expression "block[5]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x15]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[5]._2_1_ = pool.pool[0x16];" (assignment_expression "block[5]._2_1_ = pool.pool[0x16]" (field_expression "block[5]._2_1_" (subscript_expression "block[5]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x16]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[5]._3_1_ = pool.pool[0x17];" (assignment_expression "block[5]._3_1_ = pool.pool[0x17]" (field_expression "block[5]._3_1_" (subscript_expression "block[5]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x17]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[6]._0_1_ = pool.pool[0x18];" (assignment_expression "block[6]._0_1_ = pool.pool[0x18]" (field_expression "block[6]._0_1_" (subscript_expression "block[6]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x18]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[6]._1_1_ = pool.pool[0x19];" (assignment_expression "block[6]._1_1_ = pool.pool[0x19]" (field_expression "block[6]._1_1_" (subscript_expression "block[6]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x19]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[6]._2_1_ = pool.pool[0x1a];" (assignment_expression "block[6]._2_1_ = pool.pool[0x1a]" (field_expression "block[6]._2_1_" (subscript_expression "block[6]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1a]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[6]._3_1_ = pool.pool[0x1b];" (assignment_expression "block[6]._3_1_ = pool.pool[0x1b]" (field_expression "block[6]._3_1_" (subscript_expression "block[6]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1b]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[7]._0_1_ = pool.pool[0x1c];" (assignment_expression "block[7]._0_1_ = pool.pool[0x1c]" (field_expression "block[7]._0_1_" (subscript_expression "block[7]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1c]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[7]._1_1_ = pool.pool[0x1d];" (assignment_expression "block[7]._1_1_ = pool.pool[0x1d]" (field_expression "block[7]._1_1_" (subscript_expression "block[7]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1d]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[7]._2_1_ = pool.pool[0x1e];" (assignment_expression "block[7]._2_1_ = pool.pool[0x1e]" (field_expression "block[7]._2_1_" (subscript_expression "block[7]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1e]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[7]._3_1_ = pool.pool[0x1f];" (assignment_expression "block[7]._3_1_ = pool.pool[0x1f]" (field_expression "block[7]._3_1_" (subscript_expression "block[7]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x1f]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[8]._0_1_ = pool.pool[0x20];" (assignment_expression "block[8]._0_1_ = pool.pool[0x20]" (field_expression "block[8]._0_1_" (subscript_expression "block[8]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x20]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[8]._1_1_ = pool.pool[0x21];" (assignment_expression "block[8]._1_1_ = pool.pool[0x21]" (field_expression "block[8]._1_1_" (subscript_expression "block[8]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x21]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[8]._2_1_ = pool.pool[0x22];" (assignment_expression "block[8]._2_1_ = pool.pool[0x22]" (field_expression "block[8]._2_1_" (subscript_expression "block[8]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x22]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[8]._3_1_ = pool.pool[0x23];" (assignment_expression "block[8]._3_1_ = pool.pool[0x23]" (field_expression "block[8]._3_1_" (subscript_expression "block[8]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x23]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[9]._0_1_ = pool.pool[0x24];" (assignment_expression "block[9]._0_1_ = pool.pool[0x24]" (field_expression "block[9]._0_1_" (subscript_expression "block[9]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x24]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[9]._1_1_ = pool.pool[0x25];" (assignment_expression "block[9]._1_1_ = pool.pool[0x25]" (field_expression "block[9]._1_1_" (subscript_expression "block[9]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x25]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[9]._2_1_ = pool.pool[0x26];" (assignment_expression "block[9]._2_1_ = pool.pool[0x26]" (field_expression "block[9]._2_1_" (subscript_expression "block[9]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x26]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[9]._3_1_ = pool.pool[0x27];" (assignment_expression "block[9]._3_1_ = pool.pool[0x27]" (field_expression "block[9]._3_1_" (subscript_expression "block[9]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x27]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[10]._0_1_ = pool.pool[0x28];" (assignment_expression "block[10]._0_1_ = pool.pool[0x28]" (field_expression "block[10]._0_1_" (subscript_expression "block[10]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x28]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[10]._1_1_ = pool.pool[0x29];" (assignment_expression "block[10]._1_1_ = pool.pool[0x29]" (field_expression "block[10]._1_1_" (subscript_expression "block[10]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x29]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[10]._2_1_ = pool.pool[0x2a];" (assignment_expression "block[10]._2_1_ = pool.pool[0x2a]" (field_expression "block[10]._2_1_" (subscript_expression "block[10]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2a]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[10]._3_1_ = pool.pool[0x2b];" (assignment_expression "block[10]._3_1_ = pool.pool[0x2b]" (field_expression "block[10]._3_1_" (subscript_expression "block[10]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2b]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xb]._0_1_ = pool.pool[0x2c];" (assignment_expression "block[0xb]._0_1_ = pool.pool[0x2c]" (field_expression "block[0xb]._0_1_" (subscript_expression "block[0xb]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2c]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xb]._1_1_ = pool.pool[0x2d];" (assignment_expression "block[0xb]._1_1_ = pool.pool[0x2d]" (field_expression "block[0xb]._1_1_" (subscript_expression "block[0xb]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2d]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xb]._2_1_ = pool.pool[0x2e];" (assignment_expression "block[0xb]._2_1_ = pool.pool[0x2e]" (field_expression "block[0xb]._2_1_" (subscript_expression "block[0xb]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2e]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xb]._3_1_ = pool.pool[0x2f];" (assignment_expression "block[0xb]._3_1_ = pool.pool[0x2f]" (field_expression "block[0xb]._3_1_" (subscript_expression "block[0xb]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x2f]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xc]._0_1_ = pool.pool[0x30];" (assignment_expression "block[0xc]._0_1_ = pool.pool[0x30]" (field_expression "block[0xc]._0_1_" (subscript_expression "block[0xc]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x30]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xc]._1_1_ = pool.pool[0x31];" (assignment_expression "block[0xc]._1_1_ = pool.pool[0x31]" (field_expression "block[0xc]._1_1_" (subscript_expression "block[0xc]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x31]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xc]._2_1_ = pool.pool[0x32];" (assignment_expression "block[0xc]._2_1_ = pool.pool[0x32]" (field_expression "block[0xc]._2_1_" (subscript_expression "block[0xc]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x32]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xc]._3_1_ = pool.pool[0x33];" (assignment_expression "block[0xc]._3_1_ = pool.pool[0x33]" (field_expression "block[0xc]._3_1_" (subscript_expression "block[0xc]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x33]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xd]._0_1_ = pool.pool[0x34];" (assignment_expression "block[0xd]._0_1_ = pool.pool[0x34]" (field_expression "block[0xd]._0_1_" (subscript_expression "block[0xd]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x34]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xd]._1_1_ = pool.pool[0x35];" (assignment_expression "block[0xd]._1_1_ = pool.pool[0x35]" (field_expression "block[0xd]._1_1_" (subscript_expression "block[0xd]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x35]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xd]._2_1_ = pool.pool[0x36];" (assignment_expression "block[0xd]._2_1_ = pool.pool[0x36]" (field_expression "block[0xd]._2_1_" (subscript_expression "block[0xd]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x36]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xd]._3_1_ = pool.pool[0x37];" (assignment_expression "block[0xd]._3_1_ = pool.pool[0x37]" (field_expression "block[0xd]._3_1_" (subscript_expression "block[0xd]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x37]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xe]._0_1_ = pool.pool[0x38];" (assignment_expression "block[0xe]._0_1_ = pool.pool[0x38]" (field_expression "block[0xe]._0_1_" (subscript_expression "block[0xe]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x38]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xe]._1_1_ = pool.pool[0x39];" (assignment_expression "block[0xe]._1_1_ = pool.pool[0x39]" (field_expression "block[0xe]._1_1_" (subscript_expression "block[0xe]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x39]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xe]._2_1_ = pool.pool[0x3a];" (assignment_expression "block[0xe]._2_1_ = pool.pool[0x3a]" (field_expression "block[0xe]._2_1_" (subscript_expression "block[0xe]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3a]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xe]._3_1_ = pool.pool[0x3b];" (assignment_expression "block[0xe]._3_1_ = pool.pool[0x3b]" (field_expression "block[0xe]._3_1_" (subscript_expression "block[0xe]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3b]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xf]._0_1_ = pool.pool[0x3c];" (assignment_expression "block[0xf]._0_1_ = pool.pool[0x3c]" (field_expression "block[0xf]._0_1_" (subscript_expression "block[0xf]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3c]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xf]._1_1_ = pool.pool[0x3d];" (assignment_expression "block[0xf]._1_1_ = pool.pool[0x3d]" (field_expression "block[0xf]._1_1_" (subscript_expression "block[0xf]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3d]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xf]._2_1_ = pool.pool[0x3e];" (assignment_expression "block[0xf]._2_1_ = pool.pool[0x3e]" (field_expression "block[0xf]._2_1_" (subscript_expression "block[0xf]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3e]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "block[0xf]._3_1_ = pool.pool[0x3f];" (assignment_expression "block[0xf]._3_1_ = pool.pool[0x3f]" (field_expression "block[0xf]._3_1_" (subscript_expression "block[0xf]" identifier [ number_literal ]) . field_identifier) = (subscript_expression "pool.pool[0x3f]" (field_expression "pool.pool" identifier . field_identifier) [ number_literal ])) ;) (expression_statement "pwVar2 = digest;" (assignment_expression "pwVar2 = digest" identifier = identifier) ;) (expression_statement "pRVar4 = (RandPool *)(pool.pool + 0x49c);" (assignment_expression "pRVar4 = (RandPool *)(pool.pool + 0x49c)" identifier = (cast_expression "(RandPool *)(pool.pool + 0x49c)" ( (type_descriptor "RandPool *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pool.pool + 0x49c)" ( (binary_expression "pool.pool + 0x49c" (field_expression "pool.pool" identifier . field_identifier) + number_literal) )))) ;) (expression_statement "pRVar5 = (RandPool *)(pool.pool + 0x49c);" (assignment_expression "pRVar5 = (RandPool *)(pool.pool + 0x49c)" identifier = (cast_expression "(RandPool *)(pool.pool + 0x49c)" ( (type_descriptor "RandPool *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pool.pool + 0x49c)" ( (binary_expression "pool.pool + 0x49c" (field_expression "pool.pool" identifier . field_identifier) + number_literal) )))) ;) (do_statement "do {\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    } while (bVar6);" do (compound_statement "{\n      do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);\n      SHATransform(digest,block);\n      iVar3 = 0;\n      do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);\n      pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);\n      bVar6 = pRVar5 != &pool;\n      pwVar2 = digest;\n      pRVar5 = pRVar4;\n    }" { (do_statement "do {\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      } while (pwVar2 != block);" do (compound_statement "{\n        *pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;\n        pwVar2 = pwVar2 + 1;\n        pRVar4 = (RandPool *)(pRVar4->pool + 4);\n      }" { (expression_statement "*pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool;" (assignment_expression "*pwVar2 = *pwVar2 ^ *(uint *)pRVar4->pool" (pointer_expression "*pwVar2" * identifier) = (binary_expression "*pwVar2 ^ *(uint *)pRVar4->pool" (pointer_expression "*pwVar2" * identifier) ^ (pointer_expression "*(uint *)pRVar4->pool" * (cast_expression "(uint *)pRVar4->pool" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pRVar4->pool" identifier -> field_identifier))))) ;) (expression_statement "pwVar2 = pwVar2 + 1;" (assignment_expression "pwVar2 = pwVar2 + 1" identifier = (binary_expression "pwVar2 + 1" identifier + number_literal)) ;) (expression_statement "pRVar4 = (RandPool *)(pRVar4->pool + 4);" (assignment_expression "pRVar4 = (RandPool *)(pRVar4->pool + 4)" identifier = (cast_expression "(RandPool *)(pRVar4->pool + 4)" ( (type_descriptor "RandPool *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pRVar4->pool + 4)" ( (binary_expression "pRVar4->pool + 4" (field_expression "pRVar4->pool" identifier -> field_identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pwVar2 != block)" ( (binary_expression "pwVar2 != block" identifier != identifier) )) ;) (expression_statement "SHATransform(digest,block);" (call_expression "SHATransform(digest,block)" identifier (argument_list "(digest,block)" ( identifier , identifier ))) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      } while (iVar3 != 5);" do (compound_statement "{\n        *(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];\n        iVar3 = iVar3 + 1;\n      }" { (expression_statement "*(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3];" (assignment_expression "*(word32 *)(pRVar5->pool + iVar3 * 4) = digest[iVar3]" (pointer_expression "*(word32 *)(pRVar5->pool + iVar3 * 4)" * (cast_expression "(word32 *)(pRVar5->pool + iVar3 * 4)" ( (type_descriptor "word32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pRVar5->pool + iVar3 * 4)" ( (binary_expression "pRVar5->pool + iVar3 * 4" (field_expression "pRVar5->pool" identifier -> field_identifier) + (binary_expression "iVar3 * 4" identifier * number_literal)) )))) = (subscript_expression "digest[iVar3]" identifier [ identifier ])) ;) (expression_statement "iVar3 = iVar3 + 1;" (assignment_expression "iVar3 = iVar3 + 1" identifier = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar3 != 5)" ( (binary_expression "iVar3 != 5" identifier != number_literal) )) ;) (expression_statement "pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34);" (assignment_expression "pRVar4 = (RandPool *)(pRVar5[-1].incomingb + 0x34)" identifier = (cast_expression "(RandPool *)(pRVar5[-1].incomingb + 0x34)" ( (type_descriptor "RandPool *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pRVar5[-1].incomingb + 0x34)" ( (binary_expression "pRVar5[-1].incomingb + 0x34" (field_expression "pRVar5[-1].incomingb" (subscript_expression "pRVar5[-1]" identifier [ number_literal ]) . field_identifier) + number_literal) )))) ;) (expression_statement "bVar6 = pRVar5 != &pool;" (assignment_expression "bVar6 = pRVar5 != &pool" identifier = (binary_expression "pRVar5 != &pool" identifier != (pointer_expression "&pool" & identifier))) ;) (expression_statement "pwVar2 = digest;" (assignment_expression "pwVar2 = digest" identifier = identifier) ;) (expression_statement "pRVar5 = pRVar4;" (assignment_expression "pRVar5 = pRVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar6)" ( identifier )) ;) (if_statement "if (local_c4 == 1) break;" if (parenthesized_expression "(local_c4 == 1)" ( (binary_expression "local_c4 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_c4 = 1;" (assignment_expression "local_c4 = 1" identifier = number_literal) ;) })) (expression_statement "SHATransform(digest,block);" (call_expression "SHATransform(digest,block)" identifier (argument_list "(digest,block)" ( identifier , identifier ))) ;) (expression_statement "pool.poolpos = 0x14;" (assignment_expression "pool.poolpos = 0x14" (field_expression "pool.poolpos" identifier . field_identifier) = number_literal) ;) (expression_statement "pool.stir_pending = 0;" (assignment_expression "pool.stir_pending = 0" (field_expression "pool.stir_pending" identifier . field_identifier) = number_literal) ;) (expression_statement "pool.incoming[0] = (undefined1)digest[0];" (assignment_expression "pool.incoming[0] = (undefined1)digest[0]" (subscript_expression "pool.incoming[0]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (cast_expression "(undefined1)digest[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "digest[0]" identifier [ number_literal ]))) ;) (expression_statement "pool.incoming[1] = digest[0]._1_1_;" (assignment_expression "pool.incoming[1] = digest[0]._1_1_" (subscript_expression "pool.incoming[1]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[0]._1_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[2] = digest[0]._2_1_;" (assignment_expression "pool.incoming[2] = digest[0]._2_1_" (subscript_expression "pool.incoming[2]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[0]._2_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[3] = digest[0]._3_1_;" (assignment_expression "pool.incoming[3] = digest[0]._3_1_" (subscript_expression "pool.incoming[3]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[0]._3_1_" (subscript_expression "digest[0]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[4] = (undefined1)digest[1];" (assignment_expression "pool.incoming[4] = (undefined1)digest[1]" (subscript_expression "pool.incoming[4]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (cast_expression "(undefined1)digest[1]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "digest[1]" identifier [ number_literal ]))) ;) (expression_statement "pool.incoming[5] = digest[1]._1_1_;" (assignment_expression "pool.incoming[5] = digest[1]._1_1_" (subscript_expression "pool.incoming[5]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[1]._1_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[6] = digest[1]._2_1_;" (assignment_expression "pool.incoming[6] = digest[1]._2_1_" (subscript_expression "pool.incoming[6]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[1]._2_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[7] = digest[1]._3_1_;" (assignment_expression "pool.incoming[7] = digest[1]._3_1_" (subscript_expression "pool.incoming[7]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[1]._3_1_" (subscript_expression "digest[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[8] = (undefined1)digest[2];" (assignment_expression "pool.incoming[8] = (undefined1)digest[2]" (subscript_expression "pool.incoming[8]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (cast_expression "(undefined1)digest[2]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "digest[2]" identifier [ number_literal ]))) ;) (expression_statement "pool.incoming[9] = digest[2]._1_1_;" (assignment_expression "pool.incoming[9] = digest[2]._1_1_" (subscript_expression "pool.incoming[9]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[2]._1_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[10] = digest[2]._2_1_;" (assignment_expression "pool.incoming[10] = digest[2]._2_1_" (subscript_expression "pool.incoming[10]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[2]._2_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0xb] = digest[2]._3_1_;" (assignment_expression "pool.incoming[0xb] = digest[2]._3_1_" (subscript_expression "pool.incoming[0xb]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[2]._3_1_" (subscript_expression "digest[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0xc] = (undefined1)digest[3];" (assignment_expression "pool.incoming[0xc] = (undefined1)digest[3]" (subscript_expression "pool.incoming[0xc]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (cast_expression "(undefined1)digest[3]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "digest[3]" identifier [ number_literal ]))) ;) (expression_statement "pool.incoming[0xd] = digest[3]._1_1_;" (assignment_expression "pool.incoming[0xd] = digest[3]._1_1_" (subscript_expression "pool.incoming[0xd]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[3]._1_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0xe] = digest[3]._2_1_;" (assignment_expression "pool.incoming[0xe] = digest[3]._2_1_" (subscript_expression "pool.incoming[0xe]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[3]._2_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0xf] = digest[3]._3_1_;" (assignment_expression "pool.incoming[0xf] = digest[3]._3_1_" (subscript_expression "pool.incoming[0xf]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[3]._3_1_" (subscript_expression "digest[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0x10] = (undefined1)digest[4];" (assignment_expression "pool.incoming[0x10] = (undefined1)digest[4]" (subscript_expression "pool.incoming[0x10]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (cast_expression "(undefined1)digest[4]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "digest[4]" identifier [ number_literal ]))) ;) (expression_statement "pool.incoming[0x11] = digest[4]._1_1_;" (assignment_expression "pool.incoming[0x11] = digest[4]._1_1_" (subscript_expression "pool.incoming[0x11]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[4]._1_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0x12] = digest[4]._2_1_;" (assignment_expression "pool.incoming[0x12] = digest[4]._2_1_" (subscript_expression "pool.incoming[0x12]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[4]._2_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "pool.incoming[0x13] = digest[4]._3_1_;" (assignment_expression "pool.incoming[0x13] = digest[4]._3_1_" (subscript_expression "pool.incoming[0x13]" (field_expression "pool.incoming" identifier . field_identifier) [ number_literal ]) = (field_expression "digest[4]._3_1_" (subscript_expression "digest[4]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (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_00057690(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00057690(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00057690(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }\n  return;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_c4;" primitive_type identifier ;) (declaration "uint local_74 [5];" type_identifier (array_declarator "local_74 [5]" identifier [ number_literal ]) ;) (declaration "uint local_60;" type_identifier identifier ;) (declaration "undefined4 local_5c;" type_identifier identifier ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined4 local_4c;" type_identifier identifier ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "undefined4 local_44;" type_identifier identifier ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "undefined4 local_38;" type_identifier identifier ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x57699;" (assignment_expression "uStack_14 = 0x57699" identifier = number_literal) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "DAT_000aaa8c = 1;" (assignment_expression "DAT_000aaa8c = 1" identifier = number_literal) ;) (expression_statement "FUN_00068ac0(FUN_00057a50);" (call_expression "FUN_00068ac0(FUN_00057a50)" identifier (argument_list "(FUN_00057a50)" ( identifier ))) ;) (expression_statement "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);" (call_expression "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48)" identifier (argument_list "(&DAT_000aaa34,&DAT_000aaa48)" ( (pointer_expression "&DAT_000aaa34" & identifier) , (pointer_expression "&DAT_000aaa48" & identifier) ))) ;) (expression_statement "DAT_000aaa88 = 0;" (assignment_expression "DAT_000aaa88 = 0" identifier = number_literal) ;) (expression_statement "local_74[0] = DAT_000aaa34;" (assignment_expression "local_74[0] = DAT_000aaa34" (subscript_expression "local_74[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[1] = DAT_000aaa38;" (assignment_expression "local_74[1] = DAT_000aaa38" (subscript_expression "local_74[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[2] = DAT_000aaa3c;" (assignment_expression "local_74[2] = DAT_000aaa3c" (subscript_expression "local_74[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[3] = DAT_000aaa40;" (assignment_expression "local_74[3] = DAT_000aaa40" (subscript_expression "local_74[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74[4] = DAT_000aaa44;" (assignment_expression "local_74[4] = DAT_000aaa44" (subscript_expression "local_74[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_c4 = 2;" (assignment_expression "local_c4 = 2" identifier = number_literal) ;) (while_statement "while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" { (expression_statement "local_60 = DAT_000aa580;" (assignment_expression "local_60 = DAT_000aa580" identifier = identifier) ;) (expression_statement "local_5c = DAT_000aa584;" (assignment_expression "local_5c = DAT_000aa584" identifier = identifier) ;) (expression_statement "local_58 = DAT_000aa588;" (assignment_expression "local_58 = DAT_000aa588" identifier = identifier) ;) (expression_statement "local_54 = DAT_000aa58c;" (assignment_expression "local_54 = DAT_000aa58c" identifier = identifier) ;) (expression_statement "local_50 = DAT_000aa590;" (assignment_expression "local_50 = DAT_000aa590" identifier = identifier) ;) (expression_statement "local_4c = DAT_000aa594;" (assignment_expression "local_4c = DAT_000aa594" identifier = identifier) ;) (expression_statement "local_48 = DAT_000aa598;" (assignment_expression "local_48 = DAT_000aa598" identifier = identifier) ;) (expression_statement "local_44 = DAT_000aa59c;" (assignment_expression "local_44 = DAT_000aa59c" identifier = identifier) ;) (expression_statement "local_40 = DAT_000aa5a0;" (assignment_expression "local_40 = DAT_000aa5a0" identifier = identifier) ;) (expression_statement "local_3c = DAT_000aa5a4;" (assignment_expression "local_3c = DAT_000aa5a4" identifier = identifier) ;) (expression_statement "local_38 = DAT_000aa5a8;" (assignment_expression "local_38 = DAT_000aa5a8" identifier = identifier) ;) (expression_statement "local_34 = DAT_000aa5ac;" (assignment_expression "local_34 = DAT_000aa5ac" identifier = identifier) ;) (expression_statement "local_30 = DAT_000aa5b0;" (assignment_expression "local_30 = DAT_000aa5b0" identifier = identifier) ;) (expression_statement "local_2c = DAT_000aa5b4;" (assignment_expression "local_2c = DAT_000aa5b4" identifier = identifier) ;) (expression_statement "local_28 = DAT_000aa5b8;" (assignment_expression "local_28 = DAT_000aa5b8" identifier = identifier) ;) (expression_statement "local_24 = DAT_000aa5bc;" (assignment_expression "local_24 = DAT_000aa5bc" identifier = identifier) ;) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" identifier = identifier) ;) (expression_statement "puVar3 = &DAT_000aaa1c;" (assignment_expression "puVar3 = &DAT_000aaa1c" identifier = (pointer_expression "&DAT_000aaa1c" & identifier)) ;) (expression_statement "puVar4 = &DAT_000aaa1c;" (assignment_expression "puVar4 = &DAT_000aaa1c" identifier = (pointer_expression "&DAT_000aaa1c" & identifier)) ;) (do_statement "do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);" do (compound_statement "{\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    }" { (do_statement "do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);" do (compound_statement "{\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      }" { (expression_statement "*puVar1 = *puVar1 ^ *puVar3;" (assignment_expression "*puVar1 = *puVar1 ^ *puVar3" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 ^ *puVar3" (pointer_expression "*puVar1" * identifier) ^ (pointer_expression "*puVar3" * identifier))) ;) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" identifier = (binary_expression "puVar1 + 1" identifier + number_literal)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar1 != &local_60)" ( (binary_expression "puVar1 != &local_60" identifier != (pointer_expression "&local_60" & identifier)) )) ;) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" identifier (argument_list "(local_74,&local_60)" ( identifier , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);" do (compound_statement "{\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      }" { (expression_statement "puVar4[iVar2] = local_74[iVar2];" (assignment_expression "puVar4[iVar2] = local_74[iVar2]" (subscript_expression "puVar4[iVar2]" identifier [ identifier ]) = (subscript_expression "local_74[iVar2]" identifier [ identifier ])) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar2 != 5)" ( (binary_expression "iVar2 != 5" identifier != number_literal) )) ;) (expression_statement "puVar3 = puVar4 + -5;" (assignment_expression "puVar3 = puVar4 + -5" identifier = (binary_expression "puVar4 + -5" identifier + number_literal)) ;) (expression_statement "bVar5 = puVar4 != &DAT_000aa580;" (assignment_expression "bVar5 = puVar4 != &DAT_000aa580" identifier = (binary_expression "puVar4 != &DAT_000aa580" identifier != (pointer_expression "&DAT_000aa580" & identifier))) ;) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" identifier = identifier) ;) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" identifier = identifier) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) (if_statement "if (local_c4 == 1) break;" if (parenthesized_expression "(local_c4 == 1)" ( (binary_expression "local_c4 == 1" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "local_c4 = 1;" (assignment_expression "local_c4 = 1" identifier = number_literal) ;) })) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" identifier (argument_list "(local_74,&local_60)" ( identifier , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "DAT_000aaa30 = 0x14;" (assignment_expression "DAT_000aaa30 = 0x14" identifier = number_literal) ;) (expression_statement "DAT_000aaa8c = 0;" (assignment_expression "DAT_000aaa8c = 0" identifier = number_literal) ;) (expression_statement "DAT_000aaa34 = local_74[0];" (assignment_expression "DAT_000aaa34 = local_74[0]" identifier = (subscript_expression "local_74[0]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa38 = local_74[1];" (assignment_expression "DAT_000aaa38 = local_74[1]" identifier = (subscript_expression "local_74[1]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa3c = local_74[2];" (assignment_expression "DAT_000aaa3c = local_74[2]" identifier = (subscript_expression "local_74[2]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa40 = local_74[3];" (assignment_expression "DAT_000aaa40 = local_74[3]" identifier = (subscript_expression "local_74[3]" identifier [ number_literal ])) ;) (expression_statement "DAT_000aaa44 = local_74[4];" (assignment_expression "DAT_000aaa44 = local_74[4]" identifier = (subscript_expression "local_74[4]" identifier [ number_literal ])) ;) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0006f430();\n  }" { (expression_statement "FUN_0006f430();" (call_expression "FUN_0006f430()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (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 = 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) ;) (expression_statement (assignment_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) ;) (expression_statement (assignment_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 = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression & IDENT)) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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 ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (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_00057690(void)\n\n{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00057690(void)" (identifier "FUN_00057690") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int iVar2;\n  uint *puVar3;\n  uint *puVar4;\n  int in_GS_OFFSET;\n  bool bVar5;\n  int local_c4;\n  uint local_74 [5];\n  uint local_60;\n  undefined4 local_5c;\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined4 local_4c;\n  undefined4 local_48;\n  undefined4 local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  undefined4 local_38;\n  undefined4 local_34;\n  undefined4 local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x57699;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  DAT_000aaa8c = 1;\n  FUN_00068ac0(FUN_00057a50);\n  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);\n  DAT_000aaa88 = 0;\n  local_74[0] = DAT_000aaa34;\n  local_74[1] = DAT_000aaa38;\n  local_74[2] = DAT_000aaa3c;\n  local_74[3] = DAT_000aaa40;\n  local_74[4] = DAT_000aaa44;\n  local_c4 = 2;\n  while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }\n  FUN_0005cdb0(local_74,&local_60);\n  DAT_000aaa30 = 0x14;\n  DAT_000aaa8c = 0;\n  DAT_000aaa34 = local_74[0];\n  DAT_000aaa38 = local_74[1];\n  DAT_000aaa3c = local_74[2];\n  DAT_000aaa40 = local_74[3];\n  DAT_000aaa44 = local_74[4];\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }\n  return;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "int local_c4;" (primitive_type "int") (identifier "local_c4") (; ";")) (declaration "uint local_74 [5];" (type_identifier "uint") (array_declarator "local_74 [5]" (identifier "local_74") ([ "[") (number_literal "5") (] "]")) (; ";")) (declaration "uint local_60;" (type_identifier "uint") (identifier "local_60") (; ";")) (declaration "undefined4 local_5c;" (type_identifier "undefined4") (identifier "local_5c") (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined4 local_4c;" (type_identifier "undefined4") (identifier "local_4c") (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "undefined4 local_44;" (type_identifier "undefined4") (identifier "local_44") (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "undefined4 local_38;" (type_identifier "undefined4") (identifier "local_38") (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x57699;" (assignment_expression "uStack_14 = 0x57699" (identifier "uStack_14") (= "=") (number_literal "0x57699")) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "DAT_000aaa8c = 1;" (assignment_expression "DAT_000aaa8c = 1" (identifier "DAT_000aaa8c") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00068ac0(FUN_00057a50);" (call_expression "FUN_00068ac0(FUN_00057a50)" (identifier "FUN_00068ac0") (argument_list "(FUN_00057a50)" (( "(") (identifier "FUN_00057a50") () ")"))) (; ";")) (expression_statement "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);" (call_expression "FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48)" (identifier "FUN_0005cdb0") (argument_list "(&DAT_000aaa34,&DAT_000aaa48)" (( "(") (pointer_expression "&DAT_000aaa34" (& "&") (identifier "DAT_000aaa34")) (, ",") (pointer_expression "&DAT_000aaa48" (& "&") (identifier "DAT_000aaa48")) () ")"))) (; ";")) (expression_statement "DAT_000aaa88 = 0;" (assignment_expression "DAT_000aaa88 = 0" (identifier "DAT_000aaa88") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_74[0] = DAT_000aaa34;" (assignment_expression "local_74[0] = DAT_000aaa34" (subscript_expression "local_74[0]" (identifier "local_74") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "DAT_000aaa34")) (; ";")) (expression_statement "local_74[1] = DAT_000aaa38;" (assignment_expression "local_74[1] = DAT_000aaa38" (subscript_expression "local_74[1]" (identifier "local_74") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "DAT_000aaa38")) (; ";")) (expression_statement "local_74[2] = DAT_000aaa3c;" (assignment_expression "local_74[2] = DAT_000aaa3c" (subscript_expression "local_74[2]" (identifier "local_74") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "DAT_000aaa3c")) (; ";")) (expression_statement "local_74[3] = DAT_000aaa40;" (assignment_expression "local_74[3] = DAT_000aaa40" (subscript_expression "local_74[3]" (identifier "local_74") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "DAT_000aaa40")) (; ";")) (expression_statement "local_74[4] = DAT_000aaa44;" (assignment_expression "local_74[4] = DAT_000aaa44" (subscript_expression "local_74[4]" (identifier "local_74") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "DAT_000aaa44")) (; ";")) (expression_statement "local_c4 = 2;" (assignment_expression "local_c4 = 2" (identifier "local_c4") (= "=") (number_literal "2")) (; ";")) (while_statement "while( true ) {\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    local_60 = DAT_000aa580;\n    local_5c = DAT_000aa584;\n    local_58 = DAT_000aa588;\n    local_54 = DAT_000aa58c;\n    local_50 = DAT_000aa590;\n    local_4c = DAT_000aa594;\n    local_48 = DAT_000aa598;\n    local_44 = DAT_000aa59c;\n    local_40 = DAT_000aa5a0;\n    local_3c = DAT_000aa5a4;\n    local_38 = DAT_000aa5a8;\n    local_34 = DAT_000aa5ac;\n    local_30 = DAT_000aa5b0;\n    local_2c = DAT_000aa5b4;\n    local_28 = DAT_000aa5b8;\n    local_24 = DAT_000aa5bc;\n    puVar1 = local_74;\n    puVar3 = &DAT_000aaa1c;\n    puVar4 = &DAT_000aaa1c;\n    do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);\n    if (local_c4 == 1) break;\n    local_c4 = 1;\n  }" ({ "{") (expression_statement "local_60 = DAT_000aa580;" (assignment_expression "local_60 = DAT_000aa580" (identifier "local_60") (= "=") (identifier "DAT_000aa580")) (; ";")) (expression_statement "local_5c = DAT_000aa584;" (assignment_expression "local_5c = DAT_000aa584" (identifier "local_5c") (= "=") (identifier "DAT_000aa584")) (; ";")) (expression_statement "local_58 = DAT_000aa588;" (assignment_expression "local_58 = DAT_000aa588" (identifier "local_58") (= "=") (identifier "DAT_000aa588")) (; ";")) (expression_statement "local_54 = DAT_000aa58c;" (assignment_expression "local_54 = DAT_000aa58c" (identifier "local_54") (= "=") (identifier "DAT_000aa58c")) (; ";")) (expression_statement "local_50 = DAT_000aa590;" (assignment_expression "local_50 = DAT_000aa590" (identifier "local_50") (= "=") (identifier "DAT_000aa590")) (; ";")) (expression_statement "local_4c = DAT_000aa594;" (assignment_expression "local_4c = DAT_000aa594" (identifier "local_4c") (= "=") (identifier "DAT_000aa594")) (; ";")) (expression_statement "local_48 = DAT_000aa598;" (assignment_expression "local_48 = DAT_000aa598" (identifier "local_48") (= "=") (identifier "DAT_000aa598")) (; ";")) (expression_statement "local_44 = DAT_000aa59c;" (assignment_expression "local_44 = DAT_000aa59c" (identifier "local_44") (= "=") (identifier "DAT_000aa59c")) (; ";")) (expression_statement "local_40 = DAT_000aa5a0;" (assignment_expression "local_40 = DAT_000aa5a0" (identifier "local_40") (= "=") (identifier "DAT_000aa5a0")) (; ";")) (expression_statement "local_3c = DAT_000aa5a4;" (assignment_expression "local_3c = DAT_000aa5a4" (identifier "local_3c") (= "=") (identifier "DAT_000aa5a4")) (; ";")) (expression_statement "local_38 = DAT_000aa5a8;" (assignment_expression "local_38 = DAT_000aa5a8" (identifier "local_38") (= "=") (identifier "DAT_000aa5a8")) (; ";")) (expression_statement "local_34 = DAT_000aa5ac;" (assignment_expression "local_34 = DAT_000aa5ac" (identifier "local_34") (= "=") (identifier "DAT_000aa5ac")) (; ";")) (expression_statement "local_30 = DAT_000aa5b0;" (assignment_expression "local_30 = DAT_000aa5b0" (identifier "local_30") (= "=") (identifier "DAT_000aa5b0")) (; ";")) (expression_statement "local_2c = DAT_000aa5b4;" (assignment_expression "local_2c = DAT_000aa5b4" (identifier "local_2c") (= "=") (identifier "DAT_000aa5b4")) (; ";")) (expression_statement "local_28 = DAT_000aa5b8;" (assignment_expression "local_28 = DAT_000aa5b8" (identifier "local_28") (= "=") (identifier "DAT_000aa5b8")) (; ";")) (expression_statement "local_24 = DAT_000aa5bc;" (assignment_expression "local_24 = DAT_000aa5bc" (identifier "local_24") (= "=") (identifier "DAT_000aa5bc")) (; ";")) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" (identifier "puVar1") (= "=") (identifier "local_74")) (; ";")) (expression_statement "puVar3 = &DAT_000aaa1c;" (assignment_expression "puVar3 = &DAT_000aaa1c" (identifier "puVar3") (= "=") (pointer_expression "&DAT_000aaa1c" (& "&") (identifier "DAT_000aaa1c"))) (; ";")) (expression_statement "puVar4 = &DAT_000aaa1c;" (assignment_expression "puVar4 = &DAT_000aaa1c" (identifier "puVar4") (= "=") (pointer_expression "&DAT_000aaa1c" (& "&") (identifier "DAT_000aaa1c"))) (; ";")) (do_statement "do {\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    } while (bVar5);" (do "do") (compound_statement "{\n      do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);\n      FUN_0005cdb0(local_74,&local_60);\n      iVar2 = 0;\n      do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);\n      puVar3 = puVar4 + -5;\n      bVar5 = puVar4 != &DAT_000aa580;\n      puVar1 = local_74;\n      puVar4 = puVar3;\n    }" ({ "{") (do_statement "do {\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      } while (puVar1 != &local_60);" (do "do") (compound_statement "{\n        *puVar1 = *puVar1 ^ *puVar3;\n        puVar1 = puVar1 + 1;\n        puVar3 = puVar3 + 1;\n      }" ({ "{") (expression_statement "*puVar1 = *puVar1 ^ *puVar3;" (assignment_expression "*puVar1 = *puVar1 ^ *puVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 ^ *puVar3" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (^ "^") (pointer_expression "*puVar3" (* "*") (identifier "puVar3")))) (; ";")) (expression_statement "puVar1 = puVar1 + 1;" (assignment_expression "puVar1 = puVar1 + 1" (identifier "puVar1") (= "=") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar1 != &local_60)" (( "(") (binary_expression "puVar1 != &local_60" (identifier "puVar1") (!= "!=") (pointer_expression "&local_60" (& "&") (identifier "local_60"))) () ")")) (; ";")) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" (identifier "FUN_0005cdb0") (argument_list "(local_74,&local_60)" (( "(") (identifier "local_74") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      } while (iVar2 != 5);" (do "do") (compound_statement "{\n        puVar4[iVar2] = local_74[iVar2];\n        iVar2 = iVar2 + 1;\n      }" ({ "{") (expression_statement "puVar4[iVar2] = local_74[iVar2];" (assignment_expression "puVar4[iVar2] = local_74[iVar2]" (subscript_expression "puVar4[iVar2]" (identifier "puVar4") ([ "[") (identifier "iVar2") (] "]")) (= "=") (subscript_expression "local_74[iVar2]" (identifier "local_74") ([ "[") (identifier "iVar2") (] "]"))) (; ";")) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 5)" (( "(") (binary_expression "iVar2 != 5" (identifier "iVar2") (!= "!=") (number_literal "5")) () ")")) (; ";")) (expression_statement "puVar3 = puVar4 + -5;" (assignment_expression "puVar3 = puVar4 + -5" (identifier "puVar3") (= "=") (binary_expression "puVar4 + -5" (identifier "puVar4") (+ "+") (number_literal "-5"))) (; ";")) (expression_statement "bVar5 = puVar4 != &DAT_000aa580;" (assignment_expression "bVar5 = puVar4 != &DAT_000aa580" (identifier "bVar5") (= "=") (binary_expression "puVar4 != &DAT_000aa580" (identifier "puVar4") (!= "!=") (pointer_expression "&DAT_000aa580" (& "&") (identifier "DAT_000aa580")))) (; ";")) (expression_statement "puVar1 = local_74;" (assignment_expression "puVar1 = local_74" (identifier "puVar1") (= "=") (identifier "local_74")) (; ";")) (expression_statement "puVar4 = puVar3;" (assignment_expression "puVar4 = puVar3" (identifier "puVar4") (= "=") (identifier "puVar3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (; ";")) (if_statement "if (local_c4 == 1) break;" (if "if") (parenthesized_expression "(local_c4 == 1)" (( "(") (binary_expression "local_c4 == 1" (identifier "local_c4") (== "==") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_c4 = 1;" (assignment_expression "local_c4 = 1" (identifier "local_c4") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "FUN_0005cdb0(local_74,&local_60);" (call_expression "FUN_0005cdb0(local_74,&local_60)" (identifier "FUN_0005cdb0") (argument_list "(local_74,&local_60)" (( "(") (identifier "local_74") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (expression_statement "DAT_000aaa30 = 0x14;" (assignment_expression "DAT_000aaa30 = 0x14" (identifier "DAT_000aaa30") (= "=") (number_literal "0x14")) (; ";")) (expression_statement "DAT_000aaa8c = 0;" (assignment_expression "DAT_000aaa8c = 0" (identifier "DAT_000aaa8c") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_000aaa34 = local_74[0];" (assignment_expression "DAT_000aaa34 = local_74[0]" (identifier "DAT_000aaa34") (= "=") (subscript_expression "local_74[0]" (identifier "local_74") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "DAT_000aaa38 = local_74[1];" (assignment_expression "DAT_000aaa38 = local_74[1]" (identifier "DAT_000aaa38") (= "=") (subscript_expression "local_74[1]" (identifier "local_74") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "DAT_000aaa3c = local_74[2];" (assignment_expression "DAT_000aaa3c = local_74[2]" (identifier "DAT_000aaa3c") (= "=") (subscript_expression "local_74[2]" (identifier "local_74") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "DAT_000aaa40 = local_74[3];" (assignment_expression "DAT_000aaa40 = local_74[3]" (identifier "DAT_000aaa40") (= "=") (subscript_expression "local_74[3]" (identifier "local_74") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "DAT_000aaa44 = local_74[4];" (assignment_expression "DAT_000aaa44 = local_74[4]" (identifier "DAT_000aaa44") (= "=") (subscript_expression "local_74[4]" (identifier "local_74") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0006f430();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (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_0006f430();\n  }" ({ "{") (expression_statement "FUN_0006f430();" (call_expression "FUN_0006f430()" (identifier "FUN_0006f430") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  int var_9;
  type_1 *var_4;
  int var_6;
  type_2 *pRVar4;
  type_2 *var_7;
  int var_1;
  bool bVar6;
  int var_8;
  type_1 digest [5];
  type_1 var_5 [16];
  
  var_9 = *(int *)(var_1 + 0x14);
  pool.stir_pending = 1;
  var_2(random_add_noise);
  var_3((type_1 *)pool.incoming,(type_1 *)pool.incomingb);
  pool.incomingpos = 0;
  digest[0]._0_1_ = pool.incoming[0];
  digest[0]._1_1_ = pool.incoming[1];
  digest[0]._2_1_ = pool.incoming[2];
  digest[0]._3_1_ = pool.incoming[3];
  digest[1]._0_1_ = pool.incoming[4];
  digest[1]._1_1_ = pool.incoming[5];
  digest[1]._2_1_ = pool.incoming[6];
  digest[1]._3_1_ = pool.incoming[7];
  digest[2]._0_1_ = pool.incoming[8];
  digest[2]._1_1_ = pool.incoming[9];
  digest[2]._2_1_ = pool.incoming[10];
  digest[2]._3_1_ = pool.incoming[0xb];
  digest[3]._0_1_ = pool.incoming[0xc];
  digest[3]._1_1_ = pool.incoming[0xd];
  digest[3]._2_1_ = pool.incoming[0xe];
  digest[3]._3_1_ = pool.incoming[0xf];
  digest[4]._0_1_ = pool.incoming[0x10];
  digest[4]._1_1_ = pool.incoming[0x11];
  digest[4]._2_1_ = pool.incoming[0x12];
  digest[4]._3_1_ = pool.incoming[0x13];
  var_8 = 2;
  while( true ) {
    var_5[0]._0_1_ = pool.pool[0];
    var_5[0]._1_1_ = pool.pool[1];
    var_5[0]._2_1_ = pool.pool[2];
    var_5[0]._3_1_ = pool.pool[3];
    var_5[1]._0_1_ = pool.pool[4];
    var_5[1]._1_1_ = pool.pool[5];
    var_5[1]._2_1_ = pool.pool[6];
    var_5[1]._3_1_ = pool.pool[7];
    var_5[2]._0_1_ = pool.pool[8];
    var_5[2]._1_1_ = pool.pool[9];
    var_5[2]._2_1_ = pool.pool[10];
    var_5[2]._3_1_ = pool.pool[0xb];
    var_5[3]._0_1_ = pool.pool[0xc];
    var_5[3]._1_1_ = pool.pool[0xd];
    var_5[3]._2_1_ = pool.pool[0xe];
    var_5[3]._3_1_ = pool.pool[0xf];
    var_5[4]._0_1_ = pool.pool[0x10];
    var_5[4]._1_1_ = pool.pool[0x11];
    var_5[4]._2_1_ = pool.pool[0x12];
    var_5[4]._3_1_ = pool.pool[0x13];
    var_5[5]._0_1_ = pool.pool[0x14];
    var_5[5]._1_1_ = pool.pool[0x15];
    var_5[5]._2_1_ = pool.pool[0x16];
    var_5[5]._3_1_ = pool.pool[0x17];
    var_5[6]._0_1_ = pool.pool[0x18];
    var_5[6]._1_1_ = pool.pool[0x19];
    var_5[6]._2_1_ = pool.pool[0x1a];
    var_5[6]._3_1_ = pool.pool[0x1b];
    var_5[7]._0_1_ = pool.pool[0x1c];
    var_5[7]._1_1_ = pool.pool[0x1d];
    var_5[7]._2_1_ = pool.pool[0x1e];
    var_5[7]._3_1_ = pool.pool[0x1f];
    var_5[8]._0_1_ = pool.pool[0x20];
    var_5[8]._1_1_ = pool.pool[0x21];
    var_5[8]._2_1_ = pool.pool[0x22];
    var_5[8]._3_1_ = pool.pool[0x23];
    var_5[9]._0_1_ = pool.pool[0x24];
    var_5[9]._1_1_ = pool.pool[0x25];
    var_5[9]._2_1_ = pool.pool[0x26];
    var_5[9]._3_1_ = pool.pool[0x27];
    var_5[10]._0_1_ = pool.pool[0x28];
    var_5[10]._1_1_ = pool.pool[0x29];
    var_5[10]._2_1_ = pool.pool[0x2a];
    var_5[10]._3_1_ = pool.pool[0x2b];
    var_5[0xb]._0_1_ = pool.pool[0x2c];
    var_5[0xb]._1_1_ = pool.pool[0x2d];
    var_5[0xb]._2_1_ = pool.pool[0x2e];
    var_5[0xb]._3_1_ = pool.pool[0x2f];
    var_5[0xc]._0_1_ = pool.pool[0x30];
    var_5[0xc]._1_1_ = pool.pool[0x31];
    var_5[0xc]._2_1_ = pool.pool[0x32];
    var_5[0xc]._3_1_ = pool.pool[0x33];
    var_5[0xd]._0_1_ = pool.pool[0x34];
    var_5[0xd]._1_1_ = pool.pool[0x35];
    var_5[0xd]._2_1_ = pool.pool[0x36];
    var_5[0xd]._3_1_ = pool.pool[0x37];
    var_5[0xe]._0_1_ = pool.pool[0x38];
    var_5[0xe]._1_1_ = pool.pool[0x39];
    var_5[0xe]._2_1_ = pool.pool[0x3a];
    var_5[0xe]._3_1_ = pool.pool[0x3b];
    var_5[0xf]._0_1_ = pool.pool[0x3c];
    var_5[0xf]._1_1_ = pool.pool[0x3d];
    var_5[0xf]._2_1_ = pool.pool[0x3e];
    var_5[0xf]._3_1_ = pool.pool[0x3f];
    var_4 = digest;
    pRVar4 = (type_2 *)(pool.pool + 0x49c);
    var_7 = (type_2 *)(pool.pool + 0x49c);
    do {
      do {
        *var_4 = *var_4 ^ *(type_3 *)pRVar4->pool;
        var_4 = var_4 + 1;
        pRVar4 = (type_2 *)(pRVar4->pool + 4);
      } while (var_4 != var_5);
      var_3(digest,var_5);
      var_6 = 0;
      do {
        *(type_1 *)(var_7->pool + var_6 * 4) = digest[var_6];
        var_6 = var_6 + 1;
      } while (var_6 != 5);
      pRVar4 = (type_2 *)(var_7[-1].incomingb + 0x34);
      bVar6 = var_7 != &pool;
      var_4 = digest;
      var_7 = pRVar4;
    } while (bVar6);
    if (var_8 == 1) break;
    var_8 = 1;
  }
  var_3(digest,var_5);
  pool.poolpos = 0x14;
  pool.stir_pending = 0;
  pool.incoming[0] = (type_4)digest[0];
  pool.incoming[1] = digest[0]._1_1_;
  pool.incoming[2] = digest[0]._2_1_;
  pool.incoming[3] = digest[0]._3_1_;
  pool.incoming[4] = (type_4)digest[1];
  pool.incoming[5] = digest[1]._1_1_;
  pool.incoming[6] = digest[1]._2_1_;
  pool.incoming[7] = digest[1]._3_1_;
  pool.incoming[8] = (type_4)digest[2];
  pool.incoming[9] = digest[2]._1_1_;
  pool.incoming[10] = digest[2]._2_1_;
  pool.incoming[0xb] = digest[2]._3_1_;
  pool.incoming[0xc] = (type_4)digest[3];
  pool.incoming[0xd] = digest[3]._1_1_;
  pool.incoming[0xe] = digest[3]._2_1_;
  pool.incoming[0xf] = digest[3]._3_1_;
  pool.incoming[0x10] = (type_4)digest[4];
  pool.incoming[0x11] = digest[4]._1_1_;
  pool.incoming[0x12] = digest[4]._2_1_;
  pool.incoming[0x13] = digest[4]._3_1_;
  if (var_9 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_10();
  }
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

void MASKED(void)

{
  uint *puVar1;
  int iVar2;
  uint *puVar3;
  uint *puVar4;
  int in_GS_OFFSET;
  bool bVar5;
  int local_c4;
  uint local_74 [5];
  uint local_60;
  undefined4 local_5c;
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined4 local_4c;
  undefined4 local_48;
  undefined4 local_44;
  undefined4 local_40;
  undefined4 local_3c;
  undefined4 local_38;
  undefined4 local_34;
  undefined4 local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x57699;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  DAT_000aaa8c = 1;
  FUN_00068ac0(FUN_00057a50);
  FUN_0005cdb0(&DAT_000aaa34,&DAT_000aaa48);
  DAT_000aaa88 = 0;
  local_74[0] = DAT_000aaa34;
  local_74[1] = DAT_000aaa38;
  local_74[2] = DAT_000aaa3c;
  local_74[3] = DAT_000aaa40;
  local_74[4] = DAT_000aaa44;
  local_c4 = 2;
  while( true ) {
    local_60 = DAT_000aa580;
    local_5c = DAT_000aa584;
    local_58 = DAT_000aa588;
    local_54 = DAT_000aa58c;
    local_50 = DAT_000aa590;
    local_4c = DAT_000aa594;
    local_48 = DAT_000aa598;
    local_44 = DAT_000aa59c;
    local_40 = DAT_000aa5a0;
    local_3c = DAT_000aa5a4;
    local_38 = DAT_000aa5a8;
    local_34 = DAT_000aa5ac;
    local_30 = DAT_000aa5b0;
    local_2c = DAT_000aa5b4;
    local_28 = DAT_000aa5b8;
    local_24 = DAT_000aa5bc;
    puVar1 = local_74;
    puVar3 = &DAT_000aaa1c;
    puVar4 = &DAT_000aaa1c;
    do {
      do {
        *puVar1 = *puVar1 ^ *puVar3;
        puVar1 = puVar1 + 1;
        puVar3 = puVar3 + 1;
      } while (puVar1 != &local_60);
      FUN_0005cdb0(local_74,&local_60);
      iVar2 = 0;
      do {
        puVar4[iVar2] = local_74[iVar2];
        iVar2 = iVar2 + 1;
      } while (iVar2 != 5);
      puVar3 = puVar4 + -5;
      bVar5 = puVar4 != &DAT_000aa580;
      puVar1 = local_74;
      puVar4 = puVar3;
    } while (bVar5);
    if (local_c4 == 1) break;
    local_c4 = 1;
  }
  FUN_0005cdb0(local_74,&local_60);
  DAT_000aaa30 = 0x14;
  DAT_000aaa8c = 0;
  DAT_000aaa34 = local_74[0];
  DAT_000aaa38 = local_74[1];
  DAT_000aaa3c = local_74[2];
  DAT_000aaa40 = local_74[3];
  DAT_000aaa44 = local_74[4];
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0006f430();
  }
  return;
}

