// KASAN: stack-out-of-bounds Read in xfrm_state_find
// https://syzkaller.appspot.com/bug?id=263641babb7f77b96d3fd13670303e216edf87a3
// status:open
// 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, 2, 0);
  if (res != -1)
    r[0] = res;
  *(uint64_t*)0x20000200 = htobe64(0);
  *(uint64_t*)0x20000208 = htobe64(1);
  *(uint32_t*)0x20000210 = htobe32(0x7f000001);
  *(uint16_t*)0x20000220 = htobe16(0);
  *(uint16_t*)0x20000222 = htobe16(0);
  *(uint16_t*)0x20000224 = htobe16(0);
  *(uint16_t*)0x20000226 = htobe16(0);
  *(uint16_t*)0x20000228 = 2;
  *(uint8_t*)0x2000022a = 0;
  *(uint8_t*)0x2000022b = 0;
  *(uint8_t*)0x2000022c = 0;
  *(uint32_t*)0x20000230 = 0;
  *(uint32_t*)0x20000234 = 0;
  *(uint64_t*)0x20000238 = 0;
  *(uint64_t*)0x20000240 = 0;
  *(uint64_t*)0x20000248 = 0;
  *(uint64_t*)0x20000250 = 0;
  *(uint64_t*)0x20000258 = 0;
  *(uint64_t*)0x20000260 = 0;
  *(uint64_t*)0x20000268 = 0;
  *(uint64_t*)0x20000270 = 0xb46;
  *(uint64_t*)0x20000278 = 0;
  *(uint64_t*)0x20000280 = 0;
  *(uint64_t*)0x20000288 = 0;
  *(uint64_t*)0x20000290 = 0;
  *(uint32_t*)0x20000298 = 0;
  *(uint32_t*)0x2000029c = 0;
  *(uint8_t*)0x200002a0 = 1;
  *(uint8_t*)0x200002a1 = 0;
  *(uint8_t*)0x200002a2 = 0;
  *(uint8_t*)0x200002a3 = 0;
  *(uint8_t*)0x200002a8 = 0xfe;
  *(uint8_t*)0x200002a9 = 0x80;
  *(uint8_t*)0x200002aa = 0;
  *(uint8_t*)0x200002ab = 0;
  *(uint8_t*)0x200002ac = 0;
  *(uint8_t*)0x200002ad = 0;
  *(uint8_t*)0x200002ae = 0;
  *(uint8_t*)0x200002af = 0;
  *(uint8_t*)0x200002b0 = 0;
  *(uint8_t*)0x200002b1 = 0;
  *(uint8_t*)0x200002b2 = 0;
  *(uint8_t*)0x200002b3 = 0;
  *(uint8_t*)0x200002b4 = 0;
  *(uint8_t*)0x200002b5 = 0;
  *(uint8_t*)0x200002b6 = 0;
  *(uint8_t*)0x200002b7 = 0xaa;
  *(uint32_t*)0x200002b8 = htobe32(0x8000000);
  *(uint8_t*)0x200002bc = -1;
  *(uint16_t*)0x200002c0 = 0xa;
  *(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 = 0;
  *(uint8_t*)0x200002d0 = 0;
  *(uint8_t*)0x200002d1 = 0;
  *(uint8_t*)0x200002d2 = 0;
  *(uint8_t*)0x200002d3 = 0;
  *(uint32_t*)0x200002d4 = 0;
  *(uint8_t*)0x200002d8 = 3;
  *(uint8_t*)0x200002d9 = 0;
  *(uint8_t*)0x200002da = 0xfe;
  *(uint32_t*)0x200002dc = 0;
  *(uint32_t*)0x200002e0 = 0;
  *(uint32_t*)0x200002e4 = 0;
  syscall(__NR_setsockopt, r[0], 0x29, 0x23, 0x20000200, 0xe8);
  *(uint64_t*)0x20000a80 = 0x20000100;
  *(uint16_t*)0x20000100 = 2;
  *(uint16_t*)0x20000102 = htobe16(0xc67a);
  *(uint32_t*)0x20000104 = htobe32(0);
  *(uint32_t*)0x20000a88 = 0x80;
  *(uint64_t*)0x20000a90 = 0;
  *(uint64_t*)0x20000a98 = 0;
  *(uint64_t*)0x20000aa0 = 0;
  *(uint64_t*)0x20000aa8 = 0;
  *(uint32_t*)0x20000ab0 = 0;
  *(uint32_t*)0x20000ab8 = 0;
  syscall(__NR_sendmmsg, r[0], 0x20000a80, 1, 0);
  return 0;
}
