not crypto
**  
reverse  
picoctf

there's crypto in here but the challenge is not crypto... 🤔
The code obtained from Ghidra for this binary:

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

bool FUN_00101070(void)

{
undefined auVar1 [16];
undefined auVar2 [16];
undefined auVar3 [16];
undefined auVar4 [16];
undefined auVar5 [16];
undefined auVar6 [16];
undefined auVar7 [16];
byte bVar8;
byte bVar9;
byte bVar10;
byte bVar11;
byte bVar12;
byte bVar13;
byte bVar14;
byte bVar15;
byte bVar16;
int iVar17;
undefined4 uVar18;
undefined4 uVar19;
undefined4 *puVar20;
byte bVar21;
byte bVar22;
byte bVar23;
byte bVar24;
long lVar25;
byte bVar26;
byte bVar27;
byte bVar28;
ulong uVar29;
byte bVar30;
uint uVar31;
ulong uVar32;
byte bVar33;
byte bVar34;
byte bVar35;
byte bVar36;
byte bVar37;
byte bVar38;
byte bVar39;
byte bVar40;
byte *pbVar41;
byte *pbVar42;
long in_FS_OFFSET;
byte local_1fe;
byte local_1fd;
undefined4 local_1fc;
undefined4 local_1f8;
byte local_1f4;
byte local_1f3;
byte local_1f2;
byte local_1f1;
byte local_1f0;
byte local_1ef;
byte local_1ee;
byte local_1ed;
byte local_1ec;
undefined4 *local_1e8;
undefined local_198 [64];
undefined4 local_158;
undefined4 uStack_154;
undefined4 uStack_150;
undefined4 uStack_14c;
byte local_148 [144];
byte local_b8;
byte local_b7;
byte local_b6;
byte local_b5;
byte local_b4;
byte local_b3;
byte local_b2;
byte local_b1;
byte local_b0;
byte local_af;
byte local_ae;
byte local_ad;
byte local_ac;
byte local_ab;
byte local_aa;
byte local_a9;
byte local_a8 [16];
undefined local_98 [16];
undefined4 local_88;
undefined4 uStack_84;
undefined4 uStack_80;
undefined4 uStack_7c;
undefined4 local_78;
undefined4 uStack_74;
undefined4 uStack_70;
undefined4 uStack_6c;
undefined4 local_68;
undefined4 uStack_64;
undefined4 uStack_60;
undefined4 uStack_5c;
undefined4 local_58;
undefined4 uStack_54;
undefined4 uStack_50;
undefined4 uStack_4c;
undefined4 local_48 [2];
long local_40;
local_40 = *(long *)(in_FS_OFFSET + 0x28);
puts("I heard you wanted to bargain for a flag... whatcha got?");
bVar35 = 0x98;
bVar27 = 0x32;
bVar21 = 0x6c;
bVar23 = 0x1c;
local_158 = 0xff8c6cf7;
uStack_154 = 0x8e2f875c;
uStack_150 = 0xd49e439e;
uStack_14c = 0x1c6c3298;
uVar32 = 4;
puVar20 = &local_158;
do {
if ((uVar32 & 3) == 0) {
uVar29 = (ulong)bVar27;
bVar27 = (&DAT_001020a0)[bVar21];
bVar21 = (&DAT_001020a0)[bVar23];
bVar23 = (&DAT_001020a0)[bVar35];
bVar35 = (&DAT_001020a0)[uVar29] ^ (&DAT_00102080)[uVar32 >> 2];
}
bVar35 = bVar35 ^ *(byte *)puVar20;
uVar31 = (int)uVar32 + 1;
uVar32 = (ulong)uVar31;
bVar27 = bVar27 ^ *(byte *)((long)puVar20 + 1);
bVar21 = bVar21 ^ *(byte *)((long)puVar20 + 2);
bVar23 = bVar23 ^ *(byte *)((long)puVar20 + 3);
*(byte *)(puVar20 + 4) = bVar35;
*(byte *)((long)puVar20 + 0x11) = bVar27;
*(byte *)((long)puVar20 + 0x12) = bVar21;
*(byte *)((long)puVar20 + 0x13) = bVar23;
puVar20 = puVar20 + 1;
} while (uVar31 != 0x2c);
local_a8[0] = 0xbe;
local_a8[1] = 0xd9;
local_a8[2] = 0xe7;
local_a8[3] = 0xce;
local_a8[4] = 0x25;
local_a8[5] = 0x52;
local_a8[6] = 0xa8;
local_a8[7] = 0x6d;
local_a8[8] = 0x4d;
local_a8[9] = 0xcf;
local_a8[10] = 0xd7;
local_a8[0xb] = 0xa2;
local_a8[0xc] = 0xae;
local_a8[0xd] = 0x61;
local_a8[0xe] = 3;
local_a8[0xf] = 0x2f;
fread(local_198,1,0x40,_stdin);
local_88 = 0x28dcea23;
uStack_84 = 0xb2008495;
uStack_80 = 0x7aca5778;
uStack_7c = 0xc0419c59;
local_78 = 0x31948f68;
uStack_74 = 0xde862756;
uStack_70 = 0xd75abc8b;
uStack_6c = 0x71d19611;
local_68 = 0x3bea1fb2;
uStack_64 = 0xe76b3672;
uStack_60 = 0xa1709dd5;
uStack_5c = 0xf7ed23ed;
local_58 = 0x8fc973b8;
uStack_54 = 0x8bb70cc0;
uStack_50 = 0x2d560843;
uStack_4c = 0xaeea8540;
iVar17 = 0x10;
local_1e8 = &local_88;
do {
if (iVar17 == 0x10) {
auVar1[1] = local_a8[1];
auVar1[0] = local_a8[0];
auVar1[2] = local_a8[2];
auVar1[3] = local_a8[3];
auVar1[4] = local_a8[4];
auVar1[5] = local_a8[5];
auVar1[6] = local_a8[6];
auVar1[7] = local_a8[7];
auVar1[8] = local_a8[8];
auVar1[9] = local_a8[9];
auVar1[10] = local_a8[10];
auVar1[0xb] = local_a8[0xb];
auVar1[0xc] = local_a8[0xc];
auVar1[0xd] = local_a8[0xd];
auVar1[0xe] = local_a8[0xe];
auVar1[0xf] = local_a8[0xf];
uVar18 = vpextrb_avx(auVar1,4);
local_1ee = (&DAT_001020a0)[(byte)uStack_150 ^ local_a8[8]];
uVar19 = vpextrb_avx(auVar1,0xc);
local_1ef = (&DAT_001020a0)[(byte)((byte)uVar19 ^ (byte)uStack_14c)];
uVar19 = vpextrb_avx(auVar1,1);
local_1f4 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ local_158._1_1_)];
uVar19 = vpextrb_avx(auVar1,5);
local_1fd = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_154._1_1_)];
uVar19 = vpextrb_avx(auVar1,9);
local_1fe = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_150._1_1_)];
uVar19 = vpextrb_avx(auVar1,0xd);
local_1f0 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_14c._1_1_)];
uVar19 = vpextrb_avx(auVar1,2);
bVar27 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ local_158._2_1_)];
uVar19 = vpextrb_avx(auVar1,6);
local_1ec = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_154._2_1_)];
uVar19 = vpextrb_avx(auVar1,10);
local_1f1 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_150._2_1_)];
uVar19 = vpextrb_avx(auVar1,0xe);
local_1f2 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_14c._2_1_)];
uVar19 = vpextrb_avx(auVar1,3);
local_1ed = (&DAT_001020a0)[(byte)((byte)uVar19 ^ local_158._3_1_)];
uVar19 = vpextrb_avx(auVar1,7);
bVar21 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_154._3_1_)];
uVar19 = vpextrb_avx(auVar1,0xb);
bVar23 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_150._3_1_)];
uVar19 = vpextrb_avx(auVar1,0xf);
local_1f3 = (&DAT_001020a0)[(byte)((byte)uVar19 ^ uStack_14c._3_1_)];
pbVar41 = local_148;
local_1f8._0_1_ = (&DAT_001020a0)[(byte)local_158 ^ local_a8[0]];
local_1fc._0_1_ = (&DAT_001020a0)[(byte)((byte)uVar18 ^ (byte)uStack_154)];
do {
bVar22 = local_1fd ^ (byte)local_1f8;
bVar26 = local_1f3 ^ local_1f1;
bVar37 = bVar22 ^ bVar26;
bVar40 = local_1f3 ^ (byte)local_1f8;
bVar30 = local_1fe ^ (byte)local_1fc;
bVar33 = local_1ed ^ local_1f2;
bVar34 = bVar30 ^ bVar33;
bVar38 = local_1ed ^ (byte)local_1fc;
bVar10 = bVar21 ^ bVar27;
bVar8 = local_1f0 ^ local_1ee;
bVar11 = local_1ee ^ bVar21;
bVar36 = bVar8 ^ bVar10;
bVar12 = local_1ec ^ bVar23;
bVar35 = local_1ec ^ local_1f4;
bVar9 = local_1f4 ^ local_1ef;
bVar13 = local_1ef ^ bVar23;
bVar14 = bVar9 ^ bVar12;
bVar39 = pbVar41[7] ^ bVar34 ^ local_1ed;
bVar15 = bVar27 ^ bVar36 ^ pbVar41[10];
bVar28 = pbVar41[0xd] ^ bVar14 ^ local_1f4;
bVar24 = pbVar41[0xe] ^ bVar14 ^ local_1ec;
bVar16 = bVar23 ^ pbVar41[0xf] ^ bVar14;
local_1f8._0_1_ =
(&DAT_001020a0)
[(byte)((byte)local_1f8 ^ *pbVar41 ^ bVar37 ^
((char)bVar22 >> 7) * -0x1b ^ bVar22 * '\x02')];
bVar22 = pbVar41[4] ^ bVar34 ^ (byte)local_1fc;
local_1ee = (&DAT_001020a0)
[(byte)(pbVar41[8] ^ bVar36 ^ local_1ee ^
((char)bVar8 >> 7) * -0x1b ^ bVar8 * '\x02')];
local_1ef = (&DAT_001020a0)
[(byte)(bVar14 ^ pbVar41[0xc] ^ local_1ef ^
bVar9 * '\x02' ^ ((char)bVar9 >> 7) * -0x1b)];
local_1f4 = (&DAT_001020a0)
[(byte)(pbVar41[1] ^ bVar37 ^ local_1fd ^
((char)(local_1f1 ^ local_1fd) >> 7) * -0x1b ^
(local_1f1 ^ local_1fd) * '\x02')];
local_1fd = (&DAT_001020a0)
[(byte)(pbVar41[5] ^ bVar34 ^ local_1fe ^
(local_1f2 ^ local_1fe) * '\x02' ^
((char)(local_1f2 ^ local_1fe) >> 7) * -0x1b)];
local_1fe = (&DAT_001020a0)
[(byte)(local_1f0 ^ bVar36 ^ pbVar41[9] ^
(local_1f0 ^ bVar27) * '\x02' ^ ((char)(local_1f0 ^ bVar27) >> 7) * -0x1b
)];
local_1f0 = (&DAT_001020a0)
[((uint)(bVar35 >> 7) * 0x1b ^ (uint)bVar35 + (uint)bVar35 ^ (uint)bVar28) &
0xff];
pbVar42 = pbVar41 + 0x10;
bVar27 = (&DAT_001020a0)
[(byte)(pbVar41[2] ^ bVar37 ^ local_1f1 ^
((char)bVar26 >> 7) * -0x1b ^ bVar26 * '\x02')];
local_1ec = (&DAT_001020a0)
[(byte)(local_1f2 ^ pbVar41[6] ^ bVar34 ^
bVar33 * '\x02' ^ ((char)bVar33 >> 7) * -0x1b)];
local_1f1 = (&DAT_001020a0)
[((uint)bVar10 * 2 ^ (uint)(bVar10 >> 7) * 0x1b ^ (uint)bVar15) & 0xff];
local_1f2 = (&DAT_001020a0)
[((uint)bVar12 * 2 ^ (uint)(bVar12 >> 7) * 0x1b ^ (uint)bVar24) & 0xff];
bVar23 = (&DAT_001020a0)
[((uint)(bVar11 >> 7) * 0x1b ^ (uint)bVar11 * 2 ^
(uint)(byte)(bVar21 ^ bVar36 ^ pbVar41[0xb])) & 0xff];
local_1ed = (&DAT_001020a0)
[(byte)(pbVar41[3] ^ bVar37 ^ local_1f3 ^
bVar40 * '\x02' ^ ((char)bVar40 >> 7) * -0x1b)];
bVar21 = (&DAT_001020a0)[(byte)(bVar39 ^ ((char)bVar38 >> 7) * -0x1b ^ bVar38 * '\x02')];
local_1f3 = (&DAT_001020a0)
[((uint)(bVar13 >> 7) * 0x1b ^ (uint)bVar13 * 2 ^ (uint)bVar16) & 0xff];
pbVar41 = pbVar42;
local_1fc._0_1_ =
(&DAT_001020a0)[(byte)(bVar22 ^ ((char)bVar30 >> 7) * -0x1b ^ bVar30 * '\x02')];
} while (&local_b8 != pbVar42);
local_1f8 = CONCAT31(local_1f8._1_3_,(byte)local_1f8 ^ local_b8);
auVar1 = vmovd_avx((uint)(bVar27 ^ local_ae));
local_1fc = CONCAT31(local_1fc._1_3_,local_1f2 ^ local_b2);
auVar2 = vmovd_avx((uint)(local_1ec ^ local_aa));
auVar3 = vmovd_avx((uint)(local_1f1 ^ local_b6));
auVar7 = vpinsrb_avx(auVar1,(uint)(local_ad ^ bVar21),1);
auVar1 = vmovd_avx((uint)((&DAT_001020a0)
[(byte)(bVar22 ^ ((char)bVar30 >> 7) * -0x1b ^ bVar30 * '\x02')] ^
local_b4));
lVar25 = 0xf;
auVar4 = vmovd_avx((uint)(local_1ee ^ local_b0));
auVar5 = vmovd_avx(local_1f8);
auVar6 = vmovd_avx(local_1fc);
auVar3 = vpinsrb_avx(auVar3,(uint)(local_1f3 ^ local_b5),1);
auVar5 = vpinsrb_avx(auVar5,(uint)(local_1fd ^ local_b7),1);
auVar4 = vpinsrb_avx(auVar4,(uint)(local_1f0 ^ local_af),1);
auVar5 = vpunpcklwd_avx(auVar5,auVar3);
auVar1 = vpinsrb_avx(auVar1,(uint)(local_1fe ^ local_b3),1);
auVar3 = vpinsrb_avx(auVar6,(uint)(local_1ed ^ local_b1),1);
auVar4 = vpunpcklwd_avx(auVar4,auVar7);
auVar3 = vpunpcklwd_avx(auVar1,auVar3);
auVar1 = vmovd_avx((uint)(local_1ef ^ local_ac));
auVar3 = vpunpckldq_avx(auVar5,auVar3);
auVar1 = vpinsrb_avx(auVar1,(uint)(local_1f4 ^ local_ab),1);
auVar2 = vpinsrb_avx(auVar2,(uint)(bVar23 ^ local_a9),1);
auVar1 = vpunpcklwd_avx(auVar1,auVar2);
auVar1 = vpunpckldq_avx(auVar4,auVar1);
local_98 = vpunpcklqdq_avx(auVar3,auVar1);
bVar27 = local_a8[0xf];
if (local_a8[0xf] == 0xff) {
local_a8[0xf] = 0;
lVar25 = 0xe;
bVar27 = local_a8[0xe];
if (local_a8[0xe] == 0xff) {
local_a8[0xe] = 0;
lVar25 = 0xd;
bVar27 = local_a8[0xd];
if (local_a8[0xd] == 0xff) {
local_a8[0xd] = 0;
lVar25 = 0xc;
bVar27 = local_a8[0xc];
if (local_a8[0xc] == 0xff) {
local_a8[0xc] = 0;
lVar25 = 0xb;
bVar27 = local_a8[0xb];
if (local_a8[0xb] == 0xff) {
local_a8[0xb] = 0;
lVar25 = 10;
bVar27 = local_a8[10];
if (local_a8[10] == 0xff) {
local_a8[10] = 0;
lVar25 = 9;
bVar27 = local_a8[9];
if (local_a8[9] == 0xff) {
local_a8[9] = 0;
lVar25 = 8;
bVar27 = local_a8[8];
if (local_a8[8] == 0xff) {
local_a8[8] = 0;
lVar25 = 7;
bVar27 = local_a8[7];
if (local_a8[7] == 0xff) {
local_a8[7] = 0;
lVar25 = 6;
bVar27 = local_a8[6];
if (local_a8[6] == 0xff) {
local_a8[6] = 0;
lVar25 = 5;
bVar27 = local_a8[5];
if (local_a8[5] == 0xff) {
local_a8[5] = 0;
lVar25 = 4;
bVar27 = local_a8[4];
if (local_a8[4] == 0xff) {
local_a8[4] = 0;
lVar25 = 3;
bVar27 = local_a8[3];
if (local_a8[3] == 0xff) {
local_a8[3] = 0;
lVar25 = 2;
bVar27 = local_a8[2];
if (local_a8[2] == 0xff) {
local_a8[2] = 0;
lVar25 = 1;
bVar27 = local_a8[1];
if (local_a8[1] == 0xff) {
local_a8[1] = 0;
lVar25 = 0;
bVar27 = local_a8[0];
if (local_a8[0] == 0xff) {
local_a8[0] = 0;
iVar17 = 0;
goto LAB_00101385;
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
local_a8[lVar25] = bVar27 + 1;
iVar17 = 0;
}
LAB_00101385:
lVar25 = (long)iVar17;
iVar17 = iVar17 + 1;
*(byte *)local_1e8 = *(byte *)local_1e8 ^ local_98[lVar25];
local_1e8 = (undefined4 *)((long)local_1e8 + 1);
if (local_48 == local_1e8) {
iVar17 = memcmp(&local_88,local_198,0x40);
if (iVar17 != 0) {
puts("Nope, come back later");
}
else {
puts("Yep, that\'s it!");
}
if (local_40 == *(long *)(in_FS_OFFSET + 0x28)) {
return iVar17 != 0;
}
/* WARNING: Subroutine does not return */
__stack_chk_fail();
}
} while( true );
}



The binary really seems to do lots of things to build and check for the flag.
My goal was to skip all of that and get to the point when the flag is already saved in memory. 
The shortcurt I found was to put a breakpoint at memcmp function.
pwndbg> info functions
All defined functions:

Non-debugging symbols:
0x0000000000001030 puts@plt
0x0000000000001040 fread@plt
0x0000000000001050 __stack_chk_fail@plt
0x0000000000001060 memcmp@plt
pwndbg>


Breakpoint 1, 0x0000555555555060 in memcmp@plt ()
LEGEND: STACK | HEAP | CODE | DATA | RWX | RODATA
─────────────────────────────[ REGISTERS / show-flags off / show-compact-regs off ]──────────────────────────────
*RAX 0x10
*RBX 0x7fffffffddd0 —▸ 0x7ffff7fc1000 ◂— jg 0x7ffff7fc1047
*RCX 0xa4
*RDX 0x40
*RDI 0x7fffffffdd90 ◂— 'picoCTF{c0mp1l3r_0pt1m1z4t10n_15_pur3_w1z4rdry_but_n0_pr0bl3m?}\n'
*RSI 0x7fffffffdc80 ◂— 0x730a616473646673 ('sfdsda\ns')
*R8 0xba
*R9 0x96
*R10 0xf0
*R11 0x6a
*R12 0x97
*R13 0x73
*R14 0xf9
*R15 0x3a
*RBP 0xa1
*RSP 0x7fffffffdc08 —▸ 0x5555555553be ◂— mov r12d, eax
*RIP 0x555555555060 (memcmp@plt) ◂— jmp qword ptr [rip + 0x2fca]




picoCTF{c0mp1l3r_0pt1m1z4t10n_15_pur3_w1z4rdry_but_n0_pr0bl3m?}