
int ofb_start(int cipher,uchar *IV,uchar *key,int keylen,int num_rounds,symmetric_OFB *ofb)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  ulong uVar4;
  
  if (IV == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);
  }
  if (key == (uchar *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);
  }
  if (ofb == (symmetric_OFB *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);
  }
  iVar2 = cipher_is_valid(cipher);
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (iVar2 == 0) {
    ofb->cipher = cipher;
    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);
    ofb->blocklen = iVar2;
    if (0 < iVar2) {
      uVar4 = 0;
      uVar3 = iVar2 - 1U & 7;
      if (uVar3 != 0) {
        uVar4 = 1;
        ofb->IV[0] = *IV;
        if (uVar3 != 1) {
          if (uVar3 != 2) {
            if (uVar3 != 3) {
              if (uVar3 != 4) {
                if (uVar3 != 5) {
                  if (uVar3 != 6) {
                    uVar4 = 2;
                    ofb->IV[1] = IV[1];
                  }
                  ofb->IV[uVar4] = IV[uVar4];
                  uVar4 = uVar4 + 1;
                }
                ofb->IV[uVar4] = IV[uVar4];
                uVar4 = uVar4 + 1;
              }
              ofb->IV[uVar4] = IV[uVar4];
              uVar4 = uVar4 + 1;
            }
            ofb->IV[uVar4] = IV[uVar4];
            uVar4 = uVar4 + 1;
          }
          ofb->IV[uVar4] = IV[uVar4];
          uVar4 = uVar4 + 1;
        }
      }
      while( true ) {
        ofb->IV[uVar4] = IV[uVar4];
        if (iVar2 - 1U == uVar4) break;
        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];
        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];
        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];
        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];
        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];
        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];
        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];
        uVar4 = uVar4 + 8;
      }
    }
    ofb->padlen = iVar2;
                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);
    return iVar2;
  }
  return iVar2;
}



