// File: /workspace/github_cpp_makefile_star2_O2/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
pushq %rbx
subq $0x28, %rsp
pushq $0x1
popq %rdi
callq 0x354c
pushq $0x10
popq %rdi
callq 0x354c
pushq $0xf
popq %rdi
callq 0x354c
pushq $0x4d
popq %rdi
callq 0x354c
pushq $0x20
popq %rdi
callq 0x354c
movl $0x100, %edi            # imm = 0x100
callq 0x354c
movl $0x898, %edi            # imm = 0x898
callq 0x354c
movl $0x800, %edi            # imm = 0x800
callq 0x354c
movaps 0x17dc(%rip), %xmm0     # 0x58b0
leaq -0x20(%rbp), %rbx
movaps %xmm0, (%rbx)
movq %rbx, %rdi
callq 0x4538
movdqa (%rbx), %xmm0
pcmpeqb 0x17d1(%rip), %xmm0     # 0x58c0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x41a5
movaps 0x17fb(%rip), %xmm0     # 0x5900
movaps %xmm0, (%rbx)
movq %rbx, %rdi
callq 0x4538
movdqa (%rbx), %xmm0
pcmpeqb 0x17b4(%rip), %xmm0     # 0x58d0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x41c4
pcmpeqd %xmm0, %xmm0
movdqa %xmm0, (%rbx)
pxor %xmm0, %xmm0
movdqa %xmm0, -0x30(%rbp)
movq %rbx, %rdi
callq 0x4538
movdqa (%rbx), %xmm0
pcmpeqb -0x30(%rbp), %xmm0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x41e3
movaps 0x17ad(%rip), %xmm0     # 0x5910
movaps %xmm0, (%rbx)
movq %rbx, %rdi
callq 0x4538
movdqa (%rbx), %xmm0
pcmpeqb 0x1766(%rip), %xmm0     # 0x58e0
pmovmskb %xmm0, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x4202
callq 0x3694
callq 0x3b8a
callq 0x3cd8
callq 0x3e92
callq 0x385e
addq $0x28, %rsp
popq %rbx
popq %rbp
retq
leaq 0x1d6e(%rip), %rdi      # 0x5f1a
leaq 0x17c7(%rip), %rsi      # 0x597a
leaq 0x1d80(%rip), %rcx      # 0x5f3a
movl $0x115, %edx            # imm = 0x115
callq 0x10a0
leaq 0x1d4f(%rip), %rdi      # 0x5f1a
leaq 0x17a8(%rip), %rsi      # 0x597a
leaq 0x1d61(%rip), %rcx      # 0x5f3a
movl $0x11d, %edx            # imm = 0x11D
callq 0x10a0
leaq 0x1d30(%rip), %rdi      # 0x5f1a
leaq 0x1789(%rip), %rsi      # 0x597a
leaq 0x1d42(%rip), %rcx      # 0x5f3a
movl $0x124, %edx            # imm = 0x124
callq 0x10a0
leaq 0x1d11(%rip), %rdi      # 0x5f1a
leaq 0x176a(%rip), %rsi      # 0x597a
leaq 0x1d23(%rip), %rcx      # 0x5f3a
movl $0x12b, %edx            # imm = 0x12B
callq 0x10a0
nop