// File: /workspace/github_cpp_makefile_star2_O3/DiplIngFrankGerlach[P]MST/UnitTest.cpp
// Function: unitTestSuite()
void unitTestSuite()
{
   testProc(1); 
   testProc(16); 
   testProc(15); 
   testProc(77); 
   testProc(32);
   testProc(256);
   testProc(2200);
   testProc(2048);
   //testProc(1000000);

   {
	   uint8_t ctr[]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
	   uint8_t desiredResult[]={2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
	   MST_Endpoint::incrementMC(ctr);
	   assert(memcmp(ctr,desiredResult,16)==0);

   }
   {   
	   uint8_t ctr[]={255,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
	   uint8_t desiredResult[]={0,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
	   MST_Endpoint::incrementMC(ctr);

	   assert(memcmp(ctr,desiredResult,16)==0);
   }
   {   
	   uint8_t ctr[]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255};
	   uint8_t desiredResult[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
	   MST_Endpoint::incrementMC(ctr);

	   assert(memcmp(ctr,desiredResult,16)==0);
   }
   {   
	   uint8_t ctr[]={255,255,255,255,255,255,255,255,255,255,255,255,255,255,254,255};
	   uint8_t desiredResult[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255};
	   MST_Endpoint::incrementMC(ctr);

	   assert(memcmp(ctr,desiredResult,16)==0);
   }
   encryptedCommunicationExample();
   encryptedCommunicationFailTest();

   replayAttackFailTest();
   duplicateObfuscationTest();
   
   encryptedCommunicationExampleComplex();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl $0x1, %edi
callq 0x36a4
movl $0x10, %edi
callq 0x36a4
movl $0xf, %edi
callq 0x36a4
movl $0x4d, %edi
callq 0x36a4
movl $0x20, %edi
callq 0x36a4
movl $0x100, %edi            # imm = 0x100
callq 0x36a4
movl $0x898, %edi            # imm = 0x898
callq 0x36a4
movl $0x800, %edi            # imm = 0x800
callq 0x36a4
movaps 0x13e3(%rip), %xmm0     # 0x58b0
movaps %xmm0, -0x10(%rbp)
xorl %eax, %eax
incb -0x10(%rbp,%rax)
sete %cl
cmpq $0xe, %rax
ja 0x44e7
incq %rax
testb %cl, %cl
jne 0x44d3
movdqa -0x10(%rbp), %xmm0
pcmpeqb 0x13cc(%rip), %xmm0     # 0x58c0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x45d8
movaps 0x13f6(%rip), %xmm0     # 0x5900
movaps %xmm0, -0x10(%rbp)
xorl %eax, %eax
incb -0x10(%rbp,%rax)
sete %cl
cmpq $0xe, %rax
ja 0x4524
incq %rax
testb %cl, %cl
jne 0x4510
movdqa -0x10(%rbp), %xmm0
pcmpeqb 0x139f(%rip), %xmm0     # 0x58d0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x45f7
pcmpeqd %xmm0, %xmm0
movdqa %xmm0, -0x10(%rbp)
pxor %xmm0, %xmm0
movdqa %xmm0, -0x20(%rbp)
xorl %eax, %eax
incb -0x10(%rbp,%rax)
sete %cl
cmpq $0xe, %rax
ja 0x4568
incq %rax
testb %cl, %cl
jne 0x4554
movdqa -0x10(%rbp), %xmm0
pcmpeqb -0x20(%rbp), %xmm0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x4616
movaps 0x1388(%rip), %xmm0     # 0x5910
movaps %xmm0, -0x10(%rbp)
xorl %eax, %eax
incb -0x10(%rbp,%rax)
sete %cl
cmpq $0xe, %rax
ja 0x45a2
incq %rax
testb %cl, %cl
jne 0x458e
movdqa -0x10(%rbp), %xmm0
pcmpeqb 0x1331(%rip), %xmm0     # 0x58e0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x4635
callq 0x385c
callq 0x3ecd
callq 0x4043
callq 0x4225
addq $0x20, %rsp
popq %rbp
jmp 0x3b12
leaq 0x193b(%rip), %rdi      # 0x5f1a
leaq 0x1394(%rip), %rsi      # 0x597a
leaq 0x194d(%rip), %rcx      # 0x5f3a
movl $0x115, %edx            # imm = 0x115
callq 0x1090
leaq 0x191c(%rip), %rdi      # 0x5f1a
leaq 0x1375(%rip), %rsi      # 0x597a
leaq 0x192e(%rip), %rcx      # 0x5f3a
movl $0x11d, %edx            # imm = 0x11D
callq 0x1090
leaq 0x18fd(%rip), %rdi      # 0x5f1a
leaq 0x1356(%rip), %rsi      # 0x597a
leaq 0x190f(%rip), %rcx      # 0x5f3a
movl $0x124, %edx            # imm = 0x124
callq 0x1090
leaq 0x18de(%rip), %rdi      # 0x5f1a
leaq 0x1337(%rip), %rsi      # 0x597a
leaq 0x18f0(%rip), %rcx      # 0x5f3a
movl $0x12b, %edx            # imm = 0x12B
callq 0x1090