
int twofish_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)

{
  ulong32 *puVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  ulong32 *puVar9;
  uint uVar10;
  
  if (pt == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);
  }
  if (ct != (uchar *)0x0) {
    if (skey != (symmetric_key *)0x0) {
      puVar9 = (skey->twofish).K + 0x24;
      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);
      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);
      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;
      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);
      do {
        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^
                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^
                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^
                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);
        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^
                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^
                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^
                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;
        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;
        uVar7 = uVar10 >> 1;
        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;
        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;
        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^
                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^
                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^
                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);
        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^
                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^
                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^
                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;
        puVar1 = puVar9 + 1;
        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;
        puVar9 = puVar9 + -4;
        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;
        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      } while (puVar9 != (skey->twofish).K + 4);
      uVar7 = (skey->twofish).K[1];
      uVar2 = (skey->twofish).K[3];
      uVar3 = (skey->twofish).K[0];
      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];
      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;
      *(uint *)pt = uVar8 ^ uVar3;
      *(uint *)(pt + 4) = uVar7 ^ uVar10;
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);
}



undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  uint uVar10;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);
  }
  if (param_1 != (uint *)0x0) {
    if (param_3 != 0) {
      piVar9 = (int *)(param_3 + 0x1090);
      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];
      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];
      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;
      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];
      do {
        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^
                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^
                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);
        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^
                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^
                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;
        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;
        uVar7 = uVar10 >> 1;
        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;
        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;
        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^
                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^
                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);
        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^
                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;
        piVar1 = piVar9 + 1;
        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;
        piVar9 = piVar9 + -4;
        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;
        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      } while (piVar9 != (int *)(param_3 + 0x1010));
      uVar7 = *(uint *)(param_3 + 0x1004);
      uVar2 = *(uint *)(param_3 + 0x100c);
      uVar3 = *(uint *)(param_3 + 0x1000);
      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);
      param_2[3] = uVar6 ^ uVar2;
      *param_2 = uVar8 ^ uVar3;
      param_2[1] = uVar7 ^ uVar10;
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);
}


