// KASAN: stack-out-of-bounds Read in xfrm_selector_match
// https://syzkaller.appspot.com/bug?id=1ab305cca8d64e81becc4d53b88ae15c2c7bf49a
// status:invalid
// autogenerated by syzkaller (https://github.com/google/syzkaller)

#define _GNU_SOURCE

#include <endian.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/syscall.h>
#include <sys/types.h>
#include <unistd.h>

uint64_t r[1] = {0xffffffffffffffff};

int main(void)
{
  syscall(__NR_mmap, 0x20000000, 0x1000000, 3, 0x32, -1, 0);
  long res = 0;
  res = syscall(__NR_socket, 0xa, 3, 0x2f);
  if (res != -1)
    r[0] = res;
  *(uint8_t*)0x200002c0 = 0xfe;
  *(uint8_t*)0x200002c1 = 0x80;
  *(uint8_t*)0x200002c2 = 0;
  *(uint8_t*)0x200002c3 = 0;
  *(uint8_t*)0x200002c4 = 0;
  *(uint8_t*)0x200002c5 = 0;
  *(uint8_t*)0x200002c6 = 0;
  *(uint8_t*)0x200002c7 = 0;
  *(uint8_t*)0x200002c8 = 0;
  *(uint8_t*)0x200002c9 = 0;
  *(uint8_t*)0x200002ca = 0;
  *(uint8_t*)0x200002cb = 0;
  *(uint8_t*)0x200002cc = 0;
  *(uint8_t*)0x200002cd = 0;
  *(uint8_t*)0x200002ce = 0;
  *(uint8_t*)0x200002cf = 0xbb;
  *(uint64_t*)0x200002d0 = htobe64(0);
  *(uint64_t*)0x200002d8 = htobe64(1);
  *(uint16_t*)0x200002e0 = htobe16(0);
  *(uint16_t*)0x200002e2 = htobe16(0);
  *(uint16_t*)0x200002e4 = htobe16(0);
  *(uint16_t*)0x200002e6 = htobe16(0);
  *(uint16_t*)0x200002e8 = 0xa;
  *(uint8_t*)0x200002ea = 0;
  *(uint8_t*)0x200002eb = 0xfe;
  *(uint8_t*)0x200002ec = 0;
  *(uint32_t*)0x200002f0 = 0;
  *(uint32_t*)0x200002f4 = 0;
  *(uint64_t*)0x200002f8 = 0;
  *(uint64_t*)0x20000300 = 0;
  *(uint64_t*)0x20000308 = 0;
  *(uint64_t*)0x20000310 = 0;
  *(uint64_t*)0x20000318 = 0;
  *(uint64_t*)0x20000320 = 0;
  *(uint64_t*)0x20000328 = 0;
  *(uint64_t*)0x20000330 = 0;
  *(uint64_t*)0x20000338 = 0;
  *(uint64_t*)0x20000340 = 0;
  *(uint64_t*)0x20000348 = 0;
  *(uint64_t*)0x20000350 = 0;
  *(uint32_t*)0x20000358 = 0;
  *(uint32_t*)0x2000035c = 0;
  *(uint8_t*)0x20000360 = 1;
  *(uint8_t*)0x20000361 = 0;
  *(uint8_t*)0x20000362 = 0;
  *(uint8_t*)0x20000363 = 0;
  *(uint8_t*)0x20000368 = -1;
  *(uint8_t*)0x20000369 = 2;
  *(uint8_t*)0x2000036a = 0;
  *(uint8_t*)0x2000036b = 0;
  *(uint8_t*)0x2000036c = 0;
  *(uint8_t*)0x2000036d = 0;
  *(uint8_t*)0x2000036e = 0;
  *(uint8_t*)0x2000036f = 0;
  *(uint8_t*)0x20000370 = 0;
  *(uint8_t*)0x20000371 = 0;
  *(uint8_t*)0x20000372 = 0;
  *(uint8_t*)0x20000373 = 0;
  *(uint8_t*)0x20000374 = 0;
  *(uint8_t*)0x20000375 = 0;
  *(uint8_t*)0x20000376 = 0;
  *(uint8_t*)0x20000377 = 1;
  *(uint32_t*)0x20000378 = htobe32(0);
  *(uint8_t*)0x2000037c = 0x32;
  *(uint16_t*)0x20000380 = 0;
  *(uint64_t*)0x20000384 = htobe64(0);
  *(uint64_t*)0x2000038c = htobe64(1);
  *(uint32_t*)0x20000394 = 0;
  *(uint8_t*)0x20000398 = 0;
  *(uint8_t*)0x20000399 = 0;
  *(uint8_t*)0x2000039a = 0;
  *(uint32_t*)0x2000039c = 0;
  *(uint32_t*)0x200003a0 = 0;
  *(uint32_t*)0x200003a4 = 0;
  syscall(__NR_setsockopt, r[0], 0x29, 0x23, 0x200002c0, 0xe8);
  *(uint16_t*)0x200000c0 = 0xa;
  *(uint16_t*)0x200000c2 = htobe16(0);
  *(uint32_t*)0x200000c4 = 0;
  *(uint8_t*)0x200000c8 = 0;
  *(uint8_t*)0x200000c9 = 0;
  *(uint8_t*)0x200000ca = 0;
  *(uint8_t*)0x200000cb = 0;
  *(uint8_t*)0x200000cc = 0;
  *(uint8_t*)0x200000cd = 0;
  *(uint8_t*)0x200000ce = 0;
  *(uint8_t*)0x200000cf = 0;
  *(uint8_t*)0x200000d0 = 0;
  *(uint8_t*)0x200000d1 = 0;
  *(uint8_t*)0x200000d2 = 0;
  *(uint8_t*)0x200000d3 = 0;
  *(uint8_t*)0x200000d4 = 0;
  *(uint8_t*)0x200000d5 = 0;
  *(uint8_t*)0x200000d6 = 0;
  *(uint8_t*)0x200000d7 = 0;
  *(uint32_t*)0x200000d8 = 0;
  syscall(__NR_connect, r[0], 0x200000c0, 0x1c);
  syscall(__NR_write, r[0], 0x20000400, 0);
  return 0;
}