void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,
              int *param_6)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  ulong uVar4;
  
  if (param_2 == (undefined1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);
  }
  if (param_6 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);
  }
  iVar2 = cipher_is_valid(param_1);
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (iVar2 == 0) {
    *param_6 = param_1;
    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);
    param_6[1] = iVar2;
    if (0 < iVar2) {
      uVar4 = 0;
      uVar3 = iVar2 - 1U & 7;
      if (uVar3 != 0) {
        uVar4 = 1;
        *(undefined1 *)(param_6 + 3) = *param_2;
        if (uVar3 != 1) {
          if (uVar3 != 2) {
            if (uVar3 != 3) {
              if (uVar3 != 4) {
                if (uVar3 != 5) {
                  if (uVar3 != 6) {
                    uVar4 = 2;
                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];
                  }
                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
                  uVar4 = uVar4 + 1;
                }
                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
                uVar4 = uVar4 + 1;
              }
              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
              uVar4 = uVar4 + 1;
            }
            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
            uVar4 = uVar4 + 1;
          }
          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
          uVar4 = uVar4 + 1;
        }
      }
      while( true ) {
        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
        if (iVar2 - 1U == uVar4) break;
        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];
        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];
        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];
        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];
        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];
        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];
        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];
        uVar4 = uVar4 + 8;
      }
    }
    param_6[2] = iVar2;
                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);
    return;
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x8
TEST RSI,RSI
JZ 0x0016c3df
MOV R15,RDX
TEST RDX,RDX
JZ 0x0016c3c7
MOV RBX,R9
TEST R9,R9
JZ 0x0016c3f7
MOVSXD R12,EDI
MOV RBP,RSI
MOV R13D,ECX
MOV R14D,R8D
MOV EDI,R12D
CALL 0x00113da0
TEST EAX,EAX
JNZ 0x0016c3b8
MOV RSI,qword ptr [0x001dded0]
LEA RAX,[R12 + R12*0x2]
MOV dword ptr [RBX],R12D
SHL RAX,0x6
MOV EDX,dword ptr [RSI + RAX*0x1 + 0x14]
MOV dword ptr [RBX + 0x4],EDX
TEST EDX,EDX
JLE 0x0016c385
LEA EDI,[RDX + -0x1]
XOR R11D,R11D
MOV RCX,RDI
AND ECX,0x7
JZ 0x0016c371
MOVZX R8D,byte ptr [RBP]
MOV R9D,0x1
MOV R11D,0x1
MOV byte ptr [RBX + 0xc],R8B
CMP RCX,0x1
JZ 0x0016c371
CMP RCX,0x2
JZ 0x0016c306
CMP RCX,0x3
JZ 0x0016c2f7
CMP RCX,0x4
JZ 0x0016c2e8
CMP RCX,0x5
JZ 0x0016c2d9
CMP RCX,0x6
JZ 0x0016c2ca
MOVZX R10D,byte ptr [RBP + R9*0x1]
LEA R11,[R9 + 0x1]
MOV byte ptr [RBX + R9*0x1 + 0xc],R10B
MOVZX EAX,byte ptr [RBP + R11*0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],AL
ADD R11,0x1
MOVZX ECX,byte ptr [RBP + R11*0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],CL
ADD R11,0x1
MOVZX R8D,byte ptr [RBP + R11*0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],R8B
ADD R11,0x1
MOVZX R9D,byte ptr [RBP + R11*0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],R9B
ADD R11,0x1
MOVZX R10D,byte ptr [RBP + R11*0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],R10B
ADD R11,0x1
JMP 0x0016c371
MOVZX R8D,byte ptr [RBP + R11*0x1 + 0x1]
MOV byte ptr [RBX + RCX*0x1 + 0xc],R8B
MOVZX R9D,byte ptr [RBP + R11*0x1 + 0x2]
MOV byte ptr [RBX + R11*0x1 + 0xe],R9B
MOVZX R10D,byte ptr [RBP + R11*0x1 + 0x3]
MOV byte ptr [RBX + R11*0x1 + 0xf],R10B
MOVZX ECX,byte ptr [RBP + R11*0x1 + 0x4]
MOV byte ptr [RBX + R11*0x1 + 0x10],CL
MOVZX EAX,byte ptr [RBP + R11*0x1 + 0x5]
MOV byte ptr [RBX + R11*0x1 + 0x11],AL
MOVZX R8D,byte ptr [RBP + R11*0x1 + 0x6]
MOV byte ptr [RBX + R11*0x1 + 0x12],R8B
MOVZX R9D,byte ptr [RBP + R11*0x1 + 0x7]
MOV byte ptr [RBX + R11*0x1 + 0x13],R9B
ADD R11,0x8
MOVZX EAX,byte ptr [RBP + R11*0x1]
LEA RCX,[R11 + 0x1]
MOV byte ptr [RBX + R11*0x1 + 0xc],AL
CMP RDI,R11
JNZ 0x0016c320
MOV dword ptr [RBX + 0x8],EDX
LEA RDX,[R12 + R12*0x2]
LEA RCX,[RBX + 0x90]
MOV RDI,R15
SHL RDX,0x6
MOV RAX,qword ptr [RSI + RDX*0x1 + 0x20]
ADD RSP,0x8
MOV EDX,R14D
MOV ESI,R13D
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP RAX
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x23
LEA RSI,[0x1c0cb1]
LEA RDI,[0x1c5e5d]
CALL 0x00114270
MOV EDX,0x22
LEA RSI,[0x1c0cb1]
LEA RDI,[0x1ac927]
CALL 0x00114270
MOV EDX,0x24
LEA RSI,[0x1c0cb1]
LEA RDI,[0x1c0c3c]
CALL 0x00114270
(translation_unit "void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" identifier (parameter_list "(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if (param_2 == (undefined1 *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" if (parenthesized_expression "(param_2 == (undefined1 *)0x0)" ( (binary_expression "param_2 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" { comment (expression_statement "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);" (call_expression "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" identifier (argument_list "("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" ( (string_literal ""IV != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" { comment (expression_statement "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);" (call_expression "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23)" identifier (argument_list "("key != NULL","src/modes/ofb/ofb_start.c",0x23)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_6 == (int *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" if (parenthesized_expression "(param_6 == (int *)0x0)" ( (binary_expression "param_6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" { comment (expression_statement "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);" (call_expression "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" identifier (argument_list "("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" ( (string_literal ""ofb != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar2 = cipher_is_valid(param_1);" (assignment_expression "iVar2 = cipher_is_valid(param_1)" identifier = (call_expression "cipher_is_valid(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" { (expression_statement "*param_6 = param_1;" (assignment_expression "*param_6 = param_1" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);" (assignment_expression "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" identifier = (pointer_expression "*(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" * (cast_expression "(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x14)" ( (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x14" (binary_expression "puVar1 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (expression_statement "param_6[1] = iVar2;" (assignment_expression "param_6[1] = iVar2" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" if (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) (compound_statement "{\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = iVar2 - 1U & 7;" (assignment_expression "uVar3 = iVar2 - 1U & 7" identifier = (binary_expression "iVar2 - 1U & 7" (binary_expression "iVar2 - 1U" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "*(undefined1 *)(param_6 + 3) = *param_2;" (assignment_expression "*(undefined1 *)(param_6 + 3) = *param_2" (pointer_expression "*(undefined1 *)(param_6 + 3)" * (cast_expression "(undefined1 *)(param_6 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 3)" ( (binary_expression "param_6 + 3" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" if (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) (compound_statement "{\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" { (if_statement "if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" if (parenthesized_expression "(uVar3 != 3)" ( (binary_expression "uVar3 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" { (if_statement "if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" if (parenthesized_expression "(uVar3 != 4)" ( (binary_expression "uVar3 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" { (if_statement "if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" if (parenthesized_expression "(uVar3 != 5)" ( (binary_expression "uVar3 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" { (if_statement "if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" if (parenthesized_expression "(uVar3 != 6)" ( (binary_expression "uVar3 != 6" identifier != number_literal) )) (compound_statement "{\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_6 + 0xd) = param_2[1];" (assignment_expression "*(undefined1 *)((long)param_6 + 0xd) = param_2[1]" (pointer_expression "*(undefined1 *)((long)param_6 + 0xd)" * (cast_expression "(undefined1 *)((long)param_6 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + 0xd)" ( (binary_expression "(long)param_6 + 0xd" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) })) (while_statement "while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" { (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (if_statement "if (iVar2 - 1U == uVar4) break;" if (parenthesized_expression "(iVar2 - 1U == uVar4)" ( (binary_expression "iVar2 - 1U == uVar4" (binary_expression "iVar2 - 1U" identifier - number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xd)" ( (binary_expression "(long)param_6 + uVar4 + 0xd" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xe)" ( (binary_expression "(long)param_6 + uVar4 + 0xe" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xf)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xf)" ( (binary_expression "(long)param_6 + uVar4 + 0xf" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x10)" ( (binary_expression "(long)param_6 + uVar4 + 0x10" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x11)" ( (binary_expression "(long)param_6 + uVar4 + 0x11" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x12)" ( (binary_expression "(long)param_6 + uVar4 + 0x12" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x13)" ( (binary_expression "(long)param_6 + uVar4 + 0x13" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ])) ;) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" identifier = (binary_expression "uVar4 + 8" identifier + number_literal)) ;) })) })) (expression_statement "param_6[2] = iVar2;" (assignment_expression "param_6[2] = iVar2" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) comment comment (expression_statement "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);" (call_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24)" (parenthesized_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))" ( (pointer_expression "**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" * (pointer_expression "*(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" * (cast_expression "(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x20)" ( (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x20" (binary_expression "puVar1 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(param_3,param_4,param_5,param_6 + 0x24)" ( identifier , identifier , identifier , (binary_expression "param_6 + 0x24" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "int ofb_start(int cipher,uchar *IV,uchar *key,int keylen,int num_rounds,symmetric_OFB *ofb)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (IV == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (ofb == (symmetric_OFB *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(cipher);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    ofb->cipher = cipher;\n    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);\n    ofb->blocklen = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    ofb->padlen = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);\n    return iVar2;\n  }\n  return iVar2;\n}\n\n" (function_definition "int ofb_start(int cipher,uchar *IV,uchar *key,int keylen,int num_rounds,symmetric_OFB *ofb)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (IV == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (ofb == (symmetric_OFB *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(cipher);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    ofb->cipher = cipher;\n    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);\n    ofb->blocklen = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    ofb->padlen = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);\n    return iVar2;\n  }\n  return iVar2;\n}" primitive_type (function_declarator "ofb_start(int cipher,uchar *IV,uchar *key,int keylen,int num_rounds,symmetric_OFB *ofb)" identifier (parameter_list "(int cipher,uchar *IV,uchar *key,int keylen,int num_rounds,symmetric_OFB *ofb)" ( (parameter_declaration "int cipher" primitive_type identifier) , (parameter_declaration "uchar *IV" type_identifier (pointer_declarator "*IV" * identifier)) , (parameter_declaration "uchar *key" type_identifier (pointer_declarator "*key" * identifier)) , (parameter_declaration "int keylen" primitive_type identifier) , (parameter_declaration "int num_rounds" primitive_type identifier) , (parameter_declaration "symmetric_OFB *ofb" type_identifier (pointer_declarator "*ofb" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (IV == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (ofb == (symmetric_OFB *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(cipher);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    ofb->cipher = cipher;\n    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);\n    ofb->blocklen = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    ofb->padlen = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);\n    return iVar2;\n  }\n  return iVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if (IV == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" if (parenthesized_expression "(IV == (uchar *)0x0)" ( (binary_expression "IV == (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("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" { comment (expression_statement "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);" (call_expression "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" identifier (argument_list "("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" ( (string_literal ""IV != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (key == (uchar *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" if (parenthesized_expression "(key == (uchar *)0x0)" ( (binary_expression "key == (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("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" { comment (expression_statement "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);" (call_expression "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23)" identifier (argument_list "("key != NULL","src/modes/ofb/ofb_start.c",0x23)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (ofb == (symmetric_OFB *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" if (parenthesized_expression "(ofb == (symmetric_OFB *)0x0)" ( (binary_expression "ofb == (symmetric_OFB *)0x0" identifier == (cast_expression "(symmetric_OFB *)0x0" ( (type_descriptor "symmetric_OFB *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" { comment (expression_statement "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);" (call_expression "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" identifier (argument_list "("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" ( (string_literal ""ofb != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar2 = cipher_is_valid(cipher);" (assignment_expression "iVar2 = cipher_is_valid(cipher)" identifier = (call_expression "cipher_is_valid(cipher)" identifier (argument_list "(cipher)" ( identifier )))) ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n    ofb->cipher = cipher;\n    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);\n    ofb->blocklen = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    ofb->padlen = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);\n    return iVar2;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    ofb->cipher = cipher;\n    iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);\n    ofb->blocklen = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    ofb->padlen = iVar2;\n                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);\n    return iVar2;\n  }" { (expression_statement "ofb->cipher = cipher;" (assignment_expression "ofb->cipher = cipher" (field_expression "ofb->cipher" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14);" (assignment_expression "iVar2 = *(int *)(puVar1 + (long)cipher * 0xc0 + 0x14)" identifier = (pointer_expression "*(int *)(puVar1 + (long)cipher * 0xc0 + 0x14)" * (cast_expression "(int *)(puVar1 + (long)cipher * 0xc0 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)cipher * 0xc0 + 0x14)" ( (binary_expression "puVar1 + (long)cipher * 0xc0 + 0x14" (binary_expression "puVar1 + (long)cipher * 0xc0" identifier + (binary_expression "(long)cipher * 0xc0" (cast_expression "(long)cipher" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (expression_statement "ofb->blocklen = iVar2;" (assignment_expression "ofb->blocklen = iVar2" (field_expression "ofb->blocklen" identifier -> field_identifier) = identifier) ;) (if_statement "if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" if (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) (compound_statement "{\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = iVar2 - 1U & 7;" (assignment_expression "uVar3 = iVar2 - 1U & 7" identifier = (binary_expression "iVar2 - 1U & 7" (binary_expression "iVar2 - 1U" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar3 != 0) {\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = 1;\n        ofb->IV[0] = *IV;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "ofb->IV[0] = *IV;" (assignment_expression "ofb->IV[0] = *IV" (subscript_expression "ofb->IV[0]" (field_expression "ofb->IV" identifier -> field_identifier) [ number_literal ]) = (pointer_expression "*IV" * identifier)) ;) (if_statement "if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }" if (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) (compound_statement "{\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          ofb->IV[uVar4] = IV[uVar4];\n          uVar4 = uVar4 + 1;\n        }" { (if_statement "if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            ofb->IV[uVar4] = IV[uVar4];\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }" if (parenthesized_expression "(uVar3 != 3)" ( (binary_expression "uVar3 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              ofb->IV[uVar4] = IV[uVar4];\n              uVar4 = uVar4 + 1;\n            }" { (if_statement "if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }" if (parenthesized_expression "(uVar3 != 4)" ( (binary_expression "uVar3 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                ofb->IV[uVar4] = IV[uVar4];\n                uVar4 = uVar4 + 1;\n              }" { (if_statement "if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" if (parenthesized_expression "(uVar3 != 5)" ( (binary_expression "uVar3 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }\n                  ofb->IV[uVar4] = IV[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" { (if_statement "if (uVar3 != 6) {\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }" if (parenthesized_expression "(uVar3 != 6)" ( (binary_expression "uVar3 != 6" identifier != number_literal) )) (compound_statement "{\n                    uVar4 = 2;\n                    ofb->IV[1] = IV[1];\n                  }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "ofb->IV[1] = IV[1];" (assignment_expression "ofb->IV[1] = IV[1]" (subscript_expression "ofb->IV[1]" (field_expression "ofb->IV" identifier -> field_identifier) [ number_literal ]) = (subscript_expression "IV[1]" identifier [ number_literal ])) ;) })) (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) })) (while_statement "while( true ) {\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        ofb->IV[uVar4] = IV[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        ofb->IV[uVar4 + 1] = IV[uVar4 + 1];\n        ofb->IV[uVar4 + 2] = IV[uVar4 + 2];\n        ofb->IV[uVar4 + 3] = IV[uVar4 + 3];\n        ofb->IV[uVar4 + 4] = IV[uVar4 + 4];\n        ofb->IV[uVar4 + 5] = IV[uVar4 + 5];\n        ofb->IV[uVar4 + 6] = IV[uVar4 + 6];\n        ofb->IV[uVar4 + 7] = IV[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" { (expression_statement "ofb->IV[uVar4] = IV[uVar4];" (assignment_expression "ofb->IV[uVar4] = IV[uVar4]" (subscript_expression "ofb->IV[uVar4]" (field_expression "ofb->IV" identifier -> field_identifier) [ identifier ]) = (subscript_expression "IV[uVar4]" identifier [ identifier ])) ;) (if_statement "if (iVar2 - 1U == uVar4) break;" if (parenthesized_expression "(iVar2 - 1U == uVar4)" ( (binary_expression "iVar2 - 1U == uVar4" (binary_expression "iVar2 - 1U" identifier - number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "ofb->IV[uVar4 + 1] = IV[uVar4 + 1];" (assignment_expression "ofb->IV[uVar4 + 1] = IV[uVar4 + 1]" (subscript_expression "ofb->IV[uVar4 + 1]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 1" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 2] = IV[uVar4 + 2];" (assignment_expression "ofb->IV[uVar4 + 2] = IV[uVar4 + 2]" (subscript_expression "ofb->IV[uVar4 + 2]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 2" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 3] = IV[uVar4 + 3];" (assignment_expression "ofb->IV[uVar4 + 3] = IV[uVar4 + 3]" (subscript_expression "ofb->IV[uVar4 + 3]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 3" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 4] = IV[uVar4 + 4];" (assignment_expression "ofb->IV[uVar4 + 4] = IV[uVar4 + 4]" (subscript_expression "ofb->IV[uVar4 + 4]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 4" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 5] = IV[uVar4 + 5];" (assignment_expression "ofb->IV[uVar4 + 5] = IV[uVar4 + 5]" (subscript_expression "ofb->IV[uVar4 + 5]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 5" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 6] = IV[uVar4 + 6];" (assignment_expression "ofb->IV[uVar4 + 6] = IV[uVar4 + 6]" (subscript_expression "ofb->IV[uVar4 + 6]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 6" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ])) ;) (expression_statement "ofb->IV[uVar4 + 7] = IV[uVar4 + 7];" (assignment_expression "ofb->IV[uVar4 + 7] = IV[uVar4 + 7]" (subscript_expression "ofb->IV[uVar4 + 7]" (field_expression "ofb->IV" identifier -> field_identifier) [ (binary_expression "uVar4 + 7" identifier + number_literal) ]) = (subscript_expression "IV[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ])) ;) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" identifier = (binary_expression "uVar4 + 8" identifier + number_literal)) ;) })) })) (expression_statement "ofb->padlen = iVar2;" (assignment_expression "ofb->padlen = iVar2" (field_expression "ofb->padlen" identifier -> field_identifier) = identifier) ;) comment comment (expression_statement "iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key);" (assignment_expression "iVar2 = (**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key)" identifier = (call_expression "(**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))(key,keylen,num_rounds,&ofb->key)" (parenthesized_expression "(**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20))" ( (pointer_expression "**(code **)(puVar1 + (long)cipher * 0xc0 + 0x20)" * (pointer_expression "*(code **)(puVar1 + (long)cipher * 0xc0 + 0x20)" * (cast_expression "(code **)(puVar1 + (long)cipher * 0xc0 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + (long)cipher * 0xc0 + 0x20)" ( (binary_expression "puVar1 + (long)cipher * 0xc0 + 0x20" (binary_expression "puVar1 + (long)cipher * 0xc0" identifier + (binary_expression "(long)cipher * 0xc0" (cast_expression "(long)cipher" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(key,keylen,num_rounds,&ofb->key)" ( identifier , identifier , identifier , (pointer_expression "&ofb->key" & (field_expression "ofb->key" identifier -> field_identifier)) )))) ;) (return_statement "return iVar2;" return identifier ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" identifier (parameter_list "(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined1 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (if_statement "if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" if (parenthesized_expression "(param_2 == (undefined1 *)0x0)" ( (binary_expression "param_2 == (undefined1 *)0x0" identifier == (cast_expression "(undefined1 *)0x0" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" { (expression_statement "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);" (call_expression "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" identifier (argument_list "("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" ( (string_literal ""IV != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" { (expression_statement "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);" (call_expression "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23)" identifier (argument_list "("key != NULL","src/modes/ofb/ofb_start.c",0x23)" ( (string_literal ""key != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (if_statement "if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" if (parenthesized_expression "(param_6 == (int *)0x0)" ( (binary_expression "param_6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" { (expression_statement "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);" (call_expression "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" identifier (argument_list "("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" ( (string_literal ""ofb != NULL"" " string_content ") , (string_literal ""src/modes/ofb/ofb_start.c"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar2 = cipher_is_valid(param_1);" (assignment_expression "iVar2 = cipher_is_valid(param_1)" identifier = (call_expression "cipher_is_valid(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" identifier = identifier) ;) (if_statement "if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" { (expression_statement "*param_6 = param_1;" (assignment_expression "*param_6 = param_1" (pointer_expression "*param_6" * identifier) = identifier) ;) (expression_statement "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);" (assignment_expression "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" identifier = (pointer_expression "*(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" * (cast_expression "(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x14)" ( (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x14" (binary_expression "puVar1 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) ;) (expression_statement "param_6[1] = iVar2;" (assignment_expression "param_6[1] = iVar2" (subscript_expression "param_6[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" if (parenthesized_expression "(0 < iVar2)" ( (binary_expression "0 < iVar2" number_literal < identifier) )) (compound_statement "{\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = iVar2 - 1U & 7;" (assignment_expression "uVar3 = iVar2 - 1U & 7" identifier = (binary_expression "iVar2 - 1U & 7" (binary_expression "iVar2 - 1U" identifier - number_literal) & number_literal)) ;) (if_statement "if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (expression_statement "*(undefined1 *)(param_6 + 3) = *param_2;" (assignment_expression "*(undefined1 *)(param_6 + 3) = *param_2" (pointer_expression "*(undefined1 *)(param_6 + 3)" * (cast_expression "(undefined1 *)(param_6 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + 3)" ( (binary_expression "param_6 + 3" identifier + number_literal) )))) = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" if (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) (compound_statement "{\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" { (if_statement "if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" { (if_statement "if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" if (parenthesized_expression "(uVar3 != 3)" ( (binary_expression "uVar3 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" { (if_statement "if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" if (parenthesized_expression "(uVar3 != 4)" ( (binary_expression "uVar3 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" { (if_statement "if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" if (parenthesized_expression "(uVar3 != 5)" ( (binary_expression "uVar3 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" { (if_statement "if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" if (parenthesized_expression "(uVar3 != 6)" ( (binary_expression "uVar3 != 6" identifier != number_literal) )) (compound_statement "{\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_6 + 0xd) = param_2[1];" (assignment_expression "*(undefined1 *)((long)param_6 + 0xd) = param_2[1]" (pointer_expression "*(undefined1 *)((long)param_6 + 0xd)" * (cast_expression "(undefined1 *)((long)param_6 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + 0xd)" ( (binary_expression "(long)param_6 + 0xd" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) })) })) (while_statement "while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" { (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" ( (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4]" identifier [ identifier ])) ;) (if_statement "if (iVar2 - 1U == uVar4) break;" if (parenthesized_expression "(iVar2 - 1U == uVar4)" ( (binary_expression "iVar2 - 1U == uVar4" (binary_expression "iVar2 - 1U" identifier - number_literal) == identifier) )) (break_statement "break;" break ;)) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xd)" ( (binary_expression "(long)param_6 + uVar4 + 0xd" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 1]" identifier [ (binary_expression "uVar4 + 1" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xe)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xe)" ( (binary_expression "(long)param_6 + uVar4 + 0xe" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 2]" identifier [ (binary_expression "uVar4 + 2" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xf)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0xf)" ( (binary_expression "(long)param_6 + uVar4 + 0xf" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 3]" identifier [ (binary_expression "uVar4 + 3" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x10)" ( (binary_expression "(long)param_6 + uVar4 + 0x10" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 4]" identifier [ (binary_expression "uVar4 + 4" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x11)" ( (binary_expression "(long)param_6 + uVar4 + 0x11" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 5]" identifier [ (binary_expression "uVar4 + 5" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x12)" ( (binary_expression "(long)param_6 + uVar4 + 0x12" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 6]" identifier [ (binary_expression "uVar4 + 6" identifier + number_literal) ])) ;) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13)" * (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_6 + uVar4 + 0x13)" ( (binary_expression "(long)param_6 + uVar4 + 0x13" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = (subscript_expression "param_2[uVar4 + 7]" identifier [ (binary_expression "uVar4 + 7" identifier + number_literal) ])) ;) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" identifier = (binary_expression "uVar4 + 8" identifier + number_literal)) ;) })) })) (expression_statement "param_6[2] = iVar2;" (assignment_expression "param_6[2] = iVar2" (subscript_expression "param_6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);" (call_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24)" (parenthesized_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))" ( (pointer_expression "**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" * (pointer_expression "*(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" * (cast_expression "(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x20)" ( (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x20" (binary_expression "puVar1 + (long)param_1 * 0xc0" identifier + (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) ))))) )) (argument_list "(param_3,param_4,param_5,param_6 + 0x24)" ( identifier , identifier , identifier , (binary_expression "param_6 + 0x24" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 == 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 { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) + LIT) )))) = (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "ofb_start(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" (identifier "ofb_start") (parameter_list "(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,\n              int *param_6)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined1 *param_2" (type_identifier "undefined1") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  uint uVar3;\n  ulong uVar4;\n  \n  if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }\n  if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }\n  if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }\n  iVar2 = cipher_is_valid(param_1);\n  puVar1 = PTR_cipher_descriptor_001dded0;\n  if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (if_statement "if (param_2 == (undefined1 *)0x0) {\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" (if "if") (parenthesized_expression "(param_2 == (undefined1 *)0x0)" (( "(") (binary_expression "param_2 == (undefined1 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined1 *)0x0" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);\n  }" ({ "{") (expression_statement "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22);" (call_expression "crypt_argchk("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" (identifier "crypt_argchk") (argument_list "("IV != NULL","src/modes/ofb/ofb_start.c",0x22)" (( "(") (string_literal ""IV != NULL"" (" """) (string_content "IV != NULL") (" """)) (, ",") (string_literal ""src/modes/ofb/ofb_start.c"" (" """) (string_content "src/modes/ofb/ofb_start.c") (" """)) (, ",") (number_literal "0x22") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 == 0) {\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);\n  }" ({ "{") (expression_statement "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23);" (call_expression "crypt_argchk("key != NULL","src/modes/ofb/ofb_start.c",0x23)" (identifier "crypt_argchk") (argument_list "("key != NULL","src/modes/ofb/ofb_start.c",0x23)" (( "(") (string_literal ""key != NULL"" (" """) (string_content "key != NULL") (" """)) (, ",") (string_literal ""src/modes/ofb/ofb_start.c"" (" """) (string_content "src/modes/ofb/ofb_start.c") (" """)) (, ",") (number_literal "0x23") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_6 == (int *)0x0) {\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" (if "if") (parenthesized_expression "(param_6 == (int *)0x0)" (( "(") (binary_expression "param_6 == (int *)0x0" (identifier "param_6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                    \n    crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);\n  }" ({ "{") (expression_statement "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);" (call_expression "crypt_argchk("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" (identifier "crypt_argchk") (argument_list "("ofb != NULL","src/modes/ofb/ofb_start.c",0x24)" (( "(") (string_literal ""ofb != NULL"" (" """) (string_content "ofb != NULL") (" """)) (, ",") (string_literal ""src/modes/ofb/ofb_start.c"" (" """) (string_content "src/modes/ofb/ofb_start.c") (" """)) (, ",") (number_literal "0x24") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = cipher_is_valid(param_1);" (assignment_expression "iVar2 = cipher_is_valid(param_1)" (identifier "iVar2") (= "=") (call_expression "cipher_is_valid(param_1)" (identifier "cipher_is_valid") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "puVar1 = PTR_cipher_descriptor_001dded0;" (assignment_expression "puVar1 = PTR_cipher_descriptor_001dded0" (identifier "puVar1") (= "=") (identifier "PTR_cipher_descriptor_001dded0")) (; ";")) (if_statement "if (iVar2 == 0) {\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *param_6 = param_1;\n    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);\n    param_6[1] = iVar2;\n    if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }\n    param_6[2] = iVar2;\n                    \n                    \n    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);\n    return;\n  }" ({ "{") (expression_statement "*param_6 = param_1;" (assignment_expression "*param_6 = param_1" (pointer_expression "*param_6" (* "*") (identifier "param_6")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);" (assignment_expression "iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" (* "*") (cast_expression "(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x14)" (( "(") (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x14" (binary_expression "puVar1 + (long)param_1 * 0xc0" (identifier "puVar1") (+ "+") (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (* "*") (number_literal "0xc0"))) (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "param_6[1] = iVar2;" (assignment_expression "param_6[1] = iVar2" (subscript_expression "param_6[1]" (identifier "param_6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (if_statement "if (0 < iVar2) {\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" (if "if") (parenthesized_expression "(0 < iVar2)" (( "(") (binary_expression "0 < iVar2" (number_literal "0") (< "<") (identifier "iVar2")) () ")")) (compound_statement "{\n      uVar4 = 0;\n      uVar3 = iVar2 - 1U & 7;\n      if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }\n      while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = iVar2 - 1U & 7;" (assignment_expression "uVar3 = iVar2 - 1U & 7" (identifier "uVar3") (= "=") (binary_expression "iVar2 - 1U & 7" (binary_expression "iVar2 - 1U" (identifier "iVar2") (- "-") (number_literal "1U")) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (uVar3 != 0) {\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = 1;\n        *(undefined1 *)(param_6 + 3) = *param_2;\n        if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }\n      }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined1 *)(param_6 + 3) = *param_2;" (assignment_expression "*(undefined1 *)(param_6 + 3) = *param_2" (pointer_expression "*(undefined1 *)(param_6 + 3)" (* "*") (cast_expression "(undefined1 *)(param_6 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + 3)" (( "(") (binary_expression "param_6 + 3" (identifier "param_6") (+ "+") (number_literal "3")) () ")")))) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar3 != 1) {\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" (if "if") (parenthesized_expression "(uVar3 != 1)" (( "(") (binary_expression "uVar3 != 1" (identifier "uVar3") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }\n          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n          uVar4 = uVar4 + 1;\n        }" ({ "{") (if_statement "if (uVar3 != 2) {\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" (if "if") (parenthesized_expression "(uVar3 != 2)" (( "(") (binary_expression "uVar3 != 2" (identifier "uVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }\n            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n            uVar4 = uVar4 + 1;\n          }" ({ "{") (if_statement "if (uVar3 != 3) {\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" (if "if") (parenthesized_expression "(uVar3 != 3)" (( "(") (binary_expression "uVar3 != 3" (identifier "uVar3") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n              if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }\n              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n              uVar4 = uVar4 + 1;\n            }" ({ "{") (if_statement "if (uVar3 != 4) {\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" (if "if") (parenthesized_expression "(uVar3 != 4)" (( "(") (binary_expression "uVar3 != 4" (identifier "uVar3") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n                if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }\n                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                uVar4 = uVar4 + 1;\n              }" ({ "{") (if_statement "if (uVar3 != 5) {\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" (if "if") (parenthesized_expression "(uVar3 != 5)" (( "(") (binary_expression "uVar3 != 5" (identifier "uVar3") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n                  if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }\n                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n                  uVar4 = uVar4 + 1;\n                }" ({ "{") (if_statement "if (uVar3 != 6) {\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" (if "if") (parenthesized_expression "(uVar3 != 6)" (( "(") (binary_expression "uVar3 != 6" (identifier "uVar3") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n                    uVar4 = 2;\n                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];\n                  }" ({ "{") (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" (identifier "uVar4") (= "=") (number_literal "2")) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + 0xd) = param_2[1];" (assignment_expression "*(undefined1 *)((long)param_6 + 0xd) = param_2[1]" (pointer_expression "*(undefined1 *)((long)param_6 + 0xd)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + 0xd)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + 0xd)" (( "(") (binary_expression "(long)param_6 + 0xd" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (number_literal "0xd")) () ")")))) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (while_statement "while( true ) {\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];\n        if (iVar2 - 1U == uVar4) break;\n        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];\n        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];\n        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];\n        uVar4 = uVar4 + 8;\n      }" ({ "{") (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xc)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xc)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xc)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xc" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (subscript_expression "param_2[uVar4]" (identifier "param_2") ([ "[") (identifier "uVar4") (] "]"))) (; ";")) (if_statement "if (iVar2 - 1U == uVar4) break;" (if "if") (parenthesized_expression "(iVar2 - 1U == uVar4)" (( "(") (binary_expression "iVar2 - 1U == uVar4" (binary_expression "iVar2 - 1U" (identifier "iVar2") (- "-") (number_literal "1U")) (== "==") (identifier "uVar4")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xd)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xd)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xd)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xd" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xd")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 1]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xe)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xe)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xe)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xe" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xe")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 2]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 2" (identifier "uVar4") (+ "+") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0xf)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0xf)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0xf)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0xf" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0xf")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 3]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 3" (identifier "uVar4") (+ "+") (number_literal "3")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x10)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0x10)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0x10" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 4]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x11)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0x11)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0x11" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0x11")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 5]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 5" (identifier "uVar4") (+ "+") (number_literal "5")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x12)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0x12)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0x12" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0x12")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 6]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 6" (identifier "uVar4") (+ "+") (number_literal "6")) (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];" (assignment_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7]" (pointer_expression "*(undefined1 *)((long)param_6 + uVar4 + 0x13)" (* "*") (cast_expression "(undefined1 *)((long)param_6 + uVar4 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_6 + uVar4 + 0x13)" (( "(") (binary_expression "(long)param_6 + uVar4 + 0x13" (binary_expression "(long)param_6 + uVar4" (cast_expression "(long)param_6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_6")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "0x13")) () ")")))) (= "=") (subscript_expression "param_2[uVar4 + 7]" (identifier "param_2") ([ "[") (binary_expression "uVar4 + 7" (identifier "uVar4") (+ "+") (number_literal "7")) (] "]"))) (; ";")) (expression_statement "uVar4 = uVar4 + 8;" (assignment_expression "uVar4 = uVar4 + 8" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 8" (identifier "uVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "param_6[2] = iVar2;" (assignment_expression "param_6[2] = iVar2" (subscript_expression "param_6[2]" (identifier "param_6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar2")) (; ";")) (expression_statement "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);" (call_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24)" (parenthesized_expression "(**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))" (( "(") (pointer_expression "**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" (* "*") (pointer_expression "*(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" (* "*") (cast_expression "(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar1 + (long)param_1 * 0xc0 + 0x20)" (( "(") (binary_expression "puVar1 + (long)param_1 * 0xc0 + 0x20" (binary_expression "puVar1 + (long)param_1 * 0xc0" (identifier "puVar1") (+ "+") (binary_expression "(long)param_1 * 0xc0" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (* "*") (number_literal "0xc0"))) (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(param_3,param_4,param_5,param_6 + 0x24)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (binary_expression "param_6 + 0x24" (identifier "param_6") (+ "+") (number_literal "0x24")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

int function_1(int cipher,type_1 *var_1,type_1 *var_3,int keylen,int num_rounds,type_2 *var_4)

{
  type_3 *var_7;
  int var_6;
  type_4 var_8;
  type_5 var_9;
  
  if (var_1 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("IV != NULL","src/modes/ofb/ofb_start.c",0x22);
  }
  if (var_3 == (type_1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("key != NULL","src/modes/ofb/ofb_start.c",0x23);
  }
  if (var_4 == (type_2 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_2("ofb != NULL","src/modes/ofb/ofb_start.c",0x24);
  }
  var_6 = var_5(cipher);
  var_7 = PTR_cipher_descriptor_001dded0;
  if (var_6 == 0) {
    var_4->cipher = cipher;
    var_6 = *(int *)(var_7 + (long)cipher * 0xc0 + 0x14);
    var_4->blocklen = var_6;
    if (0 < var_6) {
      var_9 = 0;
      var_8 = var_6 - 1U & 7;
      if (var_8 != 0) {
        var_9 = 1;
        var_4->var_1[0] = *var_1;
        if (var_8 != 1) {
          if (var_8 != 2) {
            if (var_8 != 3) {
              if (var_8 != 4) {
                if (var_8 != 5) {
                  if (var_8 != 6) {
                    var_9 = 2;
                    var_4->var_1[1] = var_1[1];
                  }
                  var_4->var_1[var_9] = var_1[var_9];
                  var_9 = var_9 + 1;
                }
                var_4->var_1[var_9] = var_1[var_9];
                var_9 = var_9 + 1;
              }
              var_4->var_1[var_9] = var_1[var_9];
              var_9 = var_9 + 1;
            }
            var_4->var_1[var_9] = var_1[var_9];
            var_9 = var_9 + 1;
          }
          var_4->var_1[var_9] = var_1[var_9];
          var_9 = var_9 + 1;
        }
      }
      while( true ) {
        var_4->var_1[var_9] = var_1[var_9];
        if (var_6 - 1U == var_9) break;
        var_4->var_1[var_9 + 1] = var_1[var_9 + 1];
        var_4->var_1[var_9 + 2] = var_1[var_9 + 2];
        var_4->var_1[var_9 + 3] = var_1[var_9 + 3];
        var_4->var_1[var_9 + 4] = var_1[var_9 + 4];
        var_4->var_1[var_9 + 5] = var_1[var_9 + 5];
        var_4->var_1[var_9 + 6] = var_1[var_9 + 6];
        var_4->var_1[var_9 + 7] = var_1[var_9 + 7];
        var_9 = var_9 + 8;
      }
    }
    var_4->padlen = var_6;
                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    var_6 = (**(type_6 **)(var_7 + (long)cipher * 0xc0 + 0x20))(var_3,keylen,num_rounds,&var_4->var_3);
    return var_6;
  }
  return var_6;
}


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

void MASKED(int param_1,undefined1 *param_2,long param_3,undefined4 param_4,undefined4 param_5,
              int *param_6)

{
  undefined *puVar1;
  int iVar2;
  uint uVar3;
  ulong uVar4;
  
  if (param_2 == (undefined1 *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("IV != NULL","src/modes/ofb/MASKED.c",0x22);
  }
  if (param_3 == 0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("key != NULL","src/modes/ofb/MASKED.c",0x23);
  }
  if (param_6 == (int *)0x0) {
                    /* WARNING: Subroutine does not return */
    crypt_argchk("ofb != NULL","src/modes/ofb/MASKED.c",0x24);
  }
  iVar2 = cipher_is_valid(param_1);
  puVar1 = PTR_cipher_descriptor_001dded0;
  if (iVar2 == 0) {
    *param_6 = param_1;
    iVar2 = *(int *)(puVar1 + (long)param_1 * 0xc0 + 0x14);
    param_6[1] = iVar2;
    if (0 < iVar2) {
      uVar4 = 0;
      uVar3 = iVar2 - 1U & 7;
      if (uVar3 != 0) {
        uVar4 = 1;
        *(undefined1 *)(param_6 + 3) = *param_2;
        if (uVar3 != 1) {
          if (uVar3 != 2) {
            if (uVar3 != 3) {
              if (uVar3 != 4) {
                if (uVar3 != 5) {
                  if (uVar3 != 6) {
                    uVar4 = 2;
                    *(undefined1 *)((long)param_6 + 0xd) = param_2[1];
                  }
                  *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
                  uVar4 = uVar4 + 1;
                }
                *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
                uVar4 = uVar4 + 1;
              }
              *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
              uVar4 = uVar4 + 1;
            }
            *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
            uVar4 = uVar4 + 1;
          }
          *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
          uVar4 = uVar4 + 1;
        }
      }
      while( true ) {
        *(undefined1 *)((long)param_6 + uVar4 + 0xc) = param_2[uVar4];
        if (iVar2 - 1U == uVar4) break;
        *(undefined1 *)((long)param_6 + uVar4 + 0xd) = param_2[uVar4 + 1];
        *(undefined1 *)((long)param_6 + uVar4 + 0xe) = param_2[uVar4 + 2];
        *(undefined1 *)((long)param_6 + uVar4 + 0xf) = param_2[uVar4 + 3];
        *(undefined1 *)((long)param_6 + uVar4 + 0x10) = param_2[uVar4 + 4];
        *(undefined1 *)((long)param_6 + uVar4 + 0x11) = param_2[uVar4 + 5];
        *(undefined1 *)((long)param_6 + uVar4 + 0x12) = param_2[uVar4 + 6];
        *(undefined1 *)((long)param_6 + uVar4 + 0x13) = param_2[uVar4 + 7];
        uVar4 = uVar4 + 8;
      }
    }
    param_6[2] = iVar2;
                    /* WARNING: Could not recover jumptable at 0x0016c3b3. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (**(code **)(puVar1 + (long)param_1 * 0xc0 + 0x20))(param_3,param_4,param_5,param_6 + 0x24);
    return;
  }
  return;
}