PUSH R12
PUSH RBP
PUSH RBX
TEST RSI,RSI
JZ 0x00131347
TEST RDI,RDI
JZ 0x00131377
TEST RDX,RDX
JZ 0x0013135f
MOV R9D,dword ptr [RDX + 0x1018]
MOV R12D,dword ptr [RDX + 0x101c]
LEA R10,[RDX + 0x1090]
LEA R11,[RDX + 0x1010]
MOV EBX,dword ptr [RDX + 0x1010]
MOV EBP,dword ptr [RDX + 0x1014]
XOR R9D,dword ptr [RDI + 0x8]
XOR R12D,dword ptr [RDI + 0xc]
XOR EBX,dword ptr [RDI]
XOR EBP,dword ptr [RDI + 0x4]
NOP dword ptr [RAX]
MOV EAX,EBP
MOVZX ECX,BPL
SHR EAX,0x18
MOV R8D,dword ptr [RDX + RCX*0x4 + 0x400]
MOV ECX,EBP
XOR R8D,dword ptr [RDX + RAX*0x4]
MOV EAX,EBP
MOVZX EDI,CH
SHR EAX,0x10
XOR R8D,dword ptr [RDX + RDI*0x4 + 0x800]
MOVZX EDI,BL
MOVZX ECX,AL
MOV EAX,EBX
SHR EAX,0x18
XOR R8D,dword ptr [RDX + RCX*0x4 + 0xc00]
MOV ECX,dword ptr [RDX + RDI*0x4]
MOVZX EDI,BH
XOR ECX,dword ptr [RDX + RAX*0x4 + 0xc00]
MOV EAX,EBX
XOR ECX,dword ptr [RDX + RDI*0x4 + 0x400]
SHR EAX,0x10
MOVZX EDI,AL
XOR ECX,dword ptr [RDX + RDI*0x4 + 0x800]
MOV EDI,dword ptr [R10 + 0xc]
LEA EAX,[RCX + R8*0x1]
MOV ECX,dword ptr [R10 + 0x8]
ADD EDI,R8D
ADD EDI,EAX
ADD ECX,EAX
XOR EDI,R12D
ROR EDI,0x1
MOV EAX,EDI
MOVZX R8D,DIL
MOV R12D,EDI
SHR EAX,0x18
ROL R9D,0x1
XOR R9D,ECX
MOV ECX,dword ptr [RDX + R8*0x4 + 0x400]
MOV R8D,R12D
XOR ECX,dword ptr [RDX + RAX*0x4]
MOV EAX,EDI
SHR R8D,0x10
MOVZX EDI,AH
MOVZX EAX,R8B
MOVZX R8D,R9B
XOR ECX,dword ptr [RDX + RDI*0x4 + 0x800]
MOV EDI,R9D
MOV R8D,dword ptr [RDX + R8*0x4]
XOR ECX,dword ptr [RDX + RAX*0x4 + 0xc00]
SHR EDI,0x18
MOV EAX,R9D
XOR R8D,dword ptr [RDX + RDI*0x4 + 0xc00]
MOVZX EDI,AH
MOV EAX,dword ptr [RDX + RDI*0x4 + 0x400]
ROL EBX,0x1
XOR EAX,R8D
MOV R8D,R9D
SHR R8D,0x10
MOVZX EDI,R8B
MOV R8D,dword ptr [R10]
XOR EAX,dword ptr [RDX + RDI*0x4 + 0x800]
ADD EAX,ECX
ADD ECX,dword ptr [R10 + 0x4]
ADD R8D,EAX
XOR EBX,R8D
ADD EAX,ECX
SUB R10,0x10
XOR EAX,EBP
ROR EAX,0x1
MOV EBP,EAX
CMP R10,R11
JNZ 0x00131208
MOV R10D,dword ptr [RDX + 0x1004]
XOR EBX,dword ptr [RDX + 0x1008]
XOR EAX,dword ptr [RDX + 0x100c]
XOR R9D,dword ptr [RDX + 0x1000]
MOV dword ptr [RSI + 0x8],EBX
XOR R10D,R12D
MOV dword ptr [RSI + 0xc],EAX
XOR EAX,EAX
MOV dword ptr [RSI],R9D
MOV dword ptr [RSI + 0x4],R10D
POP RBX
POP RBP
POP R12
RET
MOV EDX,0x227
LEA RSI,[0x1a9200]
LEA RDI,[0x18d016]
CALL 0x00114270
MOV EDX,0x229
LEA RSI,[0x1a9200]
LEA RDI,[0x18d02c]
CALL 0x00114270
MOV EDX,0x228
LEA RSI,[0x1a9200]
LEA RDI,[0x18d021]
CALL 0x00114270
(translation_unit "undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}\n\n" (function_definition "undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" type_identifier (function_declarator "twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" identifier (argument_list "("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" { (if_statement "if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" { (expression_statement "piVar9 = (int *)(param_3 + 0x1090);" (assignment_expression "piVar9 = (int *)(param_3 + 0x1090)" identifier = (cast_expression "(int *)(param_3 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1090)" ( (binary_expression "param_3 + 0x1090" identifier + number_literal) )))) ;) (expression_statement "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];" (assignment_expression "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2]" identifier = (binary_expression "*(uint *)(param_3 + 0x1018) ^ param_1[2]" (pointer_expression "*(uint *)(param_3 + 0x1018)" * (cast_expression "(uint *)(param_3 + 0x1018)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1018)" ( (binary_expression "param_3 + 0x1018" identifier + number_literal) )))) ^ (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];" (assignment_expression "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3]" identifier = (binary_expression "*(uint *)(param_3 + 0x101c) ^ param_1[3]" (pointer_expression "*(uint *)(param_3 + 0x101c)" * (cast_expression "(uint *)(param_3 + 0x101c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x101c)" ( (binary_expression "param_3 + 0x101c" identifier + number_literal) )))) ^ (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;" (assignment_expression "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1" identifier = (binary_expression "*(uint *)(param_3 + 0x1010) ^ *param_1" (pointer_expression "*(uint *)(param_3 + 0x1010)" * (cast_expression "(uint *)(param_3 + 0x1010)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1010)" ( (binary_expression "param_3 + 0x1010" identifier + number_literal) )))) ^ (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];" (assignment_expression "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1]" identifier = (binary_expression "*(uint *)(param_3 + 0x1014) ^ param_1[1]" (pointer_expression "*(uint *)(param_3 + 0x1014)" * (cast_expression "(uint *)(param_3 + 0x1014)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1014)" ( (binary_expression "param_3 + 0x1014" identifier + number_literal) )))) ^ (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));" do (compound_statement "{\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      }" { (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar6 & 0xff) * 4" (call_expression "(ulong)(uVar6 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar6 >> 0x18) * 4)" ( (binary_expression "param_3 + (ulong)(uVar6 >> 0x18) * 4" identifier + (binary_expression "(ulong)(uVar6 >> 0x18) * 4" (call_expression "(ulong)(uVar6 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18)" ( (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(byte)(uVar6 >> 8) * 4" (call_expression "(ulong)(byte)(uVar6 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar6 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar6 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x10 & 0xff)" ( (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) )))))) ;) (expression_statement "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" identifier = (binary_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4))" ( (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar5 & 0xff) * 4)" ( (binary_expression "param_3 + (ulong)(uVar5 & 0xff) * 4" identifier + (binary_expression "(ulong)(uVar5 & 0xff) * 4" (call_expression "(ulong)(uVar5 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 0x18) * 4" (call_expression "(ulong)(uVar5 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 8 & 0xff)" ( (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x10 & 0xff)" ( (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) )) + identifier)) ;) (expression_statement "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;" (assignment_expression "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10" identifier = (binary_expression "piVar9[3] + uVar7 + iVar4 ^ uVar10" (binary_expression "piVar9[3] + uVar7 + iVar4" (binary_expression "piVar9[3] + uVar7" (subscript_expression "piVar9[3]" identifier [ number_literal ]) + identifier) + identifier) ^ identifier)) ;) (expression_statement "uVar7 = uVar10 >> 1;" (assignment_expression "uVar7 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;" (assignment_expression "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier | (binary_expression "(uint)((uVar10 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar10 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar10 & 1) != 0)" ( (binary_expression "(uVar10 & 1) != 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) (expression_statement "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;" (assignment_expression "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" identifier = (binary_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" (parenthesized_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0))" ( (binary_expression "uVar8 << 1 | (uint)((int)uVar8 < 0)" (binary_expression "uVar8 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar8 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "piVar9[2] + iVar4" (subscript_expression "piVar9[2]" identifier [ number_literal ]) + identifier))) ;) (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" identifier = (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar7 & 0xff) * 4" (call_expression "(ulong)(uVar7 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 & 0xff)" ( (binary_expression "uVar7 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar10 >> 0x18) * 4)" ( (binary_expression "param_3 + (ulong)(uVar10 >> 0x18) * 4" identifier + (binary_expression "(ulong)(uVar10 >> 0x18) * 4" (call_expression "(ulong)(uVar10 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)((uVar7 & 0xff00) >> 8) * 4" (call_expression "(ulong)((uVar7 & 0xff00) >> 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff00) >> 8)" ( (binary_expression "(uVar7 & 0xff00) >> 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (call_expression "(ulong)((uVar7 & 0xff0000) >> 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff0000) >> 0x10)" ( (binary_expression "(uVar7 & 0xff0000) >> 0x10" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal) ))) * number_literal)) )))))) ;) (expression_statement "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" identifier = (binary_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4))" ( (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 8 & 0xff)" ( (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar8 & 0xff) * 4)" ( (binary_expression "param_3 + (ulong)(uVar8 & 0xff) * 4" identifier + (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) )) + identifier)) ;) (expression_statement "piVar1 = piVar9 + 1;" (assignment_expression "piVar1 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;" (assignment_expression "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" identifier = (binary_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" (parenthesized_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0))" ( (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "*piVar9 + iVar4" (pointer_expression "*piVar9" * identifier) + identifier))) ;) (expression_statement "piVar9 = piVar9 + -4;" (assignment_expression "piVar9 = piVar9 + -4" identifier = (binary_expression "piVar9 + -4" identifier + number_literal)) ;) (expression_statement "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;" (assignment_expression "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6" identifier = (binary_expression "iVar4 + uVar7 + *piVar1 ^ uVar6" (binary_expression "iVar4 + uVar7 + *piVar1" (binary_expression "iVar4 + uVar7" identifier + identifier) + (pointer_expression "*piVar1" * identifier)) ^ identifier)) ;) (expression_statement "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;" (assignment_expression "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" (binary_expression "uVar6 >> 1" identifier >> number_literal) | (binary_expression "(uint)((uVar6 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar6 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) }) while (parenthesized_expression "(piVar9 != (int *)(param_3 + 0x1010))" ( (binary_expression "piVar9 != (int *)(param_3 + 0x1010)" identifier != (cast_expression "(int *)(param_3 + 0x1010)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1010)" ( (binary_expression "param_3 + 0x1010" identifier + number_literal) )))) )) ;) (expression_statement "uVar7 = *(uint *)(param_3 + 0x1004);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x1004)" identifier = (pointer_expression "*(uint *)(param_3 + 0x1004)" * (cast_expression "(uint *)(param_3 + 0x1004)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1004)" ( (binary_expression "param_3 + 0x1004" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_3 + 0x100c);" (assignment_expression "uVar2 = *(uint *)(param_3 + 0x100c)" identifier = (pointer_expression "*(uint *)(param_3 + 0x100c)" * (cast_expression "(uint *)(param_3 + 0x100c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x100c)" ( (binary_expression "param_3 + 0x100c" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(param_3 + 0x1000);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x1000)" identifier = (pointer_expression "*(uint *)(param_3 + 0x1000)" * (cast_expression "(uint *)(param_3 + 0x1000)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1000)" ( (binary_expression "param_3 + 0x1000" identifier + number_literal) ))))) ;) (expression_statement "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);" (assignment_expression "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar5 ^ *(uint *)(param_3 + 0x1008)" identifier ^ (pointer_expression "*(uint *)(param_3 + 0x1008)" * (cast_expression "(uint *)(param_3 + 0x1008)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1008)" ( (binary_expression "param_3 + 0x1008" identifier + number_literal) )))))) ;) (expression_statement "param_2[3] = uVar6 ^ uVar2;" (assignment_expression "param_2[3] = uVar6 ^ uVar2" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar6 ^ uVar2" identifier ^ identifier)) ;) (expression_statement "*param_2 = uVar8 ^ uVar3;" (assignment_expression "*param_2 = uVar8 ^ uVar3" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar8 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "param_2[1] = uVar7 ^ uVar10;" (assignment_expression "param_2[1] = uVar7 ^ uVar10" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar7 ^ uVar10" identifier ^ identifier)) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" identifier (argument_list "("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" identifier (argument_list "("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "int twofish_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  ulong32 *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong32 *puVar9;\n  uint uVar10;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}\n\n" (function_definition "int twofish_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)\n\n{\n  ulong32 *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong32 *puVar9;\n  uint uVar10;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" primitive_type (function_declarator "twofish_ecb_decrypt(uchar *ct,uchar *pt,symmetric_key *skey)" identifier (parameter_list "(uchar *ct,uchar *pt,symmetric_key *skey)" ( (parameter_declaration "uchar *ct" type_identifier (pointer_declarator "*ct" * identifier)) , (parameter_declaration "uchar *pt" type_identifier (pointer_declarator "*pt" * identifier)) , (parameter_declaration "symmetric_key *skey" type_identifier (pointer_declarator "*skey" * identifier)) ))) (compound_statement "{\n  ulong32 *puVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  ulong32 *puVar9;\n  uint uVar10;\n  \n  if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (ct != (uchar *)0x0) {\n    if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    /* WARNING: Subroutine does not return */\n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" { (declaration "ulong32 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "ulong32 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (if_statement "if (pt == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" if (parenthesized_expression "(pt == (uchar *)0x0)" ( (binary_expression "pt == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" { comment (expression_statement "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" identifier (argument_list "("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (ct != (uchar *)0x0) {\n    if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" if (parenthesized_expression "(ct != (uchar *)0x0)" ( (binary_expression "ct != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" { (if_statement "if (skey != (symmetric_key *)0x0) {\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }" if (parenthesized_expression "(skey != (symmetric_key *)0x0)" ( (binary_expression "skey != (symmetric_key *)0x0" identifier != (cast_expression "(symmetric_key *)0x0" ( (type_descriptor "symmetric_key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      puVar9 = (skey->twofish).K + 0x24;\n      uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);\n      uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);\n      uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;\n      uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);\n      do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);\n      uVar7 = (skey->twofish).K[1];\n      uVar2 = (skey->twofish).K[3];\n      uVar3 = (skey->twofish).K[0];\n      *(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];\n      *(uint *)(pt + 0xc) = uVar6 ^ uVar2;\n      *(uint *)pt = uVar8 ^ uVar3;\n      *(uint *)(pt + 4) = uVar7 ^ uVar10;\n      return 0;\n    }" { (expression_statement "puVar9 = (skey->twofish).K + 0x24;" (assignment_expression "puVar9 = (skey->twofish).K + 0x24" identifier = (binary_expression "(skey->twofish).K + 0x24" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (expression_statement "uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8);" (assignment_expression "uVar8 = (skey->twofish).K[6] ^ *(uint *)(ct + 8)" identifier = (binary_expression "(skey->twofish).K[6] ^ *(uint *)(ct + 8)" (subscript_expression "(skey->twofish).K[6]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) ^ (pointer_expression "*(uint *)(ct + 8)" * (cast_expression "(uint *)(ct + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ct + 8)" ( (binary_expression "ct + 8" identifier + number_literal) )))))) ;) (expression_statement "uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc);" (assignment_expression "uVar10 = (skey->twofish).K[7] ^ *(uint *)(ct + 0xc)" identifier = (binary_expression "(skey->twofish).K[7] ^ *(uint *)(ct + 0xc)" (subscript_expression "(skey->twofish).K[7]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) ^ (pointer_expression "*(uint *)(ct + 0xc)" * (cast_expression "(uint *)(ct + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ct + 0xc)" ( (binary_expression "ct + 0xc" identifier + number_literal) )))))) ;) (expression_statement "uVar5 = (skey->twofish).K[4] ^ *(uint *)ct;" (assignment_expression "uVar5 = (skey->twofish).K[4] ^ *(uint *)ct" identifier = (binary_expression "(skey->twofish).K[4] ^ *(uint *)ct" (subscript_expression "(skey->twofish).K[4]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) ^ (pointer_expression "*(uint *)ct" * (cast_expression "(uint *)ct" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4);" (assignment_expression "uVar6 = (skey->twofish).K[5] ^ *(uint *)(ct + 4)" identifier = (binary_expression "(skey->twofish).K[5] ^ *(uint *)(ct + 4)" (subscript_expression "(skey->twofish).K[5]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) ^ (pointer_expression "*(uint *)(ct + 4)" * (cast_expression "(uint *)(ct + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ct + 4)" ( (binary_expression "ct + 4" identifier + number_literal) )))))) ;) (do_statement "do {\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (puVar9 != (skey->twofish).K + 4);" do (compound_statement "{\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;\n        uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);\n        iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;\n        puVar1 = puVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;\n        puVar9 = puVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      }" { (expression_statement "uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00);" (assignment_expression "uVar7 = *(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00)" identifier = (binary_expression "*(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4)" (pointer_expression "*(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400)" ( (binary_expression "(long)skey + (ulong)(uVar6 & 0xff) * 4 + 0x400" (binary_expression "(long)skey + (ulong)(uVar6 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar6 & 0xff) * 4" (call_expression "(ulong)(uVar6 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar6 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar6 >> 0x18) * 4)" ( (binary_expression "(long)skey + (ulong)(uVar6 >> 0x18) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar6 >> 0x18) * 4" (call_expression "(ulong)(uVar6 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18)" ( (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800)" * (cast_expression "(uint *)((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800)" ( (binary_expression "(long)skey + (ulong)(byte)(uVar6 >> 8) * 4 + 0x800" (binary_expression "(long)skey + (ulong)(byte)(uVar6 >> 8) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(byte)(uVar6 >> 8) * 4" (call_expression "(ulong)(byte)(uVar6 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) ))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00)" ( (binary_expression "(long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4 + 0xc00" (binary_expression "(long)skey + (ulong)(uVar6 >> 0x10 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar6 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar6 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x10 & 0xff)" ( (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) + number_literal) )))))) ;) (expression_statement "iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7" identifier = (binary_expression "(*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7" (parenthesized_expression "(*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800))" ( (binary_expression "*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00)" (pointer_expression "*(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar5 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar5 & 0xff) * 4)" ( (binary_expression "(long)skey + (ulong)(uVar5 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar5 & 0xff) * 4" (call_expression "(ulong)(uVar5 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00)" ( (binary_expression "(long)skey + (ulong)(uVar5 >> 0x18) * 4 + 0xc00" (binary_expression "(long)skey + (ulong)(uVar5 >> 0x18) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar5 >> 0x18) * 4" (call_expression "(ulong)(uVar5 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) ))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400)" ( (binary_expression "(long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4 + 0x400" (binary_expression "(long)skey + (ulong)(uVar5 >> 8 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar5 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 8 & 0xff)" ( (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800)" ( (binary_expression "(long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4 + 0x800" (binary_expression "(long)skey + (ulong)(uVar5 >> 0x10 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar5 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x10 & 0xff)" ( (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) + number_literal) ))))) )) + identifier)) ;) (expression_statement "uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10;" (assignment_expression "uVar10 = puVar9[3] + uVar7 + iVar4 ^ uVar10" identifier = (binary_expression "puVar9[3] + uVar7 + iVar4 ^ uVar10" (binary_expression "puVar9[3] + uVar7 + iVar4" (binary_expression "puVar9[3] + uVar7" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + identifier) + identifier) ^ identifier)) ;) (expression_statement "uVar7 = uVar10 >> 1;" (assignment_expression "uVar7 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;" (assignment_expression "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier | (binary_expression "(uint)((uVar10 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar10 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar10 & 1) != 0)" ( (binary_expression "(uVar10 & 1) != 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) (expression_statement "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4;" (assignment_expression "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4" identifier = (binary_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ puVar9[2] + iVar4" (parenthesized_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0))" ( (binary_expression "uVar8 << 1 | (uint)((int)uVar8 < 0)" (binary_expression "uVar8 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar8 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "puVar9[2] + iVar4" (subscript_expression "puVar9[2]" identifier [ number_literal ]) + identifier))) ;) (expression_statement "uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00);" (assignment_expression "uVar7 = *(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00)" identifier = (binary_expression "*(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400) ^\n                *(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4)" (pointer_expression "*(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400)" ( (binary_expression "(long)skey + (ulong)(uVar7 & 0xff) * 4 + 0x400" (binary_expression "(long)skey + (ulong)(uVar7 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar7 & 0xff) * 4" (call_expression "(ulong)(uVar7 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 & 0xff)" ( (binary_expression "uVar7 & 0xff" identifier & number_literal) ))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar10 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar10 >> 0x18) * 4)" ( (binary_expression "(long)skey + (ulong)(uVar10 >> 0x18) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar10 >> 0x18) * 4" (call_expression "(ulong)(uVar10 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800)" * (cast_expression "(uint *)((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800)" ( (binary_expression "(long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4 + 0x800" (binary_expression "(long)skey + (ulong)((uVar7 & 0xff00) >> 8) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)((uVar7 & 0xff00) >> 8) * 4" (call_expression "(ulong)((uVar7 & 0xff00) >> 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff00) >> 8)" ( (binary_expression "(uVar7 & 0xff00) >> 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) >> number_literal) ))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00)" * (cast_expression "(uint *)((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00)" ( (binary_expression "(long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4 + 0xc00" (binary_expression "(long)skey + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (call_expression "(ulong)((uVar7 & 0xff0000) >> 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff0000) >> 0x10)" ( (binary_expression "(uVar7 & 0xff0000) >> 0x10" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal) ))) * number_literal)) + number_literal) )))))) ;) (expression_statement "iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7" identifier = (binary_expression "(*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)) + uVar7" (parenthesized_expression "(*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800))" ( (binary_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00) ^\n                *(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00)" (binary_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400) ^\n                 *(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400)" ( (binary_expression "(long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4 + 0x400" (binary_expression "(long)skey + (ulong)(uVar8 >> 8 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar8 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 8 & 0xff)" ( (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) + number_literal) )))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar8 & 0xff) * 4)" ( (binary_expression "(long)skey + (ulong)(uVar8 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00)" ( (binary_expression "(long)skey + (ulong)(uVar8 >> 0x18) * 4 + 0xc00" (binary_expression "(long)skey + (ulong)(uVar8 >> 0x18) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) * number_literal)) + number_literal) ))))) ^ (pointer_expression "*(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)" * (cast_expression "(uint *)((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800)" ( (binary_expression "(long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4 + 0x800" (binary_expression "(long)skey + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (cast_expression "(long)skey" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) + number_literal) ))))) )) + identifier)) ;) (expression_statement "puVar1 = puVar9 + 1;" (assignment_expression "puVar1 = puVar9 + 1" identifier = (binary_expression "puVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4;" (assignment_expression "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4" identifier = (binary_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *puVar9 + iVar4" (parenthesized_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0))" ( (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "*puVar9 + iVar4" (pointer_expression "*puVar9" * identifier) + identifier))) ;) (expression_statement "puVar9 = puVar9 + -4;" (assignment_expression "puVar9 = puVar9 + -4" identifier = (binary_expression "puVar9 + -4" identifier + number_literal)) ;) (expression_statement "uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6;" (assignment_expression "uVar6 = iVar4 + uVar7 + *puVar1 ^ uVar6" identifier = (binary_expression "iVar4 + uVar7 + *puVar1 ^ uVar6" (binary_expression "iVar4 + uVar7 + *puVar1" (binary_expression "iVar4 + uVar7" identifier + identifier) + (pointer_expression "*puVar1" * identifier)) ^ identifier)) ;) (expression_statement "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;" (assignment_expression "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" (binary_expression "uVar6 >> 1" identifier >> number_literal) | (binary_expression "(uint)((uVar6 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar6 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) }) while (parenthesized_expression "(puVar9 != (skey->twofish).K + 4)" ( (binary_expression "puVar9 != (skey->twofish).K + 4" identifier != (binary_expression "(skey->twofish).K + 4" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) + number_literal)) )) ;) (expression_statement "uVar7 = (skey->twofish).K[1];" (assignment_expression "uVar7 = (skey->twofish).K[1]" identifier = (subscript_expression "(skey->twofish).K[1]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar2 = (skey->twofish).K[3];" (assignment_expression "uVar2 = (skey->twofish).K[3]" identifier = (subscript_expression "(skey->twofish).K[3]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "uVar3 = (skey->twofish).K[0];" (assignment_expression "uVar3 = (skey->twofish).K[0]" identifier = (subscript_expression "(skey->twofish).K[0]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "*(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2];" (assignment_expression "*(uint *)(pt + 8) = uVar5 ^ (skey->twofish).K[2]" (pointer_expression "*(uint *)(pt + 8)" * (cast_expression "(uint *)(pt + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pt + 8)" ( (binary_expression "pt + 8" identifier + number_literal) )))) = (binary_expression "uVar5 ^ (skey->twofish).K[2]" identifier ^ (subscript_expression "(skey->twofish).K[2]" (field_expression "(skey->twofish).K" (parenthesized_expression "(skey->twofish)" ( (field_expression "skey->twofish" identifier -> field_identifier) )) . field_identifier) [ number_literal ]))) ;) (expression_statement "*(uint *)(pt + 0xc) = uVar6 ^ uVar2;" (assignment_expression "*(uint *)(pt + 0xc) = uVar6 ^ uVar2" (pointer_expression "*(uint *)(pt + 0xc)" * (cast_expression "(uint *)(pt + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pt + 0xc)" ( (binary_expression "pt + 0xc" identifier + number_literal) )))) = (binary_expression "uVar6 ^ uVar2" identifier ^ identifier)) ;) (expression_statement "*(uint *)pt = uVar8 ^ uVar3;" (assignment_expression "*(uint *)pt = uVar8 ^ uVar3" (pointer_expression "*(uint *)pt" * (cast_expression "(uint *)pt" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "uVar8 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "*(uint *)(pt + 4) = uVar7 ^ uVar10;" (assignment_expression "*(uint *)(pt + 4) = uVar7 ^ uVar10" (pointer_expression "*(uint *)(pt + 4)" * (cast_expression "(uint *)(pt + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pt + 4)" ( (binary_expression "pt + 4" identifier + number_literal) )))) = (binary_expression "uVar7 ^ uVar10" identifier ^ identifier)) ;) (return_statement "return 0;" return number_literal ;) })) comment (expression_statement "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" identifier (argument_list "("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) comment (expression_statement "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" identifier (argument_list "("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit "undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}\n\n" (function_definition "undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" type_identifier (function_declarator "twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,long param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" { (expression_statement "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" identifier (argument_list "("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" ( (string_literal ""pt != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" if (parenthesized_expression "(param_1 != (uint *)0x0)" ( (binary_expression "param_1 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" { (if_statement "if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" { (expression_statement "piVar9 = (int *)(param_3 + 0x1090);" (assignment_expression "piVar9 = (int *)(param_3 + 0x1090)" identifier = (cast_expression "(int *)(param_3 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1090)" ( (binary_expression "param_3 + 0x1090" identifier + number_literal) )))) ;) (expression_statement "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];" (assignment_expression "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2]" identifier = (binary_expression "*(uint *)(param_3 + 0x1018) ^ param_1[2]" (pointer_expression "*(uint *)(param_3 + 0x1018)" * (cast_expression "(uint *)(param_3 + 0x1018)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1018)" ( (binary_expression "param_3 + 0x1018" identifier + number_literal) )))) ^ (subscript_expression "param_1[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];" (assignment_expression "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3]" identifier = (binary_expression "*(uint *)(param_3 + 0x101c) ^ param_1[3]" (pointer_expression "*(uint *)(param_3 + 0x101c)" * (cast_expression "(uint *)(param_3 + 0x101c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x101c)" ( (binary_expression "param_3 + 0x101c" identifier + number_literal) )))) ^ (subscript_expression "param_1[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;" (assignment_expression "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1" identifier = (binary_expression "*(uint *)(param_3 + 0x1010) ^ *param_1" (pointer_expression "*(uint *)(param_3 + 0x1010)" * (cast_expression "(uint *)(param_3 + 0x1010)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1010)" ( (binary_expression "param_3 + 0x1010" identifier + number_literal) )))) ^ (pointer_expression "*param_1" * identifier))) ;) (expression_statement "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];" (assignment_expression "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1]" identifier = (binary_expression "*(uint *)(param_3 + 0x1014) ^ param_1[1]" (pointer_expression "*(uint *)(param_3 + 0x1014)" * (cast_expression "(uint *)(param_3 + 0x1014)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1014)" ( (binary_expression "param_3 + 0x1014" identifier + number_literal) )))) ^ (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (do_statement "do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));" do (compound_statement "{\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      }" { (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" identifier = (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar6 & 0xff) * 4" (call_expression "(ulong)(uVar6 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 & 0xff)" ( (binary_expression "uVar6 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar6 >> 0x18) * 4)" ( (binary_expression "param_3 + (ulong)(uVar6 >> 0x18) * 4" identifier + (binary_expression "(ulong)(uVar6 >> 0x18) * 4" (call_expression "(ulong)(uVar6 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x18)" ( (binary_expression "uVar6 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(byte)(uVar6 >> 8) * 4" (call_expression "(ulong)(byte)(uVar6 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar6 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar6 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar6 >> 0x10 & 0xff)" ( (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) )))))) ;) (expression_statement "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" identifier = (binary_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4))" ( (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar5 & 0xff) * 4)" ( (binary_expression "param_3 + (ulong)(uVar5 & 0xff) * 4" identifier + (binary_expression "(ulong)(uVar5 & 0xff) * 4" (call_expression "(ulong)(uVar5 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 & 0xff)" ( (binary_expression "uVar5 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 0x18) * 4" (call_expression "(ulong)(uVar5 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x18)" ( (binary_expression "uVar5 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 8 & 0xff)" ( (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(uVar5 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar5 >> 0x10 & 0xff)" ( (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) )) + identifier)) ;) (expression_statement "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;" (assignment_expression "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10" identifier = (binary_expression "piVar9[3] + uVar7 + iVar4 ^ uVar10" (binary_expression "piVar9[3] + uVar7 + iVar4" (binary_expression "piVar9[3] + uVar7" (subscript_expression "piVar9[3]" identifier [ number_literal ]) + identifier) + identifier) ^ identifier)) ;) (expression_statement "uVar7 = uVar10 >> 1;" (assignment_expression "uVar7 = uVar10 >> 1" identifier = (binary_expression "uVar10 >> 1" identifier >> number_literal)) ;) (expression_statement "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;" (assignment_expression "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" identifier | (binary_expression "(uint)((uVar10 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar10 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar10 & 1) != 0)" ( (binary_expression "(uVar10 & 1) != 0" (parenthesized_expression "(uVar10 & 1)" ( (binary_expression "uVar10 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) (expression_statement "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;" (assignment_expression "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" identifier = (binary_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" (parenthesized_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0))" ( (binary_expression "uVar8 << 1 | (uint)((int)uVar8 < 0)" (binary_expression "uVar8 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar8 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "piVar9[2] + iVar4" (subscript_expression "piVar9[2]" identifier [ number_literal ]) + identifier))) ;) (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" identifier = (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar7 & 0xff) * 4" (call_expression "(ulong)(uVar7 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar7 & 0xff)" ( (binary_expression "uVar7 & 0xff" identifier & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar10 >> 0x18) * 4)" ( (binary_expression "param_3 + (ulong)(uVar10 >> 0x18) * 4" identifier + (binary_expression "(ulong)(uVar10 >> 0x18) * 4" (call_expression "(ulong)(uVar10 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar10 >> 0x18)" ( (binary_expression "uVar10 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)((uVar7 & 0xff00) >> 8) * 4" (call_expression "(ulong)((uVar7 & 0xff00) >> 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff00) >> 8)" ( (binary_expression "(uVar7 & 0xff00) >> 8" (parenthesized_expression "(uVar7 & 0xff00)" ( (binary_expression "uVar7 & 0xff00" identifier & number_literal) )) >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (call_expression "(ulong)((uVar7 & 0xff0000) >> 0x10)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((uVar7 & 0xff0000) >> 0x10)" ( (binary_expression "(uVar7 & 0xff0000) >> 0x10" (parenthesized_expression "(uVar7 & 0xff0000)" ( (binary_expression "uVar7 & 0xff0000" identifier & number_literal) )) >> number_literal) ))) * number_literal)) )))))) ;) (expression_statement "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" identifier = (binary_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4))" ( (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" ( (binary_expression "param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 8 & 0xff)" ( (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" identifier >> number_literal) & number_literal) ))) * number_literal)) )))) ^ (pointer_expression "*(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + (ulong)(uVar8 & 0xff) * 4)" ( (binary_expression "param_3 + (ulong)(uVar8 & 0xff) * 4" identifier + (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 & 0xff)" ( (binary_expression "uVar8 & 0xff" identifier & number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" * (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" ( (binary_expression "param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x18)" ( (binary_expression "uVar8 >> 0x18" identifier >> number_literal) ))) * number_literal)) ))))) ^ (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" * (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" ( (binary_expression "param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" identifier + number_literal) + (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar8 >> 0x10 & 0xff)" ( (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" identifier >> number_literal) & number_literal) ))) * number_literal)) ))))) )) + identifier)) ;) (expression_statement "piVar1 = piVar9 + 1;" (assignment_expression "piVar1 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;" (assignment_expression "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" identifier = (binary_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" (parenthesized_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0))" ( (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" identifier << number_literal) | (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)uVar5 < 0)" ( (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )))) )) ^ (binary_expression "*piVar9 + iVar4" (pointer_expression "*piVar9" * identifier) + identifier))) ;) (expression_statement "piVar9 = piVar9 + -4;" (assignment_expression "piVar9 = piVar9 + -4" identifier = (binary_expression "piVar9 + -4" identifier + number_literal)) ;) (expression_statement "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;" (assignment_expression "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6" identifier = (binary_expression "iVar4 + uVar7 + *piVar1 ^ uVar6" (binary_expression "iVar4 + uVar7 + *piVar1" (binary_expression "iVar4 + uVar7" identifier + identifier) + (pointer_expression "*piVar1" * identifier)) ^ identifier)) ;) (expression_statement "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;" (assignment_expression "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" identifier = (binary_expression "uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" (binary_expression "uVar6 >> 1" identifier >> number_literal) | (binary_expression "(uint)((uVar6 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar6 & 1) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) ))) << number_literal))) ;) }) while (parenthesized_expression "(piVar9 != (int *)(param_3 + 0x1010))" ( (binary_expression "piVar9 != (int *)(param_3 + 0x1010)" identifier != (cast_expression "(int *)(param_3 + 0x1010)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1010)" ( (binary_expression "param_3 + 0x1010" identifier + number_literal) )))) )) ;) (expression_statement "uVar7 = *(uint *)(param_3 + 0x1004);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x1004)" identifier = (pointer_expression "*(uint *)(param_3 + 0x1004)" * (cast_expression "(uint *)(param_3 + 0x1004)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1004)" ( (binary_expression "param_3 + 0x1004" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = *(uint *)(param_3 + 0x100c);" (assignment_expression "uVar2 = *(uint *)(param_3 + 0x100c)" identifier = (pointer_expression "*(uint *)(param_3 + 0x100c)" * (cast_expression "(uint *)(param_3 + 0x100c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x100c)" ( (binary_expression "param_3 + 0x100c" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(uint *)(param_3 + 0x1000);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x1000)" identifier = (pointer_expression "*(uint *)(param_3 + 0x1000)" * (cast_expression "(uint *)(param_3 + 0x1000)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1000)" ( (binary_expression "param_3 + 0x1000" identifier + number_literal) ))))) ;) (expression_statement "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);" (assignment_expression "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008)" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar5 ^ *(uint *)(param_3 + 0x1008)" identifier ^ (pointer_expression "*(uint *)(param_3 + 0x1008)" * (cast_expression "(uint *)(param_3 + 0x1008)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x1008)" ( (binary_expression "param_3 + 0x1008" identifier + number_literal) )))))) ;) (expression_statement "param_2[3] = uVar6 ^ uVar2;" (assignment_expression "param_2[3] = uVar6 ^ uVar2" (subscript_expression "param_2[3]" identifier [ number_literal ]) = (binary_expression "uVar6 ^ uVar2" identifier ^ identifier)) ;) (expression_statement "*param_2 = uVar8 ^ uVar3;" (assignment_expression "*param_2 = uVar8 ^ uVar3" (pointer_expression "*param_2" * identifier) = (binary_expression "uVar8 ^ uVar3" identifier ^ identifier)) ;) (expression_statement "param_2[1] = uVar7 ^ uVar10;" (assignment_expression "param_2[1] = uVar7 ^ uVar10" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "uVar7 ^ uVar10" identifier ^ identifier)) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" identifier (argument_list "("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" ( (string_literal ""skey != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" identifier (argument_list "("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" ( (string_literal ""ct != NULL"" " string_content ") , (string_literal ""src/ciphers/twofish/twofish.c"" " string_content ") , number_literal ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ^ (subscript_expression IDENT [ LIT ]))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) ))))) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + IDENT) ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )))) )) ^ (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) >> LIT) ))) * LIT)) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) )))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT & LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * LIT)) ))))) ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT >> LIT) & LIT) ))) * LIT)) ))))) )) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT << LIT) | (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )))) )) ^ (binary_expression (pointer_expression * IDENT) + IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + IDENT) + (pointer_expression * IDENT)) ^ IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) << LIT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT ^ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT ^ IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT ^ IDENT)) ;) (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })))
(function_definition "undefined8 twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)\n\n{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" (type_identifier "undefined8") (function_declarator "twofish_ecb_decrypt(uint *param_1,uint *param_2,long param_3)" (identifier "twofish_ecb_decrypt") (parameter_list "(uint *param_1,uint *param_2,long param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  int *piVar1;\n  uint uVar2;\n  uint uVar3;\n  int iVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  uint uVar10;\n  \n  if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }\n  if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }\n                    \n  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (if_statement "if (param_2 == (uint *)0x0) {\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" (if "if") (parenthesized_expression "(param_2 == (uint *)0x0)" (( "(") (binary_expression "param_2 == (uint *)0x0" (identifier "param_2") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);\n  }" ({ "{") (expression_statement "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);" (call_expression "crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" (identifier "crypt_argchk") (argument_list "("pt != NULL","src/ciphers/twofish/twofish.c",0x227)" (( "(") (string_literal ""pt != NULL"" (" """) (string_content "pt != NULL") (" """)) (, ",") (string_literal ""src/ciphers/twofish/twofish.c"" (" """) (string_content "src/ciphers/twofish/twofish.c") (" """)) (, ",") (number_literal "0x227") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1 != (uint *)0x0) {\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" (if "if") (parenthesized_expression "(param_1 != (uint *)0x0)" (( "(") (binary_expression "param_1 != (uint *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }\n                    \n    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);\n  }" ({ "{") (if_statement "if (param_3 != 0) {\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      piVar9 = (int *)(param_3 + 0x1090);\n      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];\n      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];\n      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;\n      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];\n      do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));\n      uVar7 = *(uint *)(param_3 + 0x1004);\n      uVar2 = *(uint *)(param_3 + 0x100c);\n      uVar3 = *(uint *)(param_3 + 0x1000);\n      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);\n      param_2[3] = uVar6 ^ uVar2;\n      *param_2 = uVar8 ^ uVar3;\n      param_2[1] = uVar7 ^ uVar10;\n      return 0;\n    }" ({ "{") (expression_statement "piVar9 = (int *)(param_3 + 0x1090);" (assignment_expression "piVar9 = (int *)(param_3 + 0x1090)" (identifier "piVar9") (= "=") (cast_expression "(int *)(param_3 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1090)" (( "(") (binary_expression "param_3 + 0x1090" (identifier "param_3") (+ "+") (number_literal "0x1090")) () ")")))) (; ";")) (expression_statement "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];" (assignment_expression "uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2]" (identifier "uVar8") (= "=") (binary_expression "*(uint *)(param_3 + 0x1018) ^ param_1[2]" (pointer_expression "*(uint *)(param_3 + 0x1018)" (* "*") (cast_expression "(uint *)(param_3 + 0x1018)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1018)" (( "(") (binary_expression "param_3 + 0x1018" (identifier "param_3") (+ "+") (number_literal "0x1018")) () ")")))) (^ "^") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];" (assignment_expression "uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3]" (identifier "uVar10") (= "=") (binary_expression "*(uint *)(param_3 + 0x101c) ^ param_1[3]" (pointer_expression "*(uint *)(param_3 + 0x101c)" (* "*") (cast_expression "(uint *)(param_3 + 0x101c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x101c)" (( "(") (binary_expression "param_3 + 0x101c" (identifier "param_3") (+ "+") (number_literal "0x101c")) () ")")))) (^ "^") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;" (assignment_expression "uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1" (identifier "uVar5") (= "=") (binary_expression "*(uint *)(param_3 + 0x1010) ^ *param_1" (pointer_expression "*(uint *)(param_3 + 0x1010)" (* "*") (cast_expression "(uint *)(param_3 + 0x1010)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1010)" (( "(") (binary_expression "param_3 + 0x1010" (identifier "param_3") (+ "+") (number_literal "0x1010")) () ")")))) (^ "^") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];" (assignment_expression "uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1]" (identifier "uVar6") (= "=") (binary_expression "*(uint *)(param_3 + 0x1014) ^ param_1[1]" (pointer_expression "*(uint *)(param_3 + 0x1014)" (* "*") (cast_expression "(uint *)(param_3 + 0x1014)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1014)" (( "(") (binary_expression "param_3 + 0x1014" (identifier "param_3") (+ "+") (number_literal "0x1014")) () ")")))) (^ "^") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (do_statement "do {\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      } while (piVar9 != (int *)(param_3 + 0x1010));" (do "do") (compound_statement "{\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);\n        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;\n        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;\n        uVar7 = uVar10 >> 1;\n        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;\n        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;\n        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);\n        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;\n        piVar1 = piVar9 + 1;\n        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;\n        piVar9 = piVar9 + -4;\n        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;\n        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;\n      }" ({ "{") (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (identifier "uVar7") (= "=") (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4" (binary_expression "param_3 + 0x400" (identifier "param_3") (+ "+") (number_literal "0x400")) (+ "+") (binary_expression "(ulong)(uVar6 & 0xff) * 4" (call_expression "(ulong)(uVar6 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 & 0xff)" (( "(") (binary_expression "uVar6 & 0xff" (identifier "uVar6") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (ulong)(uVar6 >> 0x18) * 4)" (( "(") (binary_expression "param_3 + (ulong)(uVar6 >> 0x18) * 4" (identifier "param_3") (+ "+") (binary_expression "(ulong)(uVar6 >> 0x18) * 4" (call_expression "(ulong)(uVar6 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x18)" (( "(") (binary_expression "uVar6 >> 0x18" (identifier "uVar6") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4)" (( "(") (binary_expression "param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4" (binary_expression "param_3 + 0x800" (identifier "param_3") (+ "+") (number_literal "0x800")) (+ "+") (binary_expression "(ulong)(byte)(uVar6 >> 8) * 4" (call_expression "(ulong)(byte)(uVar6 >> 8)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(uVar6 >> 8)" (( "(") (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0xc00" (identifier "param_3") (+ "+") (number_literal "0xc00")) (+ "+") (binary_expression "(ulong)(uVar6 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar6 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar6 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar6 >> 0x10 & 0xff" (binary_expression "uVar6 >> 0x10" (identifier "uVar6") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" (identifier "iVar4") (= "=") (binary_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4))" (( "(") (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^\n                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (ulong)(uVar5 & 0xff) * 4)" (( "(") (binary_expression "param_3 + (ulong)(uVar5 & 0xff) * 4" (identifier "param_3") (+ "+") (binary_expression "(ulong)(uVar5 & 0xff) * 4" (call_expression "(ulong)(uVar5 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 & 0xff)" (( "(") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4)" (( "(") (binary_expression "param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" (identifier "param_3") (+ "+") (number_literal "0xc00")) (+ "+") (binary_expression "(ulong)(uVar5 >> 0x18) * 4" (call_expression "(ulong)(uVar5 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 >> 0x18)" (( "(") (binary_expression "uVar5 >> 0x18" (identifier "uVar5") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" (identifier "param_3") (+ "+") (number_literal "0x400")) (+ "+") (binary_expression "(ulong)(uVar5 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 8 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 >> 8 & 0xff)" (( "(") (binary_expression "uVar5 >> 8 & 0xff" (binary_expression "uVar5 >> 8" (identifier "uVar5") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" (identifier "param_3") (+ "+") (number_literal "0x800")) (+ "+") (binary_expression "(ulong)(uVar5 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar5 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar5 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar5 >> 0x10 & 0xff" (binary_expression "uVar5 >> 0x10" (identifier "uVar5") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) () ")")) (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;" (assignment_expression "uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10" (identifier "uVar10") (= "=") (binary_expression "piVar9[3] + uVar7 + iVar4 ^ uVar10" (binary_expression "piVar9[3] + uVar7 + iVar4" (binary_expression "piVar9[3] + uVar7" (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")) (+ "+") (identifier "uVar7")) (+ "+") (identifier "iVar4")) (^ "^") (identifier "uVar10"))) (; ";")) (expression_statement "uVar7 = uVar10 >> 1;" (assignment_expression "uVar7 = uVar10 >> 1" (identifier "uVar7") (= "=") (binary_expression "uVar10 >> 1" (identifier "uVar10") (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;" (assignment_expression "uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" (identifier "uVar10") (= "=") (binary_expression "uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f" (identifier "uVar7") (| "|") (binary_expression "(uint)((uVar10 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar10 & 1) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar10 & 1) != 0)" (( "(") (binary_expression "(uVar10 & 1) != 0" (parenthesized_expression "(uVar10 & 1)" (( "(") (binary_expression "uVar10 & 1" (identifier "uVar10") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) (<< "<<") (number_literal "0x1f")))) (; ";")) (expression_statement "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;" (assignment_expression "uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" (identifier "uVar8") (= "=") (binary_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4" (parenthesized_expression "(uVar8 << 1 | (uint)((int)uVar8 < 0))" (( "(") (binary_expression "uVar8 << 1 | (uint)((int)uVar8 < 0)" (binary_expression "uVar8 << 1" (identifier "uVar8") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar8 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar8 < 0)" (( "(") (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (< "<") (number_literal "0")) () ")")))) () ")")) (^ "^") (binary_expression "piVar9[2] + iVar4" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (+ "+") (identifier "iVar4")))) (; ";")) (expression_statement "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (identifier "uVar7") (= "=") (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^\n                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^\n                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4" (binary_expression "param_3 + 0x400" (identifier "param_3") (+ "+") (number_literal "0x400")) (+ "+") (binary_expression "(ulong)(uVar7 & 0xff) * 4" (call_expression "(ulong)(uVar7 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar7 & 0xff)" (( "(") (binary_expression "uVar7 & 0xff" (identifier "uVar7") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (ulong)(uVar10 >> 0x18) * 4)" (( "(") (binary_expression "param_3 + (ulong)(uVar10 >> 0x18) * 4" (identifier "param_3") (+ "+") (binary_expression "(ulong)(uVar10 >> 0x18) * 4" (call_expression "(ulong)(uVar10 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar10 >> 0x18)" (( "(") (binary_expression "uVar10 >> 0x18" (identifier "uVar10") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4)" (( "(") (binary_expression "param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4" (binary_expression "param_3 + 0x800" (identifier "param_3") (+ "+") (number_literal "0x800")) (+ "+") (binary_expression "(ulong)((uVar7 & 0xff00) >> 8) * 4" (call_expression "(ulong)((uVar7 & 0xff00) >> 8)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uVar7 & 0xff00) >> 8)" (( "(") (binary_expression "(uVar7 & 0xff00) >> 8" (parenthesized_expression "(uVar7 & 0xff00)" (( "(") (binary_expression "uVar7 & 0xff00" (identifier "uVar7") (& "&") (number_literal "0xff00")) () ")")) (>> ">>") (number_literal "8")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4)" (( "(") (binary_expression "param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (binary_expression "param_3 + 0xc00" (identifier "param_3") (+ "+") (number_literal "0xc00")) (+ "+") (binary_expression "(ulong)((uVar7 & 0xff0000) >> 0x10) * 4" (call_expression "(ulong)((uVar7 & 0xff0000) >> 0x10)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((uVar7 & 0xff0000) >> 0x10)" (( "(") (binary_expression "(uVar7 & 0xff0000) >> 0x10" (parenthesized_expression "(uVar7 & 0xff0000)" (( "(") (binary_expression "uVar7 & 0xff0000" (identifier "uVar7") (& "&") (number_literal "0xff0000")) () ")")) (>> ">>") (number_literal "0x10")) () ")"))) (* "*") (number_literal "4"))) () ")")))))) (; ";")) (expression_statement "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;" (assignment_expression "iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" (identifier "iVar4") (= "=") (binary_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7" (parenthesized_expression "(*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4))" (( "(") (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^\n                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (binary_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^\n                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" (pointer_expression "*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4" (binary_expression "param_3 + 0x400" (identifier "param_3") (+ "+") (number_literal "0x400")) (+ "+") (binary_expression "(ulong)(uVar8 >> 8 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 8 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 >> 8 & 0xff)" (( "(") (binary_expression "uVar8 >> 8 & 0xff" (binary_expression "uVar8 >> 8" (identifier "uVar8") (>> ">>") (number_literal "8")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (^ "^") (pointer_expression "*(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + (ulong)(uVar8 & 0xff) * 4)" (( "(") (binary_expression "param_3 + (ulong)(uVar8 & 0xff) * 4" (identifier "param_3") (+ "+") (binary_expression "(ulong)(uVar8 & 0xff) * 4" (call_expression "(ulong)(uVar8 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 & 0xff)" (( "(") (binary_expression "uVar8 & 0xff" (identifier "uVar8") (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4)" (( "(") (binary_expression "param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4" (binary_expression "param_3 + 0xc00" (identifier "param_3") (+ "+") (number_literal "0xc00")) (+ "+") (binary_expression "(ulong)(uVar8 >> 0x18) * 4" (call_expression "(ulong)(uVar8 >> 0x18)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 >> 0x18)" (( "(") (binary_expression "uVar8 >> 0x18" (identifier "uVar8") (>> ">>") (number_literal "0x18")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (^ "^") (pointer_expression "*(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (* "*") (cast_expression "(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)" (( "(") (binary_expression "param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4" (binary_expression "param_3 + 0x800" (identifier "param_3") (+ "+") (number_literal "0x800")) (+ "+") (binary_expression "(ulong)(uVar8 >> 0x10 & 0xff) * 4" (call_expression "(ulong)(uVar8 >> 0x10 & 0xff)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar8 >> 0x10 & 0xff)" (( "(") (binary_expression "uVar8 >> 0x10 & 0xff" (binary_expression "uVar8 >> 0x10" (identifier "uVar8") (>> ">>") (number_literal "0x10")) (& "&") (number_literal "0xff")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) () ")")) (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "piVar1 = piVar9 + 1;" (assignment_expression "piVar1 = piVar9 + 1" (identifier "piVar1") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;" (assignment_expression "uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" (identifier "uVar5") (= "=") (binary_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4" (parenthesized_expression "(uVar5 << 1 | (uint)((int)uVar5 < 0))" (( "(") (binary_expression "uVar5 << 1 | (uint)((int)uVar5 < 0)" (binary_expression "uVar5 << 1" (identifier "uVar5") (<< "<<") (number_literal "1")) (| "|") (call_expression "(uint)((int)uVar5 < 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)uVar5 < 0)" (( "(") (binary_expression "(int)uVar5 < 0" (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5")) (< "<") (number_literal "0")) () ")")))) () ")")) (^ "^") (binary_expression "*piVar9 + iVar4" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (+ "+") (identifier "iVar4")))) (; ";")) (expression_statement "piVar9 = piVar9 + -4;" (assignment_expression "piVar9 = piVar9 + -4" (identifier "piVar9") (= "=") (binary_expression "piVar9 + -4" (identifier "piVar9") (+ "+") (number_literal "-4"))) (; ";")) (expression_statement "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;" (assignment_expression "uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6" (identifier "uVar6") (= "=") (binary_expression "iVar4 + uVar7 + *piVar1 ^ uVar6" (binary_expression "iVar4 + uVar7 + *piVar1" (binary_expression "iVar4 + uVar7" (identifier "iVar4") (+ "+") (identifier "uVar7")) (+ "+") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (^ "^") (identifier "uVar6"))) (; ";")) (expression_statement "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;" (assignment_expression "uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" (identifier "uVar6") (= "=") (binary_expression "uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f" (binary_expression "uVar6 >> 1" (identifier "uVar6") (>> ">>") (number_literal "1")) (| "|") (binary_expression "(uint)((uVar6 & 1) != 0) << 0x1f" (call_expression "(uint)((uVar6 & 1) != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((uVar6 & 1) != 0)" (( "(") (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) (<< "<<") (number_literal "0x1f")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 != (int *)(param_3 + 0x1010))" (( "(") (binary_expression "piVar9 != (int *)(param_3 + 0x1010)" (identifier "piVar9") (!= "!=") (cast_expression "(int *)(param_3 + 0x1010)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1010)" (( "(") (binary_expression "param_3 + 0x1010" (identifier "param_3") (+ "+") (number_literal "0x1010")) () ")")))) () ")")) (; ";")) (expression_statement "uVar7 = *(uint *)(param_3 + 0x1004);" (assignment_expression "uVar7 = *(uint *)(param_3 + 0x1004)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(param_3 + 0x1004)" (* "*") (cast_expression "(uint *)(param_3 + 0x1004)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1004)" (( "(") (binary_expression "param_3 + 0x1004" (identifier "param_3") (+ "+") (number_literal "0x1004")) () ")"))))) (; ";")) (expression_statement "uVar2 = *(uint *)(param_3 + 0x100c);" (assignment_expression "uVar2 = *(uint *)(param_3 + 0x100c)" (identifier "uVar2") (= "=") (pointer_expression "*(uint *)(param_3 + 0x100c)" (* "*") (cast_expression "(uint *)(param_3 + 0x100c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x100c)" (( "(") (binary_expression "param_3 + 0x100c" (identifier "param_3") (+ "+") (number_literal "0x100c")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_3 + 0x1000);" (assignment_expression "uVar3 = *(uint *)(param_3 + 0x1000)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_3 + 0x1000)" (* "*") (cast_expression "(uint *)(param_3 + 0x1000)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1000)" (( "(") (binary_expression "param_3 + 0x1000" (identifier "param_3") (+ "+") (number_literal "0x1000")) () ")"))))) (; ";")) (expression_statement "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);" (assignment_expression "param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008)" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar5 ^ *(uint *)(param_3 + 0x1008)" (identifier "uVar5") (^ "^") (pointer_expression "*(uint *)(param_3 + 0x1008)" (* "*") (cast_expression "(uint *)(param_3 + 0x1008)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x1008)" (( "(") (binary_expression "param_3 + 0x1008" (identifier "param_3") (+ "+") (number_literal "0x1008")) () ")")))))) (; ";")) (expression_statement "param_2[3] = uVar6 ^ uVar2;" (assignment_expression "param_2[3] = uVar6 ^ uVar2" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "uVar6 ^ uVar2" (identifier "uVar6") (^ "^") (identifier "uVar2"))) (; ";")) (expression_statement "*param_2 = uVar8 ^ uVar3;" (assignment_expression "*param_2 = uVar8 ^ uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "uVar8 ^ uVar3" (identifier "uVar8") (^ "^") (identifier "uVar3"))) (; ";")) (expression_statement "param_2[1] = uVar7 ^ uVar10;" (assignment_expression "param_2[1] = uVar7 ^ uVar10" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar7 ^ uVar10" (identifier "uVar7") (^ "^") (identifier "uVar10"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);" (call_expression "crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" (identifier "crypt_argchk") (argument_list "("skey != NULL","src/ciphers/twofish/twofish.c",0x229)" (( "(") (string_literal ""skey != NULL"" (" """) (string_content "skey != NULL") (" """)) (, ",") (string_literal ""src/ciphers/twofish/twofish.c"" (" """) (string_content "src/ciphers/twofish/twofish.c") (" """)) (, ",") (number_literal "0x229") () ")"))) (; ";")) (} "}"))) (expression_statement "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);" (call_expression "crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" (identifier "crypt_argchk") (argument_list "("ct != NULL","src/ciphers/twofish/twofish.c",0x228)" (( "(") (string_literal ""ct != NULL"" (" """) (string_content "ct != NULL") (" """)) (, ",") (string_literal ""src/ciphers/twofish/twofish.c"" (" """) (string_content "src/ciphers/twofish/twofish.c") (" """)) (, ",") (number_literal "0x228") () ")"))) (; ";")) (} "}")))

int function_1(type_1 *var_3,type_1 *var_1,type_2 *var_4)

{
  type_3 *puVar1;
  type_4 var_12;
  type_4 var_13;
  int var_8;
  type_4 var_6;
  type_4 var_5;
  type_4 var_7;
  type_4 var_10;
  type_3 *var_11;
  type_4 var_9;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("pt != NULL","src/ciphers/twofish/twofish.c",0x227);
  }
  if (var_3 != (type_1 *)0x0) {
    if (var_4 != (type_2 *)0x0) {
      var_11 = (var_4->twofish).K + 0x24;
      var_10 = (var_4->twofish).K[6] ^ *(type_4 *)(var_3 + 8);
      var_9 = (var_4->twofish).K[7] ^ *(type_4 *)(var_3 + 0xc);
      var_6 = (var_4->twofish).K[4] ^ *(type_4 *)var_3;
      var_5 = (var_4->twofish).K[5] ^ *(type_4 *)(var_3 + 4);
      do {
        var_7 = *(type_4 *)((long)var_4 + (ulong)(var_5 & 0xff) * 4 + 0x400) ^
                *(type_4 *)((long)var_4 + (ulong)(var_5 >> 0x18) * 4) ^
                *(type_4 *)((long)var_4 + (ulong)(byte)(var_5 >> 8) * 4 + 0x800) ^
                *(type_4 *)((long)var_4 + (ulong)(var_5 >> 0x10 & 0xff) * 4 + 0xc00);
        var_8 = (*(type_4 *)((long)var_4 + (ulong)(var_6 & 0xff) * 4) ^
                 *(type_4 *)((long)var_4 + (ulong)(var_6 >> 0x18) * 4 + 0xc00) ^
                 *(type_4 *)((long)var_4 + (ulong)(var_6 >> 8 & 0xff) * 4 + 0x400) ^
                *(type_4 *)((long)var_4 + (ulong)(var_6 >> 0x10 & 0xff) * 4 + 0x800)) + var_7;
        var_9 = var_11[3] + var_7 + var_8 ^ var_9;
        var_7 = var_9 >> 1;
        var_9 = var_7 | (type_4)((var_9 & 1) != 0) << 0x1f;
        var_10 = (var_10 << 1 | (type_4)((int)var_10 < 0)) ^ var_11[2] + var_8;
        var_7 = *(type_4 *)((long)var_4 + (ulong)(var_7 & 0xff) * 4 + 0x400) ^
                *(type_4 *)((long)var_4 + (ulong)(var_9 >> 0x18) * 4) ^
                *(type_4 *)((long)var_4 + (ulong)((var_7 & 0xff00) >> 8) * 4 + 0x800) ^
                *(type_4 *)((long)var_4 + (ulong)((var_7 & 0xff0000) >> 0x10) * 4 + 0xc00);
        var_8 = (*(type_4 *)((long)var_4 + (ulong)(var_10 >> 8 & 0xff) * 4 + 0x400) ^
                 *(type_4 *)((long)var_4 + (ulong)(var_10 & 0xff) * 4) ^
                 *(type_4 *)((long)var_4 + (ulong)(var_10 >> 0x18) * 4 + 0xc00) ^
                *(type_4 *)((long)var_4 + (ulong)(var_10 >> 0x10 & 0xff) * 4 + 0x800)) + var_7;
        puVar1 = var_11 + 1;
        var_6 = (var_6 << 1 | (type_4)((int)var_6 < 0)) ^ *var_11 + var_8;
        var_11 = var_11 + -4;
        var_5 = var_8 + var_7 + *puVar1 ^ var_5;
        var_5 = var_5 >> 1 | (type_4)((var_5 & 1) != 0) << 0x1f;
      } while (var_11 != (var_4->twofish).K + 4);
      var_7 = (var_4->twofish).K[1];
      var_12 = (var_4->twofish).K[3];
      var_13 = (var_4->twofish).K[0];
      *(type_4 *)(var_1 + 8) = var_6 ^ (var_4->twofish).K[2];
      *(type_4 *)(var_1 + 0xc) = var_5 ^ var_12;
      *(type_4 *)var_1 = var_10 ^ var_13;
      *(type_4 *)(var_1 + 4) = var_7 ^ var_9;
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    var_2("skey != NULL","src/ciphers/twofish/twofish.c",0x229);
  }
                    /* WARNING: Subroutine does not return */
  var_2("ct != NULL","src/ciphers/twofish/twofish.c",0x228);
}


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

undefined8 MASKED(uint *param_1,uint *param_2,long param_3)

{
  int *piVar1;
  uint uVar2;
  uint uVar3;
  int iVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  uint uVar10;
  
  if (param_2 == (uint *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("pt != NULL","src/ciphers/twofish/twofish.c",0x227);
  }
  if (param_1 != (uint *)0x0) {
    if (param_3 != 0) {
      piVar9 = (int *)(param_3 + 0x1090);
      uVar8 = *(uint *)(param_3 + 0x1018) ^ param_1[2];
      uVar10 = *(uint *)(param_3 + 0x101c) ^ param_1[3];
      uVar5 = *(uint *)(param_3 + 0x1010) ^ *param_1;
      uVar6 = *(uint *)(param_3 + 0x1014) ^ param_1[1];
      do {
        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar6 & 0xff) * 4) ^
                *(uint *)(param_3 + (ulong)(uVar6 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(byte)(uVar6 >> 8) * 4) ^
                *(uint *)(param_3 + 0xc00 + (ulong)(uVar6 >> 0x10 & 0xff) * 4);
        iVar4 = (*(uint *)(param_3 + (ulong)(uVar5 & 0xff) * 4) ^
                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar5 >> 0x18) * 4) ^
                 *(uint *)(param_3 + 0x400 + (ulong)(uVar5 >> 8 & 0xff) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(uVar5 >> 0x10 & 0xff) * 4)) + uVar7;
        uVar10 = piVar9[3] + uVar7 + iVar4 ^ uVar10;
        uVar7 = uVar10 >> 1;
        uVar10 = uVar7 | (uint)((uVar10 & 1) != 0) << 0x1f;
        uVar8 = (uVar8 << 1 | (uint)((int)uVar8 < 0)) ^ piVar9[2] + iVar4;
        uVar7 = *(uint *)(param_3 + 0x400 + (ulong)(uVar7 & 0xff) * 4) ^
                *(uint *)(param_3 + (ulong)(uVar10 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)((uVar7 & 0xff00) >> 8) * 4) ^
                *(uint *)(param_3 + 0xc00 + (ulong)((uVar7 & 0xff0000) >> 0x10) * 4);
        iVar4 = (*(uint *)(param_3 + 0x400 + (ulong)(uVar8 >> 8 & 0xff) * 4) ^
                 *(uint *)(param_3 + (ulong)(uVar8 & 0xff) * 4) ^
                 *(uint *)(param_3 + 0xc00 + (ulong)(uVar8 >> 0x18) * 4) ^
                *(uint *)(param_3 + 0x800 + (ulong)(uVar8 >> 0x10 & 0xff) * 4)) + uVar7;
        piVar1 = piVar9 + 1;
        uVar5 = (uVar5 << 1 | (uint)((int)uVar5 < 0)) ^ *piVar9 + iVar4;
        piVar9 = piVar9 + -4;
        uVar6 = iVar4 + uVar7 + *piVar1 ^ uVar6;
        uVar6 = uVar6 >> 1 | (uint)((uVar6 & 1) != 0) << 0x1f;
      } while (piVar9 != (int *)(param_3 + 0x1010));
      uVar7 = *(uint *)(param_3 + 0x1004);
      uVar2 = *(uint *)(param_3 + 0x100c);
      uVar3 = *(uint *)(param_3 + 0x1000);
      param_2[2] = uVar5 ^ *(uint *)(param_3 + 0x1008);
      param_2[3] = uVar6 ^ uVar2;
      *param_2 = uVar8 ^ uVar3;
      param_2[1] = uVar7 ^ uVar10;
      return 0;
    }
                    /* WARNING: Subroutine does not return */
    crypt_argchk("skey != NULL","src/ciphers/twofish/twofish.c",0x229);
  }
                    /* WARNING: Subroutine does not return */
  crypt_argchk("ct != NULL","src/ciphers/twofish/twofish.c",0x228);
}

