
/* WARNING: Unknown calling convention */

int blake2bmac_test(void)

{
  ulong uVar1;
  long lVar2;
  uchar uVar3;
  int iVar4;
  long lVar5;
  ulong inlen;
  uchar (*should) [64];
  long in_FS_OFFSET;
  ulong olen;
  blake2bmac_state st;
  uchar key [64];
  uchar inp [1000];
  uchar out [1000];
  
  lVar5 = 0;
  lVar2 = *(long *)(in_FS_OFFSET + 0x28);
  key[8] = '\b';
  key[9] = '\t';
  key[10] = '\n';
  key[0xb] = '\v';
  key[0xc] = '\f';
  key[0xd] = '\r';
  key[0xe] = '\x0e';
  key[0xf] = '\x0f';
  key[0] = '\0';
  key[1] = '\x01';
  key[2] = '\x02';
  key[3] = '\x03';
  key[4] = '\x04';
  key[5] = '\x05';
  key[6] = '\x06';
  key[7] = '\a';
  key[0x10] = '\x10';
  key[0x11] = '\x11';
  key[0x12] = '\x12';
  key[0x13] = '\x13';
  key[0x14] = '\x14';
  key[0x15] = '\x15';
  key[0x16] = '\x16';
  key[0x17] = '\x17';
  key[0x20] = ' ';
  key[0x21] = '!';
  key[0x22] = '\"';
  key[0x23] = '#';
  key[0x24] = '$';
  key[0x25] = '%';
  key[0x26] = '&';
  key[0x27] = '\'';
  key[0x28] = '(';
  key[0x29] = ')';
  key[0x2a] = '*';
  key[0x2b] = '+';
  key[0x2c] = ',';
  key[0x2d] = '-';
  key[0x2e] = '.';
  key[0x2f] = '/';
  key[0x30] = '0';
  key[0x31] = '1';
  key[0x32] = '2';
  key[0x33] = '3';
  key[0x34] = '4';
  key[0x35] = '5';
  key[0x36] = '6';
  key[0x37] = '7';
  key[0x38] = '8';
  key[0x39] = '9';
  key[0x3a] = ':';
  key[0x3b] = ';';
  key[0x3c] = '<';
  key[0x3d] = '=';
  key[0x3e] = '>';
  key[0x3f] = '?';
  key[0x18] = '\x18';
  key[0x19] = '\x19';
  key[0x1a] = '\x1a';
  key[0x1b] = '\x1b';
  key[0x1c] = '\x1c';
  key[0x1d] = '\x1d';
  key[0x1e] = '\x1e';
  key[0x1f] = '\x1f';
  do {
    uVar3 = (uchar)lVar5;
    inp[lVar5] = uVar3;
    inp[lVar5 + 1] = uVar3 + '\x01';
    inp[lVar5 + 2] = uVar3 + '\x02';
    inp[lVar5 + 3] = uVar3 + '\x03';
    inp[lVar5 + 4] = uVar3 + '\x04';
    inp[lVar5 + 5] = uVar3 + '\x05';
    inp[lVar5 + 6] = uVar3 + '\x06';
    inp[lVar5 + 7] = uVar3 + '\a';
    lVar5 = lVar5 + 8;
  } while (lVar5 != 0x100);
  olen = 0x40;
  should = blake2bmac_test::tests;
  uVar1 = 0;
  do {
    do {
      inlen = uVar1;
      blake2bmac_init(&st,olen,key,0x40);
      blake2bmac_process(&st,inp,inlen);
      blake2bmac_done(&st,out,&olen);
      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);
      if (iVar4 != 0) goto LAB_00157538;
      uVar1 = inlen + 1;
      iVar4 = 0;
      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;
      olen = 0x40;
      should = should + 1;
    } while (uVar1 < 0x10);
    blake2bmac_init(&st,0x40,key,0x40);
    blake2bmac_process(&st,inp,5);
    blake2bmac_process(&st,inp + 5,4);
    blake2bmac_process(&st,inp + 9,3);
    blake2bmac_process(&st,inp + 0xc,2);
    blake2bmac_process(&st,inp + 0xe,1);
    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);
    blake2bmac_done(&st,out,&olen);
    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);
  } while (iVar4 == 0);
LAB_00157538:
  iVar4 = 5;
LAB_0015753d:
  if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return iVar4;
}



undefined8 blake2bmac_test(void)

{
  ulong uVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  long lVar5;
  ulong uVar6;
  undefined *puVar7;
  long in_FS_OFFSET;
  undefined8 local_a00;
  undefined1 local_9f8 [416];
  undefined8 local_858;
  undefined8 local_850;
  undefined8 local_848;
  undefined8 local_840;
  undefined8 local_838;
  undefined8 local_830;
  undefined8 local_828;
  undefined8 local_820;
  char local_818 [1008];
  undefined1 local_428 [1000];
  long local_40;
  
  lVar5 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_850 = 0xf0e0d0c0b0a0908;
  local_858 = 0x706050403020100;
  local_848 = 0x1716151413121110;
  local_838 = 0x2726252423222120;
  local_830 = 0x2f2e2d2c2b2a2928;
  local_828 = 0x3736353433323130;
  local_820 = 0x3f3e3d3c3b3a3938;
  local_840 = 0x1f1e1d1c1b1a1918;
  do {
    cVar2 = (char)lVar5;
    local_818[lVar5] = cVar2;
    local_818[lVar5 + 1] = cVar2 + '\x01';
    local_818[lVar5 + 2] = cVar2 + '\x02';
    local_818[lVar5 + 3] = cVar2 + '\x03';
    local_818[lVar5 + 4] = cVar2 + '\x04';
    local_818[lVar5 + 5] = cVar2 + '\x05';
    local_818[lVar5 + 6] = cVar2 + '\x06';
    local_818[lVar5 + 7] = cVar2 + '\a';
    lVar5 = lVar5 + 8;
  } while (lVar5 != 0x100);
  local_a00 = 0x40;
  puVar7 = &DAT_001b5960;
  uVar1 = 0;
  do {
    do {
      uVar6 = uVar1;
      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);
      blake2bmac_process(local_9f8,local_818,uVar6);
      blake2bmac_done(local_9f8,local_428,&local_a00);
      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",
                                 uVar6 & 0xffffffff);
      if ((int)uVar4 != 0) goto LAB_00157538;
      uVar1 = uVar6 + 1;
      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;
      local_a00 = 0x40;
      puVar7 = puVar7 + 0x40;
    } while (uVar1 < 0x10);
    blake2bmac_init(local_9f8,0x40,&local_858,0x40);
    blake2bmac_process(local_9f8,local_818,5);
    blake2bmac_process(local_9f8,local_818 + 5,4);
    blake2bmac_process(local_9f8,local_818 + 9,3);
    blake2bmac_process(local_9f8,local_818 + 0xc,2);
    blake2bmac_process(local_9f8,local_818 + 0xe,1);
    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);
    blake2bmac_done(local_9f8,local_428,&local_a00);
    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",
                               uVar1 & 0xffffffff);
  } while (iVar3 == 0);
LAB_00157538:
  uVar4 = 5;
LAB_0015753d:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar4;
}


MOV RDX,0xf0e0d0c0b0a0908
PUSH R15
XOR R9D,R9D
MOV RCX,0x1716151413121110
MOV RSI,0x2726252423222120
PUSH R14
MOV RDI,0x2f2e2d2c2b2a2928
MOV R8,0x3f3e3d3c3b3a3938
PUSH R13
PUSH R12
PUSH RBP
MOV RBP,0x3736353433323130
PUSH RBX
MOV RBX,0x1f1e1d1c1b1a1918
SUB RSP,0x9e8
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x9d8],RAX
XOR EAX,EAX
MOV qword ptr [RSP + 0x1c8],RDX
MOV RAX,0x706050403020100
MOV qword ptr [RSP + 0x1c0],RAX
MOV qword ptr [RSP + 0x1d0],RCX
MOV qword ptr [RSP + 0x1e0],RSI
MOV qword ptr [RSP + 0x1e8],RDI
MOV qword ptr [RSP + 0x1f0],RBP
MOV qword ptr [RSP + 0x1f8],R8
MOV qword ptr [RSP + 0x1d8],RBX
LEA RBX,[RSP + 0x200]
NOP
LEA R10,[R9 + 0x1]
LEA R11,[R9 + 0x2]
MOV byte ptr [RBX + R9*0x1],R9B
LEA R12,[R9 + 0x3]
LEA R13,[R9 + 0x4]
MOV byte ptr [RBX + R9*0x1 + 0x1],R10B
LEA R14,[R9 + 0x5]
LEA R15,[R9 + 0x6]
MOV byte ptr [RBX + R9*0x1 + 0x2],R11B
LEA RAX,[R9 + 0x7]
MOV byte ptr [RBX + R9*0x1 + 0x3],R12B
MOV byte ptr [RBX + R9*0x1 + 0x4],R13B
MOV byte ptr [RBX + R9*0x1 + 0x5],R14B
MOV byte ptr [RBX + R9*0x1 + 0x6],R15B
MOV byte ptr [RBX + R9*0x1 + 0x7],AL
ADD R9,0x8
CMP R9,0x100
JNZ 0x00157370
LEA RDX,[RSP + 0x1c0]
LEA RCX,[RSP + 0x18]
XOR R12D,R12D
MOV qword ptr [RSP + 0x18],0x40
MOV ESI,0x40
LEA R13,[0x1b5960]
MOV qword ptr [RSP + 0x8],RDX
LEA RBP,[RSP + 0x20]
MOV qword ptr [RSP],RCX
LEA R14,[RSP + 0x5f0]
JMP 0x001574e2
LEA RSI,[0x1b9920]
LEA R15,[R12 + 0x1]
CMP R13,RSI
JZ 0x0015753d
MOV qword ptr [RSP + 0x18],0x40
ADD R13,0x40
CMP R15,0xf
JBE 0x001574da
MOV RDX,qword ptr [RSP + 0x8]
MOV ECX,0x40
MOV ESI,0x40
MOV RDI,RBP
CALL 0x001132c0
MOV EDX,0x5
MOV RSI,RBX
MOV RDI,RBP
CALL 0x00114850
LEA RSI,[RBX + 0x5]
MOV EDX,0x4
MOV RDI,RBP
CALL 0x00114850
LEA RSI,[RBX + 0x9]
MOV EDX,0x3
MOV RDI,RBP
CALL 0x00114850
LEA RSI,[RBX + 0xc]
MOV EDX,0x2
MOV RDI,RBP
CALL 0x00114850
LEA RSI,[RBX + 0xe]
MOV EDX,0x1
MOV RDI,RBP
CALL 0x00114850
LEA RDX,[R12 + -0xe]
LEA RSI,[RBX + 0xf]
MOV RDI,RBP
CALL 0x00114850
MOV RDX,qword ptr [RSP]
MOV RSI,R14
MOV RDI,RBP
CALL 0x00113170
MOV RSI,qword ptr [RSP + 0x18]
MOV R9D,R15D
MOV RDX,R13
LEA R8,[0x1b5929]
MOV ECX,0x40
MOV RDI,R14
CALL 0x001143c0
TEST EAX,EAX
JNZ 0x00157538
MOV RSI,qword ptr [RSP + 0x18]
MOV R12,R15
MOV RDX,qword ptr [RSP + 0x8]
MOV ECX,0x40
MOV RDI,RBP
CALL 0x001132c0
MOV RDX,R12
MOV RSI,RBX
MOV RDI,RBP
CALL 0x00114850
MOV RDX,qword ptr [RSP]
MOV RSI,R14
MOV RDI,RBP
CALL 0x00113170
MOV RSI,qword ptr [RSP + 0x18]
MOV R9D,R12D
MOV RDX,R13
LEA R8,[0x1b593b]
MOV ECX,0x40
MOV RDI,R14
CALL 0x001143c0
TEST EAX,EAX
JZ 0x00157400
MOV EAX,0x5
MOV RCX,qword ptr [RSP + 0x9d8]
XOR RCX,qword ptr FS:[0x28]
JNZ 0x00157562
ADD RSP,0x9e8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CALL 0x00113880
(translation_unit "undefined8 blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar4;\n}" type_identifier (function_declarator "blake2bmac_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return uVar4;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_a00;" type_identifier identifier ;) (declaration "undefined1 local_9f8 [416];" type_identifier (array_declarator "local_9f8 [416]" identifier [ number_literal ]) ;) (declaration "undefined8 local_858;" type_identifier identifier ;) (declaration "undefined8 local_850;" type_identifier identifier ;) (declaration "undefined8 local_848;" type_identifier identifier ;) (declaration "undefined8 local_840;" type_identifier identifier ;) (declaration "undefined8 local_838;" type_identifier identifier ;) (declaration "undefined8 local_830;" type_identifier identifier ;) (declaration "undefined8 local_828;" type_identifier identifier ;) (declaration "undefined8 local_820;" type_identifier identifier ;) (declaration "char local_818 [1008];" primitive_type (array_declarator "local_818 [1008]" identifier [ number_literal ]) ;) (declaration "undefined1 local_428 [1000];" type_identifier (array_declarator "local_428 [1000]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_850 = 0xf0e0d0c0b0a0908;" (assignment_expression "local_850 = 0xf0e0d0c0b0a0908" identifier = number_literal) ;) (expression_statement "local_858 = 0x706050403020100;" (assignment_expression "local_858 = 0x706050403020100" identifier = number_literal) ;) (expression_statement "local_848 = 0x1716151413121110;" (assignment_expression "local_848 = 0x1716151413121110" identifier = number_literal) ;) (expression_statement "local_838 = 0x2726252423222120;" (assignment_expression "local_838 = 0x2726252423222120" identifier = number_literal) ;) (expression_statement "local_830 = 0x2f2e2d2c2b2a2928;" (assignment_expression "local_830 = 0x2f2e2d2c2b2a2928" identifier = number_literal) ;) (expression_statement "local_828 = 0x3736353433323130;" (assignment_expression "local_828 = 0x3736353433323130" identifier = number_literal) ;) (expression_statement "local_820 = 0x3f3e3d3c3b3a3938;" (assignment_expression "local_820 = 0x3f3e3d3c3b3a3938" identifier = number_literal) ;) (expression_statement "local_840 = 0x1f1e1d1c1b1a1918;" (assignment_expression "local_840 = 0x1f1e1d1c1b1a1918" identifier = number_literal) ;) (do_statement "do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);" do (compound_statement "{\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  }" { (expression_statement "cVar2 = (char)lVar5;" (assignment_expression "cVar2 = (char)lVar5" identifier = (cast_expression "(char)lVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_818[lVar5] = cVar2;" (assignment_expression "local_818[lVar5] = cVar2" (subscript_expression "local_818[lVar5]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_818[lVar5 + 1] = cVar2 + '\x01';" (assignment_expression "local_818[lVar5 + 1] = cVar2 + '\x01'" (subscript_expression "local_818[lVar5 + 1]" identifier [ (binary_expression "lVar5 + 1" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 2] = cVar2 + '\x02';" (assignment_expression "local_818[lVar5 + 2] = cVar2 + '\x02'" (subscript_expression "local_818[lVar5 + 2]" identifier [ (binary_expression "lVar5 + 2" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x02'" identifier + (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 3] = cVar2 + '\x03';" (assignment_expression "local_818[lVar5 + 3] = cVar2 + '\x03'" (subscript_expression "local_818[lVar5 + 3]" identifier [ (binary_expression "lVar5 + 3" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x03'" identifier + (char_literal "'\x03'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 4] = cVar2 + '\x04';" (assignment_expression "local_818[lVar5 + 4] = cVar2 + '\x04'" (subscript_expression "local_818[lVar5 + 4]" identifier [ (binary_expression "lVar5 + 4" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x04'" identifier + (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 5] = cVar2 + '\x05';" (assignment_expression "local_818[lVar5 + 5] = cVar2 + '\x05'" (subscript_expression "local_818[lVar5 + 5]" identifier [ (binary_expression "lVar5 + 5" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x05'" identifier + (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 6] = cVar2 + '\x06';" (assignment_expression "local_818[lVar5 + 6] = cVar2 + '\x06'" (subscript_expression "local_818[lVar5 + 6]" identifier [ (binary_expression "lVar5 + 6" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x06'" identifier + (char_literal "'\x06'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 7] = cVar2 + '\a';" (assignment_expression "local_818[lVar5 + 7] = cVar2 + '\a'" (subscript_expression "local_818[lVar5 + 7]" identifier [ (binary_expression "lVar5 + 7" identifier + number_literal) ]) = (binary_expression "cVar2 + '\a'" identifier + (char_literal "'\a'" ' escape_sequence '))) ;) (expression_statement "lVar5 = lVar5 + 8;" (assignment_expression "lVar5 = lVar5 + 8" identifier = (binary_expression "lVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 != 0x100)" ( (binary_expression "lVar5 != 0x100" identifier != number_literal) )) ;) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" identifier = number_literal) ;) (expression_statement "puVar7 = &DAT_001b5960;" (assignment_expression "puVar7 = &DAT_001b5960" identifier = (pointer_expression "&DAT_001b5960" & identifier)) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);" do (compound_statement "{\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  }" { (do_statement "do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);" do (compound_statement "{\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    }" { (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (expression_statement "blake2bmac_init(local_9f8,local_a00,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,local_a00,&local_858,0x40)" identifier (argument_list "(local_9f8,local_a00,&local_858,0x40)" ( identifier , identifier , (pointer_expression "&local_858" & identifier) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818,uVar6);" (call_expression "blake2bmac_process(local_9f8,local_818,uVar6)" identifier (argument_list "(local_9f8,local_818,uVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" identifier (argument_list "(local_9f8,local_428,&local_a00)" ( identifier , identifier , (pointer_expression "&local_a00" & identifier) ))) ;) (expression_statement "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);" (assignment_expression "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" identifier = (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" identifier (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC single"" " string_content ") , (binary_expression "uVar6 & 0xffffffff" identifier & number_literal) )))) ;) (if_statement "if ((int)uVar4 != 0) goto LAB_00157538;" if (parenthesized_expression "((int)uVar4 != 0)" ( (binary_expression "(int)uVar4 != 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (goto_statement "goto LAB_00157538;" goto statement_identifier ;)) (expression_statement "uVar1 = uVar6 + 1;" (assignment_expression "uVar1 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if (puVar7 == &DAT_001b9920) goto LAB_0015753d;" if (parenthesized_expression "(puVar7 == &DAT_001b9920)" ( (binary_expression "puVar7 == &DAT_001b9920" identifier == (pointer_expression "&DAT_001b9920" & identifier)) )) (goto_statement "goto LAB_0015753d;" goto statement_identifier ;)) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" identifier = number_literal) ;) (expression_statement "puVar7 = puVar7 + 0x40;" (assignment_expression "puVar7 = puVar7 + 0x40" identifier = (binary_expression "puVar7 + 0x40" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x10)" ( (binary_expression "uVar1 < 0x10" identifier < number_literal) )) ;) (expression_statement "blake2bmac_init(local_9f8,0x40,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,0x40,&local_858,0x40)" identifier (argument_list "(local_9f8,0x40,&local_858,0x40)" ( identifier , number_literal , (pointer_expression "&local_858" & identifier) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818,5);" (call_expression "blake2bmac_process(local_9f8,local_818,5)" identifier (argument_list "(local_9f8,local_818,5)" ( identifier , identifier , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 5,4);" (call_expression "blake2bmac_process(local_9f8,local_818 + 5,4)" identifier (argument_list "(local_9f8,local_818 + 5,4)" ( identifier , (binary_expression "local_818 + 5" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 9,3);" (call_expression "blake2bmac_process(local_9f8,local_818 + 9,3)" identifier (argument_list "(local_9f8,local_818 + 9,3)" ( identifier , (binary_expression "local_818 + 9" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xc,2);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xc,2)" identifier (argument_list "(local_9f8,local_818 + 0xc,2)" ( identifier , (binary_expression "local_818 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xe,1);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xe,1)" identifier (argument_list "(local_9f8,local_818 + 0xe,1)" ( identifier , (binary_expression "local_818 + 0xe" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe)" identifier (argument_list "(local_9f8,local_818 + 0xf,uVar6 - 0xe)" ( identifier , (binary_expression "local_818 + 0xf" identifier + number_literal) , (binary_expression "uVar6 - 0xe" identifier - number_literal) ))) ;) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" identifier (argument_list "(local_9f8,local_428,&local_a00)" ( identifier , identifier , (pointer_expression "&local_a00" & identifier) ))) ;) (expression_statement "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);" (assignment_expression "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" identifier = (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" identifier (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC multi"" " string_content ") , (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_00157538:\n  uVar4 = 5;" statement_identifier : (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;)) (labeled_statement "LAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  long lVar2;\n  uchar uVar3;\n  int iVar4;\n  long lVar5;\n  ulong inlen;\n  uchar (*should) [64];\n  long in_FS_OFFSET;\n  ulong olen;\n  blake2bmac_state st;\n  uchar key [64];\n  uchar inp [1000];\n  uchar out [1000];\n  \n  lVar5 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  key[8] = '\b';\n  key[9] = '\t';\n  key[10] = '\n';\n  key[0xb] = '\v';\n  key[0xc] = '\f';\n  key[0xd] = '\r';\n  key[0xe] = '\x0e';\n  key[0xf] = '\x0f';\n  key[0] = '\0';\n  key[1] = '\x01';\n  key[2] = '\x02';\n  key[3] = '\x03';\n  key[4] = '\x04';\n  key[5] = '\x05';\n  key[6] = '\x06';\n  key[7] = '\a';\n  key[0x10] = '\x10';\n  key[0x11] = '\x11';\n  key[0x12] = '\x12';\n  key[0x13] = '\x13';\n  key[0x14] = '\x14';\n  key[0x15] = '\x15';\n  key[0x16] = '\x16';\n  key[0x17] = '\x17';\n  key[0x20] = ' ';\n  key[0x21] = '!';\n  key[0x22] = '\"';\n  key[0x23] = '#';\n  key[0x24] = '$';\n  key[0x25] = '%';\n  key[0x26] = '&';\n  key[0x27] = '\'';\n  key[0x28] = '(';\n  key[0x29] = ')';\n  key[0x2a] = '*';\n  key[0x2b] = '+';\n  key[0x2c] = ',';\n  key[0x2d] = '-';\n  key[0x2e] = '.';\n  key[0x2f] = '/';\n  key[0x30] = '0';\n  key[0x31] = '1';\n  key[0x32] = '2';\n  key[0x33] = '3';\n  key[0x34] = '4';\n  key[0x35] = '5';\n  key[0x36] = '6';\n  key[0x37] = '7';\n  key[0x38] = '8';\n  key[0x39] = '9';\n  key[0x3a] = ':';\n  key[0x3b] = ';';\n  key[0x3c] = '<';\n  key[0x3d] = '=';\n  key[0x3e] = '>';\n  key[0x3f] = '?';\n  key[0x18] = '\x18';\n  key[0x19] = '\x19';\n  key[0x1a] = '\x1a';\n  key[0x1b] = '\x1b';\n  key[0x1c] = '\x1c';\n  key[0x1d] = '\x1d';\n  key[0x1e] = '\x1e';\n  key[0x1f] = '\x1f';\n  do {\n    uVar3 = (uchar)lVar5;\n    inp[lVar5] = uVar3;\n    inp[lVar5 + 1] = uVar3 + '\x01';\n    inp[lVar5 + 2] = uVar3 + '\x02';\n    inp[lVar5 + 3] = uVar3 + '\x03';\n    inp[lVar5 + 4] = uVar3 + '\x04';\n    inp[lVar5 + 5] = uVar3 + '\x05';\n    inp[lVar5 + 6] = uVar3 + '\x06';\n    inp[lVar5 + 7] = uVar3 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  olen = 0x40;\n  should = blake2bmac_test::tests;\n  uVar1 = 0;\n  do {\n    do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(&st,0x40,key,0x40);\n    blake2bmac_process(&st,inp,5);\n    blake2bmac_process(&st,inp + 5,4);\n    blake2bmac_process(&st,inp + 9,3);\n    blake2bmac_process(&st,inp + 0xc,2);\n    blake2bmac_process(&st,inp + 0xe,1);\n    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);\n    blake2bmac_done(&st,out,&olen);\n    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);\n  } while (iVar4 == 0);\nLAB_00157538:\n  iVar4 = 5;\nLAB_0015753d:\n  if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}\n\n" comment (function_definition "int blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  long lVar2;\n  uchar uVar3;\n  int iVar4;\n  long lVar5;\n  ulong inlen;\n  uchar (*should) [64];\n  long in_FS_OFFSET;\n  ulong olen;\n  blake2bmac_state st;\n  uchar key [64];\n  uchar inp [1000];\n  uchar out [1000];\n  \n  lVar5 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  key[8] = '\b';\n  key[9] = '\t';\n  key[10] = '\n';\n  key[0xb] = '\v';\n  key[0xc] = '\f';\n  key[0xd] = '\r';\n  key[0xe] = '\x0e';\n  key[0xf] = '\x0f';\n  key[0] = '\0';\n  key[1] = '\x01';\n  key[2] = '\x02';\n  key[3] = '\x03';\n  key[4] = '\x04';\n  key[5] = '\x05';\n  key[6] = '\x06';\n  key[7] = '\a';\n  key[0x10] = '\x10';\n  key[0x11] = '\x11';\n  key[0x12] = '\x12';\n  key[0x13] = '\x13';\n  key[0x14] = '\x14';\n  key[0x15] = '\x15';\n  key[0x16] = '\x16';\n  key[0x17] = '\x17';\n  key[0x20] = ' ';\n  key[0x21] = '!';\n  key[0x22] = '\"';\n  key[0x23] = '#';\n  key[0x24] = '$';\n  key[0x25] = '%';\n  key[0x26] = '&';\n  key[0x27] = '\'';\n  key[0x28] = '(';\n  key[0x29] = ')';\n  key[0x2a] = '*';\n  key[0x2b] = '+';\n  key[0x2c] = ',';\n  key[0x2d] = '-';\n  key[0x2e] = '.';\n  key[0x2f] = '/';\n  key[0x30] = '0';\n  key[0x31] = '1';\n  key[0x32] = '2';\n  key[0x33] = '3';\n  key[0x34] = '4';\n  key[0x35] = '5';\n  key[0x36] = '6';\n  key[0x37] = '7';\n  key[0x38] = '8';\n  key[0x39] = '9';\n  key[0x3a] = ':';\n  key[0x3b] = ';';\n  key[0x3c] = '<';\n  key[0x3d] = '=';\n  key[0x3e] = '>';\n  key[0x3f] = '?';\n  key[0x18] = '\x18';\n  key[0x19] = '\x19';\n  key[0x1a] = '\x1a';\n  key[0x1b] = '\x1b';\n  key[0x1c] = '\x1c';\n  key[0x1d] = '\x1d';\n  key[0x1e] = '\x1e';\n  key[0x1f] = '\x1f';\n  do {\n    uVar3 = (uchar)lVar5;\n    inp[lVar5] = uVar3;\n    inp[lVar5 + 1] = uVar3 + '\x01';\n    inp[lVar5 + 2] = uVar3 + '\x02';\n    inp[lVar5 + 3] = uVar3 + '\x03';\n    inp[lVar5 + 4] = uVar3 + '\x04';\n    inp[lVar5 + 5] = uVar3 + '\x05';\n    inp[lVar5 + 6] = uVar3 + '\x06';\n    inp[lVar5 + 7] = uVar3 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  olen = 0x40;\n  should = blake2bmac_test::tests;\n  uVar1 = 0;\n  do {\n    do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(&st,0x40,key,0x40);\n    blake2bmac_process(&st,inp,5);\n    blake2bmac_process(&st,inp + 5,4);\n    blake2bmac_process(&st,inp + 9,3);\n    blake2bmac_process(&st,inp + 0xc,2);\n    blake2bmac_process(&st,inp + 0xe,1);\n    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);\n    blake2bmac_done(&st,out,&olen);\n    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);\n  } while (iVar4 == 0);\nLAB_00157538:\n  iVar4 = 5;\nLAB_0015753d:\n  if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "blake2bmac_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  ulong uVar1;\n  long lVar2;\n  uchar uVar3;\n  int iVar4;\n  long lVar5;\n  ulong inlen;\n  uchar (*should) [64];\n  long in_FS_OFFSET;\n  ulong olen;\n  blake2bmac_state st;\n  uchar key [64];\n  uchar inp [1000];\n  uchar out [1000];\n  \n  lVar5 = 0;\n  lVar2 = *(long *)(in_FS_OFFSET + 0x28);\n  key[8] = '\b';\n  key[9] = '\t';\n  key[10] = '\n';\n  key[0xb] = '\v';\n  key[0xc] = '\f';\n  key[0xd] = '\r';\n  key[0xe] = '\x0e';\n  key[0xf] = '\x0f';\n  key[0] = '\0';\n  key[1] = '\x01';\n  key[2] = '\x02';\n  key[3] = '\x03';\n  key[4] = '\x04';\n  key[5] = '\x05';\n  key[6] = '\x06';\n  key[7] = '\a';\n  key[0x10] = '\x10';\n  key[0x11] = '\x11';\n  key[0x12] = '\x12';\n  key[0x13] = '\x13';\n  key[0x14] = '\x14';\n  key[0x15] = '\x15';\n  key[0x16] = '\x16';\n  key[0x17] = '\x17';\n  key[0x20] = ' ';\n  key[0x21] = '!';\n  key[0x22] = '\"';\n  key[0x23] = '#';\n  key[0x24] = '$';\n  key[0x25] = '%';\n  key[0x26] = '&';\n  key[0x27] = '\'';\n  key[0x28] = '(';\n  key[0x29] = ')';\n  key[0x2a] = '*';\n  key[0x2b] = '+';\n  key[0x2c] = ',';\n  key[0x2d] = '-';\n  key[0x2e] = '.';\n  key[0x2f] = '/';\n  key[0x30] = '0';\n  key[0x31] = '1';\n  key[0x32] = '2';\n  key[0x33] = '3';\n  key[0x34] = '4';\n  key[0x35] = '5';\n  key[0x36] = '6';\n  key[0x37] = '7';\n  key[0x38] = '8';\n  key[0x39] = '9';\n  key[0x3a] = ':';\n  key[0x3b] = ';';\n  key[0x3c] = '<';\n  key[0x3d] = '=';\n  key[0x3e] = '>';\n  key[0x3f] = '?';\n  key[0x18] = '\x18';\n  key[0x19] = '\x19';\n  key[0x1a] = '\x1a';\n  key[0x1b] = '\x1b';\n  key[0x1c] = '\x1c';\n  key[0x1d] = '\x1d';\n  key[0x1e] = '\x1e';\n  key[0x1f] = '\x1f';\n  do {\n    uVar3 = (uchar)lVar5;\n    inp[lVar5] = uVar3;\n    inp[lVar5 + 1] = uVar3 + '\x01';\n    inp[lVar5 + 2] = uVar3 + '\x02';\n    inp[lVar5 + 3] = uVar3 + '\x03';\n    inp[lVar5 + 4] = uVar3 + '\x04';\n    inp[lVar5 + 5] = uVar3 + '\x05';\n    inp[lVar5 + 6] = uVar3 + '\x06';\n    inp[lVar5 + 7] = uVar3 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  olen = 0x40;\n  should = blake2bmac_test::tests;\n  uVar1 = 0;\n  do {\n    do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(&st,0x40,key,0x40);\n    blake2bmac_process(&st,inp,5);\n    blake2bmac_process(&st,inp + 5,4);\n    blake2bmac_process(&st,inp + 9,3);\n    blake2bmac_process(&st,inp + 0xc,2);\n    blake2bmac_process(&st,inp + 0xe,1);\n    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);\n    blake2bmac_done(&st,out,&olen);\n    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);\n  } while (iVar4 == 0);\nLAB_00157538:\n  iVar4 = 5;\nLAB_0015753d:\n  if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return iVar4;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "uchar uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong inlen;" type_identifier identifier ;) (expression_statement "uchar (*should) [64];" (subscript_expression "uchar (*should) [64]" (call_expression "uchar (*should)" identifier (argument_list "(*should)" ( (pointer_expression "*should" * identifier) ))) [ number_literal ]) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong olen;" type_identifier identifier ;) (declaration "blake2bmac_state st;" type_identifier identifier ;) (declaration "uchar key [64];" type_identifier (array_declarator "key [64]" identifier [ number_literal ]) ;) (declaration "uchar inp [1000];" type_identifier (array_declarator "inp [1000]" identifier [ number_literal ]) ;) (declaration "uchar out [1000];" type_identifier (array_declarator "out [1000]" identifier [ number_literal ]) ;) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar2 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "key[8] = '\b';" (assignment_expression "key[8] = '\b'" (subscript_expression "key[8]" identifier [ number_literal ]) = (char_literal "'\b'" ' escape_sequence ')) ;) (expression_statement "key[9] = '\t';" (assignment_expression "key[9] = '\t'" (subscript_expression "key[9]" identifier [ number_literal ]) = (char_literal "'\t'" ' escape_sequence ')) ;) (expression_statement "key[10] = '\n';" (assignment_expression "key[10] = '\n'" (subscript_expression "key[10]" identifier [ number_literal ]) = (char_literal "'\n'" ' escape_sequence ')) ;) (expression_statement "key[0xb] = '\v';" (assignment_expression "key[0xb] = '\v'" (subscript_expression "key[0xb]" identifier [ number_literal ]) = (char_literal "'\v'" ' escape_sequence ')) ;) (expression_statement "key[0xc] = '\f';" (assignment_expression "key[0xc] = '\f'" (subscript_expression "key[0xc]" identifier [ number_literal ]) = (char_literal "'\f'" ' escape_sequence ')) ;) (expression_statement "key[0xd] = '\r';" (assignment_expression "key[0xd] = '\r'" (subscript_expression "key[0xd]" identifier [ number_literal ]) = (char_literal "'\r'" ' escape_sequence ')) ;) (expression_statement "key[0xe] = '\x0e';" (assignment_expression "key[0xe] = '\x0e'" (subscript_expression "key[0xe]" identifier [ number_literal ]) = (char_literal "'\x0e'" ' escape_sequence ')) ;) (expression_statement "key[0xf] = '\x0f';" (assignment_expression "key[0xf] = '\x0f'" (subscript_expression "key[0xf]" identifier [ number_literal ]) = (char_literal "'\x0f'" ' escape_sequence ')) ;) (expression_statement "key[0] = '\0';" (assignment_expression "key[0] = '\0'" (subscript_expression "key[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "key[1] = '\x01';" (assignment_expression "key[1] = '\x01'" (subscript_expression "key[1]" identifier [ number_literal ]) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "key[2] = '\x02';" (assignment_expression "key[2] = '\x02'" (subscript_expression "key[2]" identifier [ number_literal ]) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "key[3] = '\x03';" (assignment_expression "key[3] = '\x03'" (subscript_expression "key[3]" identifier [ number_literal ]) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "key[4] = '\x04';" (assignment_expression "key[4] = '\x04'" (subscript_expression "key[4]" identifier [ number_literal ]) = (char_literal "'\x04'" ' escape_sequence ')) ;) (expression_statement "key[5] = '\x05';" (assignment_expression "key[5] = '\x05'" (subscript_expression "key[5]" identifier [ number_literal ]) = (char_literal "'\x05'" ' escape_sequence ')) ;) (expression_statement "key[6] = '\x06';" (assignment_expression "key[6] = '\x06'" (subscript_expression "key[6]" identifier [ number_literal ]) = (char_literal "'\x06'" ' escape_sequence ')) ;) (expression_statement "key[7] = '\a';" (assignment_expression "key[7] = '\a'" (subscript_expression "key[7]" identifier [ number_literal ]) = (char_literal "'\a'" ' escape_sequence ')) ;) (expression_statement "key[0x10] = '\x10';" (assignment_expression "key[0x10] = '\x10'" (subscript_expression "key[0x10]" identifier [ number_literal ]) = (char_literal "'\x10'" ' escape_sequence ')) ;) (expression_statement "key[0x11] = '\x11';" (assignment_expression "key[0x11] = '\x11'" (subscript_expression "key[0x11]" identifier [ number_literal ]) = (char_literal "'\x11'" ' escape_sequence ')) ;) (expression_statement "key[0x12] = '\x12';" (assignment_expression "key[0x12] = '\x12'" (subscript_expression "key[0x12]" identifier [ number_literal ]) = (char_literal "'\x12'" ' escape_sequence ')) ;) (expression_statement "key[0x13] = '\x13';" (assignment_expression "key[0x13] = '\x13'" (subscript_expression "key[0x13]" identifier [ number_literal ]) = (char_literal "'\x13'" ' escape_sequence ')) ;) (expression_statement "key[0x14] = '\x14';" (assignment_expression "key[0x14] = '\x14'" (subscript_expression "key[0x14]" identifier [ number_literal ]) = (char_literal "'\x14'" ' escape_sequence ')) ;) (expression_statement "key[0x15] = '\x15';" (assignment_expression "key[0x15] = '\x15'" (subscript_expression "key[0x15]" identifier [ number_literal ]) = (char_literal "'\x15'" ' escape_sequence ')) ;) (expression_statement "key[0x16] = '\x16';" (assignment_expression "key[0x16] = '\x16'" (subscript_expression "key[0x16]" identifier [ number_literal ]) = (char_literal "'\x16'" ' escape_sequence ')) ;) (expression_statement "key[0x17] = '\x17';" (assignment_expression "key[0x17] = '\x17'" (subscript_expression "key[0x17]" identifier [ number_literal ]) = (char_literal "'\x17'" ' escape_sequence ')) ;) (expression_statement "key[0x20] = ' ';" (assignment_expression "key[0x20] = ' '" (subscript_expression "key[0x20]" identifier [ number_literal ]) = (char_literal "' '" ' character ')) ;) (expression_statement "key[0x21] = '!';" (assignment_expression "key[0x21] = '!'" (subscript_expression "key[0x21]" identifier [ number_literal ]) = (char_literal "'!'" ' character ')) ;) (expression_statement "key[0x22] = '\"';" (assignment_expression "key[0x22] = '\"'" (subscript_expression "key[0x22]" identifier [ number_literal ]) = (char_literal "'\"'" ' escape_sequence ')) ;) (expression_statement "key[0x23] = '#';" (assignment_expression "key[0x23] = '#'" (subscript_expression "key[0x23]" identifier [ number_literal ]) = (char_literal "'#'" ' character ')) ;) (expression_statement "key[0x24] = '$';" (assignment_expression "key[0x24] = '$'" (subscript_expression "key[0x24]" identifier [ number_literal ]) = (char_literal "'$'" ' character ')) ;) (expression_statement "key[0x25] = '%';" (assignment_expression "key[0x25] = '%'" (subscript_expression "key[0x25]" identifier [ number_literal ]) = (char_literal "'%'" ' character ')) ;) (expression_statement "key[0x26] = '&';" (assignment_expression "key[0x26] = '&'" (subscript_expression "key[0x26]" identifier [ number_literal ]) = (char_literal "'&'" ' character ')) ;) (expression_statement "key[0x27] = '\'';" (assignment_expression "key[0x27] = '\''" (subscript_expression "key[0x27]" identifier [ number_literal ]) = (char_literal "'\''" ' escape_sequence ')) ;) (expression_statement "key[0x28] = '(';" (assignment_expression "key[0x28] = '('" (subscript_expression "key[0x28]" identifier [ number_literal ]) = (char_literal "'('" ' character ')) ;) (expression_statement "key[0x29] = ')';" (assignment_expression "key[0x29] = ')'" (subscript_expression "key[0x29]" identifier [ number_literal ]) = (char_literal "')'" ' character ')) ;) (expression_statement "key[0x2a] = '*';" (assignment_expression "key[0x2a] = '*'" (subscript_expression "key[0x2a]" identifier [ number_literal ]) = (char_literal "'*'" ' character ')) ;) (expression_statement "key[0x2b] = '+';" (assignment_expression "key[0x2b] = '+'" (subscript_expression "key[0x2b]" identifier [ number_literal ]) = (char_literal "'+'" ' character ')) ;) (expression_statement "key[0x2c] = ',';" (assignment_expression "key[0x2c] = ','" (subscript_expression "key[0x2c]" identifier [ number_literal ]) = (char_literal "','" ' character ')) ;) (expression_statement "key[0x2d] = '-';" (assignment_expression "key[0x2d] = '-'" (subscript_expression "key[0x2d]" identifier [ number_literal ]) = (char_literal "'-'" ' character ')) ;) (expression_statement "key[0x2e] = '.';" (assignment_expression "key[0x2e] = '.'" (subscript_expression "key[0x2e]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "key[0x2f] = '/';" (assignment_expression "key[0x2f] = '/'" (subscript_expression "key[0x2f]" identifier [ number_literal ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "key[0x30] = '0';" (assignment_expression "key[0x30] = '0'" (subscript_expression "key[0x30]" identifier [ number_literal ]) = (char_literal "'0'" ' character ')) ;) (expression_statement "key[0x31] = '1';" (assignment_expression "key[0x31] = '1'" (subscript_expression "key[0x31]" identifier [ number_literal ]) = (char_literal "'1'" ' character ')) ;) (expression_statement "key[0x32] = '2';" (assignment_expression "key[0x32] = '2'" (subscript_expression "key[0x32]" identifier [ number_literal ]) = (char_literal "'2'" ' character ')) ;) (expression_statement "key[0x33] = '3';" (assignment_expression "key[0x33] = '3'" (subscript_expression "key[0x33]" identifier [ number_literal ]) = (char_literal "'3'" ' character ')) ;) (expression_statement "key[0x34] = '4';" (assignment_expression "key[0x34] = '4'" (subscript_expression "key[0x34]" identifier [ number_literal ]) = (char_literal "'4'" ' character ')) ;) (expression_statement "key[0x35] = '5';" (assignment_expression "key[0x35] = '5'" (subscript_expression "key[0x35]" identifier [ number_literal ]) = (char_literal "'5'" ' character ')) ;) (expression_statement "key[0x36] = '6';" (assignment_expression "key[0x36] = '6'" (subscript_expression "key[0x36]" identifier [ number_literal ]) = (char_literal "'6'" ' character ')) ;) (expression_statement "key[0x37] = '7';" (assignment_expression "key[0x37] = '7'" (subscript_expression "key[0x37]" identifier [ number_literal ]) = (char_literal "'7'" ' character ')) ;) (expression_statement "key[0x38] = '8';" (assignment_expression "key[0x38] = '8'" (subscript_expression "key[0x38]" identifier [ number_literal ]) = (char_literal "'8'" ' character ')) ;) (expression_statement "key[0x39] = '9';" (assignment_expression "key[0x39] = '9'" (subscript_expression "key[0x39]" identifier [ number_literal ]) = (char_literal "'9'" ' character ')) ;) (expression_statement "key[0x3a] = ':';" (assignment_expression "key[0x3a] = ':'" (subscript_expression "key[0x3a]" identifier [ number_literal ]) = (char_literal "':'" ' character ')) ;) (expression_statement "key[0x3b] = ';';" (assignment_expression "key[0x3b] = ';'" (subscript_expression "key[0x3b]" identifier [ number_literal ]) = (char_literal "';'" ' character ')) ;) (expression_statement "key[0x3c] = '<';" (assignment_expression "key[0x3c] = '<'" (subscript_expression "key[0x3c]" identifier [ number_literal ]) = (char_literal "'<'" ' character ')) ;) (expression_statement "key[0x3d] = '=';" (assignment_expression "key[0x3d] = '='" (subscript_expression "key[0x3d]" identifier [ number_literal ]) = (char_literal "'='" ' character ')) ;) (expression_statement "key[0x3e] = '>';" (assignment_expression "key[0x3e] = '>'" (subscript_expression "key[0x3e]" identifier [ number_literal ]) = (char_literal "'>'" ' character ')) ;) (expression_statement "key[0x3f] = '?';" (assignment_expression "key[0x3f] = '?'" (subscript_expression "key[0x3f]" identifier [ number_literal ]) = (char_literal "'?'" ' character ')) ;) (expression_statement "key[0x18] = '\x18';" (assignment_expression "key[0x18] = '\x18'" (subscript_expression "key[0x18]" identifier [ number_literal ]) = (char_literal "'\x18'" ' escape_sequence ')) ;) (expression_statement "key[0x19] = '\x19';" (assignment_expression "key[0x19] = '\x19'" (subscript_expression "key[0x19]" identifier [ number_literal ]) = (char_literal "'\x19'" ' escape_sequence ')) ;) (expression_statement "key[0x1a] = '\x1a';" (assignment_expression "key[0x1a] = '\x1a'" (subscript_expression "key[0x1a]" identifier [ number_literal ]) = (char_literal "'\x1a'" ' escape_sequence ')) ;) (expression_statement "key[0x1b] = '\x1b';" (assignment_expression "key[0x1b] = '\x1b'" (subscript_expression "key[0x1b]" identifier [ number_literal ]) = (char_literal "'\x1b'" ' escape_sequence ')) ;) (expression_statement "key[0x1c] = '\x1c';" (assignment_expression "key[0x1c] = '\x1c'" (subscript_expression "key[0x1c]" identifier [ number_literal ]) = (char_literal "'\x1c'" ' escape_sequence ')) ;) (expression_statement "key[0x1d] = '\x1d';" (assignment_expression "key[0x1d] = '\x1d'" (subscript_expression "key[0x1d]" identifier [ number_literal ]) = (char_literal "'\x1d'" ' escape_sequence ')) ;) (expression_statement "key[0x1e] = '\x1e';" (assignment_expression "key[0x1e] = '\x1e'" (subscript_expression "key[0x1e]" identifier [ number_literal ]) = (char_literal "'\x1e'" ' escape_sequence ')) ;) (expression_statement "key[0x1f] = '\x1f';" (assignment_expression "key[0x1f] = '\x1f'" (subscript_expression "key[0x1f]" identifier [ number_literal ]) = (char_literal "'\x1f'" ' escape_sequence ')) ;) (do_statement "do {\n    uVar3 = (uchar)lVar5;\n    inp[lVar5] = uVar3;\n    inp[lVar5 + 1] = uVar3 + '\x01';\n    inp[lVar5 + 2] = uVar3 + '\x02';\n    inp[lVar5 + 3] = uVar3 + '\x03';\n    inp[lVar5 + 4] = uVar3 + '\x04';\n    inp[lVar5 + 5] = uVar3 + '\x05';\n    inp[lVar5 + 6] = uVar3 + '\x06';\n    inp[lVar5 + 7] = uVar3 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);" do (compound_statement "{\n    uVar3 = (uchar)lVar5;\n    inp[lVar5] = uVar3;\n    inp[lVar5 + 1] = uVar3 + '\x01';\n    inp[lVar5 + 2] = uVar3 + '\x02';\n    inp[lVar5 + 3] = uVar3 + '\x03';\n    inp[lVar5 + 4] = uVar3 + '\x04';\n    inp[lVar5 + 5] = uVar3 + '\x05';\n    inp[lVar5 + 6] = uVar3 + '\x06';\n    inp[lVar5 + 7] = uVar3 + '\a';\n    lVar5 = lVar5 + 8;\n  }" { (expression_statement "uVar3 = (uchar)lVar5;" (assignment_expression "uVar3 = (uchar)lVar5" identifier = (cast_expression "(uchar)lVar5" ( (type_descriptor "uchar" type_identifier) ) identifier)) ;) (expression_statement "inp[lVar5] = uVar3;" (assignment_expression "inp[lVar5] = uVar3" (subscript_expression "inp[lVar5]" identifier [ identifier ]) = identifier) ;) (expression_statement "inp[lVar5 + 1] = uVar3 + '\x01';" (assignment_expression "inp[lVar5 + 1] = uVar3 + '\x01'" (subscript_expression "inp[lVar5 + 1]" identifier [ (binary_expression "lVar5 + 1" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 2] = uVar3 + '\x02';" (assignment_expression "inp[lVar5 + 2] = uVar3 + '\x02'" (subscript_expression "inp[lVar5 + 2]" identifier [ (binary_expression "lVar5 + 2" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x02'" identifier + (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 3] = uVar3 + '\x03';" (assignment_expression "inp[lVar5 + 3] = uVar3 + '\x03'" (subscript_expression "inp[lVar5 + 3]" identifier [ (binary_expression "lVar5 + 3" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x03'" identifier + (char_literal "'\x03'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 4] = uVar3 + '\x04';" (assignment_expression "inp[lVar5 + 4] = uVar3 + '\x04'" (subscript_expression "inp[lVar5 + 4]" identifier [ (binary_expression "lVar5 + 4" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x04'" identifier + (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 5] = uVar3 + '\x05';" (assignment_expression "inp[lVar5 + 5] = uVar3 + '\x05'" (subscript_expression "inp[lVar5 + 5]" identifier [ (binary_expression "lVar5 + 5" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x05'" identifier + (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 6] = uVar3 + '\x06';" (assignment_expression "inp[lVar5 + 6] = uVar3 + '\x06'" (subscript_expression "inp[lVar5 + 6]" identifier [ (binary_expression "lVar5 + 6" identifier + number_literal) ]) = (binary_expression "uVar3 + '\x06'" identifier + (char_literal "'\x06'" ' escape_sequence '))) ;) (expression_statement "inp[lVar5 + 7] = uVar3 + '\a';" (assignment_expression "inp[lVar5 + 7] = uVar3 + '\a'" (subscript_expression "inp[lVar5 + 7]" identifier [ (binary_expression "lVar5 + 7" identifier + number_literal) ]) = (binary_expression "uVar3 + '\a'" identifier + (char_literal "'\a'" ' escape_sequence '))) ;) (expression_statement "lVar5 = lVar5 + 8;" (assignment_expression "lVar5 = lVar5 + 8" identifier = (binary_expression "lVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 != 0x100)" ( (binary_expression "lVar5 != 0x100" identifier != number_literal) )) ;) (expression_statement "olen = 0x40;" (assignment_expression "olen = 0x40" identifier = number_literal) ;) (expression_statement "should = blake2bmac_test::tests;" (assignment_expression "should = blake2bmac_test" identifier = identifier) (ERROR "::tests" : : identifier) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(&st,0x40,key,0x40);\n    blake2bmac_process(&st,inp,5);\n    blake2bmac_process(&st,inp + 5,4);\n    blake2bmac_process(&st,inp + 9,3);\n    blake2bmac_process(&st,inp + 0xc,2);\n    blake2bmac_process(&st,inp + 0xe,1);\n    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);\n    blake2bmac_done(&st,out,&olen);\n    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);\n  } while (iVar4 == 0);" do (compound_statement "{\n    do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(&st,0x40,key,0x40);\n    blake2bmac_process(&st,inp,5);\n    blake2bmac_process(&st,inp + 5,4);\n    blake2bmac_process(&st,inp + 9,3);\n    blake2bmac_process(&st,inp + 0xc,2);\n    blake2bmac_process(&st,inp + 0xe,1);\n    blake2bmac_process(&st,inp + 0xf,inlen - 0xe);\n    blake2bmac_done(&st,out,&olen);\n    iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);\n  }" { (do_statement "do {\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    } while (uVar1 < 0x10);" do (compound_statement "{\n      inlen = uVar1;\n      blake2bmac_init(&st,olen,key,0x40);\n      blake2bmac_process(&st,inp,inlen);\n      blake2bmac_done(&st,out,&olen);\n      iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);\n      if (iVar4 != 0) goto LAB_00157538;\n      uVar1 = inlen + 1;\n      iVar4 = 0;\n      if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;\n      olen = 0x40;\n      should = should + 1;\n    }" { (expression_statement "inlen = uVar1;" (assignment_expression "inlen = uVar1" identifier = identifier) ;) (expression_statement "blake2bmac_init(&st,olen,key,0x40);" (call_expression "blake2bmac_init(&st,olen,key,0x40)" identifier (argument_list "(&st,olen,key,0x40)" ( (pointer_expression "&st" & identifier) , identifier , identifier , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp,inlen);" (call_expression "blake2bmac_process(&st,inp,inlen)" identifier (argument_list "(&st,inp,inlen)" ( (pointer_expression "&st" & identifier) , identifier , identifier ))) ;) (expression_statement "blake2bmac_done(&st,out,&olen);" (call_expression "blake2bmac_done(&st,out,&olen)" identifier (argument_list "(&st,out,&olen)" ( (pointer_expression "&st" & identifier) , identifier , (pointer_expression "&olen" & identifier) ))) ;) (expression_statement "iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen);" (assignment_expression "iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen)" identifier = (call_expression "compare_testvector(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen)" identifier (argument_list "(out,olen,should,0x40,"BLAKE2B MAC single",(int)inlen)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC single"" " string_content ") , (cast_expression "(int)inlen" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (if_statement "if (iVar4 != 0) goto LAB_00157538;" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00157538;" goto statement_identifier ;)) (expression_statement "uVar1 = inlen + 1;" (assignment_expression "uVar1 = inlen + 1" identifier = (binary_expression "inlen + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (should == blake2bmac_test::tests + 0xff) goto LAB_0015753d;" if (parenthesized_expression "(should == blake2bmac_test::tests + 0xff)" ( (binary_expression "should == blake2bmac_test::tests + 0xff" (binary_expression "should == blake2bmac_test" identifier == identifier) (ERROR "::tests" : : identifier) + number_literal) )) (goto_statement "goto LAB_0015753d;" goto statement_identifier ;)) (expression_statement "olen = 0x40;" (assignment_expression "olen = 0x40" identifier = number_literal) ;) (expression_statement "should = should + 1;" (assignment_expression "should = should + 1" identifier = (binary_expression "should + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x10)" ( (binary_expression "uVar1 < 0x10" identifier < number_literal) )) ;) (expression_statement "blake2bmac_init(&st,0x40,key,0x40);" (call_expression "blake2bmac_init(&st,0x40,key,0x40)" identifier (argument_list "(&st,0x40,key,0x40)" ( (pointer_expression "&st" & identifier) , number_literal , identifier , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp,5);" (call_expression "blake2bmac_process(&st,inp,5)" identifier (argument_list "(&st,inp,5)" ( (pointer_expression "&st" & identifier) , identifier , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp + 5,4);" (call_expression "blake2bmac_process(&st,inp + 5,4)" identifier (argument_list "(&st,inp + 5,4)" ( (pointer_expression "&st" & identifier) , (binary_expression "inp + 5" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp + 9,3);" (call_expression "blake2bmac_process(&st,inp + 9,3)" identifier (argument_list "(&st,inp + 9,3)" ( (pointer_expression "&st" & identifier) , (binary_expression "inp + 9" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp + 0xc,2);" (call_expression "blake2bmac_process(&st,inp + 0xc,2)" identifier (argument_list "(&st,inp + 0xc,2)" ( (pointer_expression "&st" & identifier) , (binary_expression "inp + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp + 0xe,1);" (call_expression "blake2bmac_process(&st,inp + 0xe,1)" identifier (argument_list "(&st,inp + 0xe,1)" ( (pointer_expression "&st" & identifier) , (binary_expression "inp + 0xe" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(&st,inp + 0xf,inlen - 0xe);" (call_expression "blake2bmac_process(&st,inp + 0xf,inlen - 0xe)" identifier (argument_list "(&st,inp + 0xf,inlen - 0xe)" ( (pointer_expression "&st" & identifier) , (binary_expression "inp + 0xf" identifier + number_literal) , (binary_expression "inlen - 0xe" identifier - number_literal) ))) ;) (expression_statement "blake2bmac_done(&st,out,&olen);" (call_expression "blake2bmac_done(&st,out,&olen)" identifier (argument_list "(&st,out,&olen)" ( (pointer_expression "&st" & identifier) , identifier , (pointer_expression "&olen" & identifier) ))) ;) (expression_statement "iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1);" (assignment_expression "iVar4 = compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1)" identifier = (call_expression "compare_testvector(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1)" identifier (argument_list "(out,olen,should,0x40,"BLAKE2B MAC multi",(int)uVar1)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC multi"" " string_content ") , (cast_expression "(int)uVar1" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) }) while (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_00157538:\n  iVar4 = 5;" statement_identifier : (expression_statement "iVar4 = 5;" (assignment_expression "iVar4 = 5" identifier = number_literal) ;)) (labeled_statement "LAB_0015753d:\n  if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (lVar2 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar2 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar2 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "undefined8 blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar4;\n}\n\n" (function_definition "undefined8 blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar4;\n}" type_identifier (function_declarator "blake2bmac_test(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar4;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_a00;" type_identifier identifier ;) (declaration "undefined1 local_9f8 [416];" type_identifier (array_declarator "local_9f8 [416]" identifier [ number_literal ]) ;) (declaration "undefined8 local_858;" type_identifier identifier ;) (declaration "undefined8 local_850;" type_identifier identifier ;) (declaration "undefined8 local_848;" type_identifier identifier ;) (declaration "undefined8 local_840;" type_identifier identifier ;) (declaration "undefined8 local_838;" type_identifier identifier ;) (declaration "undefined8 local_830;" type_identifier identifier ;) (declaration "undefined8 local_828;" type_identifier identifier ;) (declaration "undefined8 local_820;" type_identifier identifier ;) (declaration "char local_818 [1008];" primitive_type (array_declarator "local_818 [1008]" identifier [ number_literal ]) ;) (declaration "undefined1 local_428 [1000];" type_identifier (array_declarator "local_428 [1000]" identifier [ number_literal ]) ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "local_850 = 0xf0e0d0c0b0a0908;" (assignment_expression "local_850 = 0xf0e0d0c0b0a0908" identifier = number_literal) ;) (expression_statement "local_858 = 0x706050403020100;" (assignment_expression "local_858 = 0x706050403020100" identifier = number_literal) ;) (expression_statement "local_848 = 0x1716151413121110;" (assignment_expression "local_848 = 0x1716151413121110" identifier = number_literal) ;) (expression_statement "local_838 = 0x2726252423222120;" (assignment_expression "local_838 = 0x2726252423222120" identifier = number_literal) ;) (expression_statement "local_830 = 0x2f2e2d2c2b2a2928;" (assignment_expression "local_830 = 0x2f2e2d2c2b2a2928" identifier = number_literal) ;) (expression_statement "local_828 = 0x3736353433323130;" (assignment_expression "local_828 = 0x3736353433323130" identifier = number_literal) ;) (expression_statement "local_820 = 0x3f3e3d3c3b3a3938;" (assignment_expression "local_820 = 0x3f3e3d3c3b3a3938" identifier = number_literal) ;) (expression_statement "local_840 = 0x1f1e1d1c1b1a1918;" (assignment_expression "local_840 = 0x1f1e1d1c1b1a1918" identifier = number_literal) ;) (do_statement "do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);" do (compound_statement "{\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  }" { (expression_statement "cVar2 = (char)lVar5;" (assignment_expression "cVar2 = (char)lVar5" identifier = (cast_expression "(char)lVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "local_818[lVar5] = cVar2;" (assignment_expression "local_818[lVar5] = cVar2" (subscript_expression "local_818[lVar5]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_818[lVar5 + 1] = cVar2 + '\x01';" (assignment_expression "local_818[lVar5 + 1] = cVar2 + '\x01'" (subscript_expression "local_818[lVar5 + 1]" identifier [ (binary_expression "lVar5 + 1" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x01'" identifier + (char_literal "'\x01'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 2] = cVar2 + '\x02';" (assignment_expression "local_818[lVar5 + 2] = cVar2 + '\x02'" (subscript_expression "local_818[lVar5 + 2]" identifier [ (binary_expression "lVar5 + 2" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x02'" identifier + (char_literal "'\x02'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 3] = cVar2 + '\x03';" (assignment_expression "local_818[lVar5 + 3] = cVar2 + '\x03'" (subscript_expression "local_818[lVar5 + 3]" identifier [ (binary_expression "lVar5 + 3" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x03'" identifier + (char_literal "'\x03'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 4] = cVar2 + '\x04';" (assignment_expression "local_818[lVar5 + 4] = cVar2 + '\x04'" (subscript_expression "local_818[lVar5 + 4]" identifier [ (binary_expression "lVar5 + 4" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x04'" identifier + (char_literal "'\x04'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 5] = cVar2 + '\x05';" (assignment_expression "local_818[lVar5 + 5] = cVar2 + '\x05'" (subscript_expression "local_818[lVar5 + 5]" identifier [ (binary_expression "lVar5 + 5" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x05'" identifier + (char_literal "'\x05'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 6] = cVar2 + '\x06';" (assignment_expression "local_818[lVar5 + 6] = cVar2 + '\x06'" (subscript_expression "local_818[lVar5 + 6]" identifier [ (binary_expression "lVar5 + 6" identifier + number_literal) ]) = (binary_expression "cVar2 + '\x06'" identifier + (char_literal "'\x06'" ' escape_sequence '))) ;) (expression_statement "local_818[lVar5 + 7] = cVar2 + '\a';" (assignment_expression "local_818[lVar5 + 7] = cVar2 + '\a'" (subscript_expression "local_818[lVar5 + 7]" identifier [ (binary_expression "lVar5 + 7" identifier + number_literal) ]) = (binary_expression "cVar2 + '\a'" identifier + (char_literal "'\a'" ' escape_sequence '))) ;) (expression_statement "lVar5 = lVar5 + 8;" (assignment_expression "lVar5 = lVar5 + 8" identifier = (binary_expression "lVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar5 != 0x100)" ( (binary_expression "lVar5 != 0x100" identifier != number_literal) )) ;) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" identifier = number_literal) ;) (expression_statement "puVar7 = &DAT_001b5960;" (assignment_expression "puVar7 = &DAT_001b5960" identifier = (pointer_expression "&DAT_001b5960" & identifier)) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (do_statement "do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);" do (compound_statement "{\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  }" { (do_statement "do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);" do (compound_statement "{\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    }" { (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" identifier = identifier) ;) (expression_statement "blake2bmac_init(local_9f8,local_a00,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,local_a00,&local_858,0x40)" identifier (argument_list "(local_9f8,local_a00,&local_858,0x40)" ( identifier , identifier , (pointer_expression "&local_858" & identifier) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818,uVar6);" (call_expression "blake2bmac_process(local_9f8,local_818,uVar6)" identifier (argument_list "(local_9f8,local_818,uVar6)" ( identifier , identifier , identifier ))) ;) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" identifier (argument_list "(local_9f8,local_428,&local_a00)" ( identifier , identifier , (pointer_expression "&local_a00" & identifier) ))) ;) (expression_statement "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);" (assignment_expression "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" identifier = (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" identifier (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC single"" " string_content ") , (binary_expression "uVar6 & 0xffffffff" identifier & number_literal) )))) ;) (if_statement "if ((int)uVar4 != 0) goto LAB_00157538;" if (parenthesized_expression "((int)uVar4 != 0)" ( (binary_expression "(int)uVar4 != 0" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) (goto_statement "goto LAB_00157538;" goto statement_identifier ;)) (expression_statement "uVar1 = uVar6 + 1;" (assignment_expression "uVar1 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if (puVar7 == &DAT_001b9920) goto LAB_0015753d;" if (parenthesized_expression "(puVar7 == &DAT_001b9920)" ( (binary_expression "puVar7 == &DAT_001b9920" identifier == (pointer_expression "&DAT_001b9920" & identifier)) )) (goto_statement "goto LAB_0015753d;" goto statement_identifier ;)) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" identifier = number_literal) ;) (expression_statement "puVar7 = puVar7 + 0x40;" (assignment_expression "puVar7 = puVar7 + 0x40" identifier = (binary_expression "puVar7 + 0x40" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 < 0x10)" ( (binary_expression "uVar1 < 0x10" identifier < number_literal) )) ;) (expression_statement "blake2bmac_init(local_9f8,0x40,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,0x40,&local_858,0x40)" identifier (argument_list "(local_9f8,0x40,&local_858,0x40)" ( identifier , number_literal , (pointer_expression "&local_858" & identifier) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818,5);" (call_expression "blake2bmac_process(local_9f8,local_818,5)" identifier (argument_list "(local_9f8,local_818,5)" ( identifier , identifier , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 5,4);" (call_expression "blake2bmac_process(local_9f8,local_818 + 5,4)" identifier (argument_list "(local_9f8,local_818 + 5,4)" ( identifier , (binary_expression "local_818 + 5" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 9,3);" (call_expression "blake2bmac_process(local_9f8,local_818 + 9,3)" identifier (argument_list "(local_9f8,local_818 + 9,3)" ( identifier , (binary_expression "local_818 + 9" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xc,2);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xc,2)" identifier (argument_list "(local_9f8,local_818 + 0xc,2)" ( identifier , (binary_expression "local_818 + 0xc" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xe,1);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xe,1)" identifier (argument_list "(local_9f8,local_818 + 0xe,1)" ( identifier , (binary_expression "local_818 + 0xe" identifier + number_literal) , number_literal ))) ;) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe)" identifier (argument_list "(local_9f8,local_818 + 0xf,uVar6 - 0xe)" ( identifier , (binary_expression "local_818 + 0xf" identifier + number_literal) , (binary_expression "uVar6 - 0xe" identifier - number_literal) ))) ;) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" identifier (argument_list "(local_9f8,local_428,&local_a00)" ( identifier , identifier , (pointer_expression "&local_a00" & identifier) ))) ;) (expression_statement "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);" (assignment_expression "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" identifier = (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" identifier (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" ( identifier , identifier , identifier , number_literal , (string_literal ""BLAKE2B MAC multi"" " string_content ") , (binary_expression "uVar1 & 0xffffffff" identifier & number_literal) )))) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_00157538:\n  uVar4 = 5;" statement_identifier : (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" identifier = number_literal) ;)) (labeled_statement "LAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" statement_identifier : (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression IDENT + (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , (string_literal " string_content ") , (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression & IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (pointer_expression & IDENT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT - LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , (string_literal " string_content ") , (binary_expression IDENT & LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 blake2bmac_test(void)\n\n{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar4;\n}" (type_identifier "undefined8") (function_declarator "blake2bmac_test(void)" (identifier "blake2bmac_test") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  char cVar2;\n  int iVar3;\n  undefined8 uVar4;\n  long lVar5;\n  ulong uVar6;\n  undefined *puVar7;\n  long in_FS_OFFSET;\n  undefined8 local_a00;\n  undefined1 local_9f8 [416];\n  undefined8 local_858;\n  undefined8 local_850;\n  undefined8 local_848;\n  undefined8 local_840;\n  undefined8 local_838;\n  undefined8 local_830;\n  undefined8 local_828;\n  undefined8 local_820;\n  char local_818 [1008];\n  undefined1 local_428 [1000];\n  long local_40;\n  \n  lVar5 = 0;\n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  local_850 = 0xf0e0d0c0b0a0908;\n  local_858 = 0x706050403020100;\n  local_848 = 0x1716151413121110;\n  local_838 = 0x2726252423222120;\n  local_830 = 0x2f2e2d2c2b2a2928;\n  local_828 = 0x3736353433323130;\n  local_820 = 0x3f3e3d3c3b3a3938;\n  local_840 = 0x1f1e1d1c1b1a1918;\n  do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);\n  local_a00 = 0x40;\n  puVar7 = &DAT_001b5960;\n  uVar1 = 0;\n  do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);\nLAB_00157538:\n  uVar4 = 5;\nLAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return uVar4;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined8 uVar4;" (type_identifier "undefined8") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined8 local_a00;" (type_identifier "undefined8") (identifier "local_a00") (; ";")) (declaration "undefined1 local_9f8 [416];" (type_identifier "undefined1") (array_declarator "local_9f8 [416]" (identifier "local_9f8") ([ "[") (number_literal "416") (] "]")) (; ";")) (declaration "undefined8 local_858;" (type_identifier "undefined8") (identifier "local_858") (; ";")) (declaration "undefined8 local_850;" (type_identifier "undefined8") (identifier "local_850") (; ";")) (declaration "undefined8 local_848;" (type_identifier "undefined8") (identifier "local_848") (; ";")) (declaration "undefined8 local_840;" (type_identifier "undefined8") (identifier "local_840") (; ";")) (declaration "undefined8 local_838;" (type_identifier "undefined8") (identifier "local_838") (; ";")) (declaration "undefined8 local_830;" (type_identifier "undefined8") (identifier "local_830") (; ";")) (declaration "undefined8 local_828;" (type_identifier "undefined8") (identifier "local_828") (; ";")) (declaration "undefined8 local_820;" (type_identifier "undefined8") (identifier "local_820") (; ";")) (declaration "char local_818 [1008];" (primitive_type "char") (array_declarator "local_818 [1008]" (identifier "local_818") ([ "[") (number_literal "1008") (] "]")) (; ";")) (declaration "undefined1 local_428 [1000];" (type_identifier "undefined1") (array_declarator "local_428 [1000]" (identifier "local_428") ([ "[") (number_literal "1000") (] "]")) (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" (identifier "lVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "local_850 = 0xf0e0d0c0b0a0908;" (assignment_expression "local_850 = 0xf0e0d0c0b0a0908" (identifier "local_850") (= "=") (number_literal "0xf0e0d0c0b0a0908")) (; ";")) (expression_statement "local_858 = 0x706050403020100;" (assignment_expression "local_858 = 0x706050403020100" (identifier "local_858") (= "=") (number_literal "0x706050403020100")) (; ";")) (expression_statement "local_848 = 0x1716151413121110;" (assignment_expression "local_848 = 0x1716151413121110" (identifier "local_848") (= "=") (number_literal "0x1716151413121110")) (; ";")) (expression_statement "local_838 = 0x2726252423222120;" (assignment_expression "local_838 = 0x2726252423222120" (identifier "local_838") (= "=") (number_literal "0x2726252423222120")) (; ";")) (expression_statement "local_830 = 0x2f2e2d2c2b2a2928;" (assignment_expression "local_830 = 0x2f2e2d2c2b2a2928" (identifier "local_830") (= "=") (number_literal "0x2f2e2d2c2b2a2928")) (; ";")) (expression_statement "local_828 = 0x3736353433323130;" (assignment_expression "local_828 = 0x3736353433323130" (identifier "local_828") (= "=") (number_literal "0x3736353433323130")) (; ";")) (expression_statement "local_820 = 0x3f3e3d3c3b3a3938;" (assignment_expression "local_820 = 0x3f3e3d3c3b3a3938" (identifier "local_820") (= "=") (number_literal "0x3f3e3d3c3b3a3938")) (; ";")) (expression_statement "local_840 = 0x1f1e1d1c1b1a1918;" (assignment_expression "local_840 = 0x1f1e1d1c1b1a1918" (identifier "local_840") (= "=") (number_literal "0x1f1e1d1c1b1a1918")) (; ";")) (do_statement "do {\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  } while (lVar5 != 0x100);" (do "do") (compound_statement "{\n    cVar2 = (char)lVar5;\n    local_818[lVar5] = cVar2;\n    local_818[lVar5 + 1] = cVar2 + '\x01';\n    local_818[lVar5 + 2] = cVar2 + '\x02';\n    local_818[lVar5 + 3] = cVar2 + '\x03';\n    local_818[lVar5 + 4] = cVar2 + '\x04';\n    local_818[lVar5 + 5] = cVar2 + '\x05';\n    local_818[lVar5 + 6] = cVar2 + '\x06';\n    local_818[lVar5 + 7] = cVar2 + '\a';\n    lVar5 = lVar5 + 8;\n  }" ({ "{") (expression_statement "cVar2 = (char)lVar5;" (assignment_expression "cVar2 = (char)lVar5" (identifier "cVar2") (= "=") (cast_expression "(char)lVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "lVar5"))) (; ";")) (expression_statement "local_818[lVar5] = cVar2;" (assignment_expression "local_818[lVar5] = cVar2" (subscript_expression "local_818[lVar5]" (identifier "local_818") ([ "[") (identifier "lVar5") (] "]")) (= "=") (identifier "cVar2")) (; ";")) (expression_statement "local_818[lVar5 + 1] = cVar2 + '\x01';" (assignment_expression "local_818[lVar5 + 1] = cVar2 + '\x01'" (subscript_expression "local_818[lVar5 + 1]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "cVar2 + '\x01'" (identifier "cVar2") (+ "+") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 2] = cVar2 + '\x02';" (assignment_expression "local_818[lVar5 + 2] = cVar2 + '\x02'" (subscript_expression "local_818[lVar5 + 2]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 2" (identifier "lVar5") (+ "+") (number_literal "2")) (] "]")) (= "=") (binary_expression "cVar2 + '\x02'" (identifier "cVar2") (+ "+") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 3] = cVar2 + '\x03';" (assignment_expression "local_818[lVar5 + 3] = cVar2 + '\x03'" (subscript_expression "local_818[lVar5 + 3]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 3" (identifier "lVar5") (+ "+") (number_literal "3")) (] "]")) (= "=") (binary_expression "cVar2 + '\x03'" (identifier "cVar2") (+ "+") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 4] = cVar2 + '\x04';" (assignment_expression "local_818[lVar5 + 4] = cVar2 + '\x04'" (subscript_expression "local_818[lVar5 + 4]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 4" (identifier "lVar5") (+ "+") (number_literal "4")) (] "]")) (= "=") (binary_expression "cVar2 + '\x04'" (identifier "cVar2") (+ "+") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 5] = cVar2 + '\x05';" (assignment_expression "local_818[lVar5 + 5] = cVar2 + '\x05'" (subscript_expression "local_818[lVar5 + 5]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 5" (identifier "lVar5") (+ "+") (number_literal "5")) (] "]")) (= "=") (binary_expression "cVar2 + '\x05'" (identifier "cVar2") (+ "+") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 6] = cVar2 + '\x06';" (assignment_expression "local_818[lVar5 + 6] = cVar2 + '\x06'" (subscript_expression "local_818[lVar5 + 6]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 6" (identifier "lVar5") (+ "+") (number_literal "6")) (] "]")) (= "=") (binary_expression "cVar2 + '\x06'" (identifier "cVar2") (+ "+") (char_literal "'\x06'" (' "'") (escape_sequence "\x06") (' "'")))) (; ";")) (expression_statement "local_818[lVar5 + 7] = cVar2 + '\a';" (assignment_expression "local_818[lVar5 + 7] = cVar2 + '\a'" (subscript_expression "local_818[lVar5 + 7]" (identifier "local_818") ([ "[") (binary_expression "lVar5 + 7" (identifier "lVar5") (+ "+") (number_literal "7")) (] "]")) (= "=") (binary_expression "cVar2 + '\a'" (identifier "cVar2") (+ "+") (char_literal "'\a'" (' "'") (escape_sequence "\a") (' "'")))) (; ";")) (expression_statement "lVar5 = lVar5 + 8;" (assignment_expression "lVar5 = lVar5 + 8" (identifier "lVar5") (= "=") (binary_expression "lVar5 + 8" (identifier "lVar5") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar5 != 0x100)" (( "(") (binary_expression "lVar5 != 0x100" (identifier "lVar5") (!= "!=") (number_literal "0x100")) () ")")) (; ";")) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" (identifier "local_a00") (= "=") (number_literal "0x40")) (; ";")) (expression_statement "puVar7 = &DAT_001b5960;" (assignment_expression "puVar7 = &DAT_001b5960" (identifier "puVar7") (= "=") (pointer_expression "&DAT_001b5960" (& "&") (identifier "DAT_001b5960"))) (; ";")) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" (identifier "uVar1") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  } while (iVar3 == 0);" (do "do") (compound_statement "{\n    do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);\n    blake2bmac_init(local_9f8,0x40,&local_858,0x40);\n    blake2bmac_process(local_9f8,local_818,5);\n    blake2bmac_process(local_9f8,local_818 + 5,4);\n    blake2bmac_process(local_9f8,local_818 + 9,3);\n    blake2bmac_process(local_9f8,local_818 + 0xc,2);\n    blake2bmac_process(local_9f8,local_818 + 0xe,1);\n    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);\n    blake2bmac_done(local_9f8,local_428,&local_a00);\n    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);\n  }" ({ "{") (do_statement "do {\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    } while (uVar1 < 0x10);" (do "do") (compound_statement "{\n      uVar6 = uVar1;\n      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);\n      blake2bmac_process(local_9f8,local_818,uVar6);\n      blake2bmac_done(local_9f8,local_428,&local_a00);\n      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);\n      if ((int)uVar4 != 0) goto LAB_00157538;\n      uVar1 = uVar6 + 1;\n      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;\n      local_a00 = 0x40;\n      puVar7 = puVar7 + 0x40;\n    }" ({ "{") (expression_statement "uVar6 = uVar1;" (assignment_expression "uVar6 = uVar1" (identifier "uVar6") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "blake2bmac_init(local_9f8,local_a00,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,local_a00,&local_858,0x40)" (identifier "blake2bmac_init") (argument_list "(local_9f8,local_a00,&local_858,0x40)" (( "(") (identifier "local_9f8") (, ",") (identifier "local_a00") (, ",") (pointer_expression "&local_858" (& "&") (identifier "local_858")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818,uVar6);" (call_expression "blake2bmac_process(local_9f8,local_818,uVar6)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818,uVar6)" (( "(") (identifier "local_9f8") (, ",") (identifier "local_818") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" (identifier "blake2bmac_done") (argument_list "(local_9f8,local_428,&local_a00)" (( "(") (identifier "local_9f8") (, ",") (identifier "local_428") (, ",") (pointer_expression "&local_a00" (& "&") (identifier "local_a00")) () ")"))) (; ";")) (expression_statement "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff);" (assignment_expression "uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" (identifier "uVar4") (= "=") (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" (identifier "compare_testvector") (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",\n                                 uVar6 & 0xffffffff)" (( "(") (identifier "local_428") (, ",") (identifier "local_a00") (, ",") (identifier "puVar7") (, ",") (number_literal "0x40") (, ",") (string_literal ""BLAKE2B MAC single"" (" """) (string_content "BLAKE2B MAC single") (" """)) (, ",") (binary_expression "uVar6 & 0xffffffff" (identifier "uVar6") (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (if_statement "if ((int)uVar4 != 0) goto LAB_00157538;" (if "if") (parenthesized_expression "((int)uVar4 != 0)" (( "(") (binary_expression "(int)uVar4 != 0" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00157538;" (goto "goto") (statement_identifier "LAB_00157538") (; ";"))) (expression_statement "uVar1 = uVar6 + 1;" (assignment_expression "uVar1 = uVar6 + 1" (identifier "uVar1") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar7 == &DAT_001b9920) goto LAB_0015753d;" (if "if") (parenthesized_expression "(puVar7 == &DAT_001b9920)" (( "(") (binary_expression "puVar7 == &DAT_001b9920" (identifier "puVar7") (== "==") (pointer_expression "&DAT_001b9920" (& "&") (identifier "DAT_001b9920"))) () ")")) (goto_statement "goto LAB_0015753d;" (goto "goto") (statement_identifier "LAB_0015753d") (; ";"))) (expression_statement "local_a00 = 0x40;" (assignment_expression "local_a00 = 0x40" (identifier "local_a00") (= "=") (number_literal "0x40")) (; ";")) (expression_statement "puVar7 = puVar7 + 0x40;" (assignment_expression "puVar7 = puVar7 + 0x40" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 0x40" (identifier "puVar7") (+ "+") (number_literal "0x40"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 < 0x10)" (( "(") (binary_expression "uVar1 < 0x10" (identifier "uVar1") (< "<") (number_literal "0x10")) () ")")) (; ";")) (expression_statement "blake2bmac_init(local_9f8,0x40,&local_858,0x40);" (call_expression "blake2bmac_init(local_9f8,0x40,&local_858,0x40)" (identifier "blake2bmac_init") (argument_list "(local_9f8,0x40,&local_858,0x40)" (( "(") (identifier "local_9f8") (, ",") (number_literal "0x40") (, ",") (pointer_expression "&local_858" (& "&") (identifier "local_858")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818,5);" (call_expression "blake2bmac_process(local_9f8,local_818,5)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818,5)" (( "(") (identifier "local_9f8") (, ",") (identifier "local_818") (, ",") (number_literal "5") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818 + 5,4);" (call_expression "blake2bmac_process(local_9f8,local_818 + 5,4)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818 + 5,4)" (( "(") (identifier "local_9f8") (, ",") (binary_expression "local_818 + 5" (identifier "local_818") (+ "+") (number_literal "5")) (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818 + 9,3);" (call_expression "blake2bmac_process(local_9f8,local_818 + 9,3)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818 + 9,3)" (( "(") (identifier "local_9f8") (, ",") (binary_expression "local_818 + 9" (identifier "local_818") (+ "+") (number_literal "9")) (, ",") (number_literal "3") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xc,2);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xc,2)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818 + 0xc,2)" (( "(") (identifier "local_9f8") (, ",") (binary_expression "local_818 + 0xc" (identifier "local_818") (+ "+") (number_literal "0xc")) (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xe,1);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xe,1)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818 + 0xe,1)" (( "(") (identifier "local_9f8") (, ",") (binary_expression "local_818 + 0xe" (identifier "local_818") (+ "+") (number_literal "0xe")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);" (call_expression "blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe)" (identifier "blake2bmac_process") (argument_list "(local_9f8,local_818 + 0xf,uVar6 - 0xe)" (( "(") (identifier "local_9f8") (, ",") (binary_expression "local_818 + 0xf" (identifier "local_818") (+ "+") (number_literal "0xf")) (, ",") (binary_expression "uVar6 - 0xe" (identifier "uVar6") (- "-") (number_literal "0xe")) () ")"))) (; ";")) (expression_statement "blake2bmac_done(local_9f8,local_428,&local_a00);" (call_expression "blake2bmac_done(local_9f8,local_428,&local_a00)" (identifier "blake2bmac_done") (argument_list "(local_9f8,local_428,&local_a00)" (( "(") (identifier "local_9f8") (, ",") (identifier "local_428") (, ",") (pointer_expression "&local_a00" (& "&") (identifier "local_a00")) () ")"))) (; ";")) (expression_statement "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff);" (assignment_expression "iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" (identifier "iVar3") (= "=") (call_expression "compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" (identifier "compare_testvector") (argument_list "(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",\n                               uVar1 & 0xffffffff)" (( "(") (identifier "local_428") (, ",") (identifier "local_a00") (, ",") (identifier "puVar7") (, ",") (number_literal "0x40") (, ",") (string_literal ""BLAKE2B MAC multi"" (" """) (string_content "BLAKE2B MAC multi") (" """)) (, ",") (binary_expression "uVar1 & 0xffffffff" (identifier "uVar1") (& "&") (number_literal "0xffffffff")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_00157538:\n  uVar4 = 5;" (statement_identifier "LAB_00157538") (: ":") (expression_statement "uVar4 = 5;" (assignment_expression "uVar4 = 5" (identifier "uVar4") (= "=") (number_literal "5")) (; ";"))) (labeled_statement "LAB_0015753d:\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (statement_identifier "LAB_0015753d") (: ":") (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  type_1 var_11;
  long var_13;
  type_2 var_3;
  int var_8;
  long var_2;
  type_1 var_9;
  type_2 (*var_10) [64];
  long var_1;
  type_1 olen;
  type_3 st;
  type_2 key [64];
  type_2 var_12 [1000];
  type_2 out [1000];
  
  var_2 = 0;
  var_13 = *(long *)(var_1 + 0x28);
  key[8] = '\b';
  key[9] = '\t';
  key[10] = '\n';
  key[0xb] = '\v';
  key[0xc] = '\f';
  key[0xd] = '\r';
  key[0xe] = '\x0e';
  key[0xf] = '\x0f';
  key[0] = '\0';
  key[1] = '\x01';
  key[2] = '\x02';
  key[3] = '\x03';
  key[4] = '\x04';
  key[5] = '\x05';
  key[6] = '\x06';
  key[7] = '\a';
  key[0x10] = '\x10';
  key[0x11] = '\x11';
  key[0x12] = '\x12';
  key[0x13] = '\x13';
  key[0x14] = '\x14';
  key[0x15] = '\x15';
  key[0x16] = '\x16';
  key[0x17] = '\x17';
  key[0x20] = ' ';
  key[0x21] = '!';
  key[0x22] = '\"';
  key[0x23] = '#';
  key[0x24] = '$';
  key[0x25] = '%';
  key[0x26] = '&';
  key[0x27] = '\'';
  key[0x28] = '(';
  key[0x29] = ')';
  key[0x2a] = '*';
  key[0x2b] = '+';
  key[0x2c] = ',';
  key[0x2d] = '-';
  key[0x2e] = '.';
  key[0x2f] = '/';
  key[0x30] = '0';
  key[0x31] = '1';
  key[0x32] = '2';
  key[0x33] = '3';
  key[0x34] = '4';
  key[0x35] = '5';
  key[0x36] = '6';
  key[0x37] = '7';
  key[0x38] = '8';
  key[0x39] = '9';
  key[0x3a] = ':';
  key[0x3b] = ';';
  key[0x3c] = '<';
  key[0x3d] = '=';
  key[0x3e] = '>';
  key[0x3f] = '?';
  key[0x18] = '\x18';
  key[0x19] = '\x19';
  key[0x1a] = '\x1a';
  key[0x1b] = '\x1b';
  key[0x1c] = '\x1c';
  key[0x1d] = '\x1d';
  key[0x1e] = '\x1e';
  key[0x1f] = '\x1f';
  do {
    var_3 = (type_2)var_2;
    var_12[var_2] = var_3;
    var_12[var_2 + 1] = var_3 + '\x01';
    var_12[var_2 + 2] = var_3 + '\x02';
    var_12[var_2 + 3] = var_3 + '\x03';
    var_12[var_2 + 4] = var_3 + '\x04';
    var_12[var_2 + 5] = var_3 + '\x05';
    var_12[var_2 + 6] = var_3 + '\x06';
    var_12[var_2 + 7] = var_3 + '\a';
    var_2 = var_2 + 8;
  } while (var_2 != 0x100);
  olen = 0x40;
  var_10 = function_1::tests;
  var_11 = 0;
  do {
    do {
      var_9 = var_11;
      var_4(&st,olen,key,0x40);
      var_5(&st,var_12,var_9);
      var_6(&st,out,&olen);
      var_8 = var_7(out,olen,var_10,0x40,"BLAKE2B MAC single",(int)var_9);
      if (var_8 != 0) goto LAB_00157538;
      var_11 = var_9 + 1;
      var_8 = 0;
      if (var_10 == function_1::tests + 0xff) goto LAB_0015753d;
      olen = 0x40;
      var_10 = var_10 + 1;
    } while (var_11 < 0x10);
    var_4(&st,0x40,key,0x40);
    var_5(&st,var_12,5);
    var_5(&st,var_12 + 5,4);
    var_5(&st,var_12 + 9,3);
    var_5(&st,var_12 + 0xc,2);
    var_5(&st,var_12 + 0xe,1);
    var_5(&st,var_12 + 0xf,var_9 - 0xe);
    var_6(&st,out,&olen);
    var_8 = var_7(out,olen,var_10,0x40,"BLAKE2B MAC multi",(int)var_11);
  } while (var_8 == 0);
LAB_00157538:
  var_8 = 5;
LAB_0015753d:
  if (var_13 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_14();
  }
  return var_8;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (pointer_expression argument: (identifier)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (string_literal (string_content)) (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) (return_statement (identifier)))))

undefined8 MASKED(void)

{
  ulong uVar1;
  char cVar2;
  int iVar3;
  undefined8 uVar4;
  long lVar5;
  ulong uVar6;
  undefined *puVar7;
  long in_FS_OFFSET;
  undefined8 local_a00;
  undefined1 local_9f8 [416];
  undefined8 local_858;
  undefined8 local_850;
  undefined8 local_848;
  undefined8 local_840;
  undefined8 local_838;
  undefined8 local_830;
  undefined8 local_828;
  undefined8 local_820;
  char local_818 [1008];
  undefined1 local_428 [1000];
  long local_40;
  
  lVar5 = 0;
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  local_850 = 0xf0e0d0c0b0a0908;
  local_858 = 0x706050403020100;
  local_848 = 0x1716151413121110;
  local_838 = 0x2726252423222120;
  local_830 = 0x2f2e2d2c2b2a2928;
  local_828 = 0x3736353433323130;
  local_820 = 0x3f3e3d3c3b3a3938;
  local_840 = 0x1f1e1d1c1b1a1918;
  do {
    cVar2 = (char)lVar5;
    local_818[lVar5] = cVar2;
    local_818[lVar5 + 1] = cVar2 + '\x01';
    local_818[lVar5 + 2] = cVar2 + '\x02';
    local_818[lVar5 + 3] = cVar2 + '\x03';
    local_818[lVar5 + 4] = cVar2 + '\x04';
    local_818[lVar5 + 5] = cVar2 + '\x05';
    local_818[lVar5 + 6] = cVar2 + '\x06';
    local_818[lVar5 + 7] = cVar2 + '\a';
    lVar5 = lVar5 + 8;
  } while (lVar5 != 0x100);
  local_a00 = 0x40;
  puVar7 = &DAT_001b5960;
  uVar1 = 0;
  do {
    do {
      uVar6 = uVar1;
      blake2bmac_init(local_9f8,local_a00,&local_858,0x40);
      blake2bmac_process(local_9f8,local_818,uVar6);
      blake2bmac_done(local_9f8,local_428,&local_a00);
      uVar4 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC single",
                                 uVar6 & 0xffffffff);
      if ((int)uVar4 != 0) goto LAB_00157538;
      uVar1 = uVar6 + 1;
      if (puVar7 == &DAT_001b9920) goto LAB_0015753d;
      local_a00 = 0x40;
      puVar7 = puVar7 + 0x40;
    } while (uVar1 < 0x10);
    blake2bmac_init(local_9f8,0x40,&local_858,0x40);
    blake2bmac_process(local_9f8,local_818,5);
    blake2bmac_process(local_9f8,local_818 + 5,4);
    blake2bmac_process(local_9f8,local_818 + 9,3);
    blake2bmac_process(local_9f8,local_818 + 0xc,2);
    blake2bmac_process(local_9f8,local_818 + 0xe,1);
    blake2bmac_process(local_9f8,local_818 + 0xf,uVar6 - 0xe);
    blake2bmac_done(local_9f8,local_428,&local_a00);
    iVar3 = compare_testvector(local_428,local_a00,puVar7,0x40,"BLAKE2B MAC multi",
                               uVar1 & 0xffffffff);
  } while (iVar3 == 0);
LAB_00157538:
  uVar4 = 5;
LAB_0015753d:
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return uVar4;
}

