// File: mrlordkaj[P]i2cdevlib-pi/Arduino/wiringPi/wiringPi.c
// Function: piBoardId
void piBoardId (int *model, int *rev, int *mem, int *maker, int *warranty)
{
  FILE *cpuFd ;
  char line [120] ;
  char *c ;
  unsigned int revision ;
  int bRev, bType, bProc, bMfg, bMem, bWarranty ;

//	Will deal with the properly later on - for now, lets just get it going...
//  unsigned int modelNum ;

  (void)piGpioLayout () ;	// Call this first to make sure all's OK. Don't care about the result.

  if ((cpuFd = fopen ("/proc/cpuinfo", "r")) == NULL)
    piGpioLayoutOops ("Unable to open /proc/cpuinfo") ;

  while (fgets (line, 120, cpuFd) != NULL)
    if (strncmp (line, "Revision", 8) == 0)
      break ;

  fclose (cpuFd) ;

  if (strncmp (line, "Revision", 8) != 0)
    piGpioLayoutOops ("No \"Revision\" line") ;

// Chomp trailing CR/NL

  for (c = &line [strlen (line) - 1] ; (*c == '\n') || (*c == '\r') ; --c)
    *c = 0 ;

  if (wiringPiDebug)
    printf ("piBoardId: Revision string: %s\n", line) ;

// Need to work out if it's using the new or old encoding scheme:

// Scan to the first character of the revision number

  for (c = line ; *c ; ++c)
    if (*c == ':')
      break ;

  if (*c != ':')
    piGpioLayoutOops ("Bogus \"Revision\" line (no colon)") ;

// Chomp spaces

  ++c ;
  while (isspace (*c))
    ++c ;

  if (!isxdigit (*c))
    piGpioLayoutOops ("Bogus \"Revision\" line (no hex digit at start of revision)") ;

  revision = (unsigned int)strtol (c, NULL, 16) ; // Hex number with no leading 0x

// Check for new way:

  if ((revision &  (1 << 23)) != 0)	// New way
  {
    if (wiringPiDebug)
      printf ("piBoardId: New Way: revision is: %08X\n", revision) ;

    bRev      = (revision & (0x0F <<  0)) >>  0 ;
    bType     = (revision & (0xFF <<  4)) >>  4 ;
    bProc     = (revision & (0x0F << 12)) >> 12 ;	// Not used for now.
    bMfg      = (revision & (0x0F << 16)) >> 16 ;
    bMem      = (revision & (0x07 << 20)) >> 20 ;
    bWarranty = (revision & (0x03 << 24)) != 0 ;

    *model    = bType ;
    *rev      = bRev ;
    *mem      = bMem ;
    *maker    = bMfg  ;
    *warranty = bWarranty ;

    if (wiringPiDebug)
      printf ("piBoardId: rev: %d, type: %d, proc: %d, mfg: %d, mem: %d, warranty: %d\n",
		bRev, bType, bProc, bMfg, bMem, bWarranty) ;
  }
  else					// Old way
  {
    if (wiringPiDebug)
      printf ("piBoardId: Old Way: revision is: %s\n", c) ;

    if (!isdigit (*c))
      piGpioLayoutOops ("Bogus \"Revision\" line (no digit at start of revision)") ;

// Make sure its long enough

    if (strlen (c) < 4)
      piGpioLayoutOops ("Bogus \"Revision\" line (not long enough)") ;

// If longer than 4, we'll assume it's been overvolted

    *warranty = strlen (c) > 4 ;

// Extract last 4 characters:

    c = c + strlen (c) - 4 ;

// Fill out the replys as appropriate

    /**/ if (strcmp (c, "0002") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1   ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }
    else if (strcmp (c, "0003") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_1 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "0004") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "0005") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }
    else if (strcmp (c, "0006") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "0007") == 0) { *model = PI_MODEL_A  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }
    else if (strcmp (c, "0008") == 0) { *model = PI_MODEL_A  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_SONY ;  ; }
    else if (strcmp (c, "0009") == 0) { *model = PI_MODEL_A  ; *rev = PI_VERSION_1_2 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "000d") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_EGOMAN  ; }
    else if (strcmp (c, "000e") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "000f") == 0) { *model = PI_MODEL_B  ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "0010") == 0) { *model = PI_MODEL_BP ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "0013") == 0) { *model = PI_MODEL_BP ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_EMBEST  ; }
    else if (strcmp (c, "0016") == 0) { *model = PI_MODEL_BP ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "0019") == 0) { *model = PI_MODEL_BP ; *rev = PI_VERSION_1_2 ; *mem = 1 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "0011") == 0) { *model = PI_MODEL_CM ; *rev = PI_VERSION_1_1 ; *mem = 1 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "0014") == 0) { *model = PI_MODEL_CM ; *rev = PI_VERSION_1_1 ; *mem = 1 ; *maker = PI_MAKER_EMBEST  ; }
    else if (strcmp (c, "0017") == 0) { *model = PI_MODEL_CM ; *rev = PI_VERSION_1_1 ; *mem = 1 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "001a") == 0) { *model = PI_MODEL_CM ; *rev = PI_VERSION_1_1 ; *mem = 1 ; *maker = PI_MAKER_EGOMAN  ; }

    else if (strcmp (c, "0012") == 0) { *model = PI_MODEL_AP ; *rev = PI_VERSION_1_1 ; *mem = 0 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "0015") == 0) { *model = PI_MODEL_AP ; *rev = PI_VERSION_1_1 ; *mem = 1 ; *maker = PI_MAKER_EMBEST  ; }
    else if (strcmp (c, "0018") == 0) { *model = PI_MODEL_AP ; *rev = PI_VERSION_1_1 ; *mem = 0 ; *maker = PI_MAKER_SONY    ; }
    else if (strcmp (c, "001b") == 0) { *model = PI_MODEL_AP ; *rev = PI_VERSION_1_1 ; *mem = 0 ; *maker = PI_MAKER_EGOMAN  ; }

    else                              { *model = 0           ; *rev = 0              ; *mem =   0 ; *maker = 0 ;               }
  }
}

// Assembly:
subq $0xe8, %rsp
movq %rdi, 0xe0(%rsp)
movq %rsi, 0xd8(%rsp)
movq %rdx, 0xd0(%rsp)
movq %rcx, 0xc8(%rsp)
movq %r8, 0xc0(%rsp)
callq 0x235b0
leaq 0x209d7(%rip), %rdi     # 0x4b332
leaq 0x209bf(%rip), %rsi     # 0x4b321
callq 0x22cb0
movq %rax, 0xb8(%rsp)
cmpq $0x0, %rax
jne 0x2a981
leaq 0x209a7(%rip), %rdi     # 0x4b323
callq 0x2a8b0
jmp 0x2a983
leaq 0x40(%rsp), %rdi
movq 0xb8(%rsp), %rdx
movl $0x78, %esi
callq 0x23170
cmpq $0x0, %rax
je 0x2a9bf
leaq 0x40(%rsp), %rdi
leaq 0x209cc(%rip), %rsi     # 0x4b378
movl $0x8, %edx
callq 0x224a0
cmpl $0x0, %eax
jne 0x2a9bd
jmp 0x2a9bf
jmp 0x2a983
movq 0xb8(%rsp), %rdi
callq 0x22ab0
leaq 0x40(%rsp), %rdi
leaq 0x209a0(%rip), %rsi     # 0x4b378
movl $0x8, %edx
callq 0x224a0
cmpl $0x0, %eax
je 0x2a9f3
leaq 0x20993(%rip), %rdi     # 0x4b381
callq 0x2a8b0
leaq 0x40(%rsp), %rdi
callq 0x22420
movq %rax, %rcx
subq $0x1, %rcx
leaq 0x40(%rsp), %rax
addq %rcx, %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
movsbl (%rax), %ecx
movb $0x1, %al
cmpl $0xa, %ecx
movb %al, 0x1b(%rsp)
je 0x2aa36
movq 0x38(%rsp), %rax
movsbl (%rax), %eax
cmpl $0xd, %eax
sete %al
movb %al, 0x1b(%rsp)
movb 0x1b(%rsp), %al
testb $0x1, %al
jne 0x2aa40
jmp 0x2aa58
movq 0x38(%rsp), %rax
movb $0x0, (%rax)
movq 0x38(%rsp), %rax
addq $-0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x2aa11
movq 0x314e1(%rip), %rax     # 0x5bf40
cmpl $0x0, (%rax)
je 0x2aa77
leaq 0x40(%rsp), %rsi
leaq 0x20a1a(%rip), %rdi     # 0x4b48a
movb $0x0, %al
callq 0x22060
leaq 0x40(%rsp), %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rax
cmpb $0x0, (%rax)
je 0x2aaac
movq 0x38(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
jne 0x2aa9a
jmp 0x2aaac
jmp 0x2aa9c
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x2aa81
movq 0x38(%rsp), %rax
movsbl (%rax), %eax
cmpl $0x3a, %eax
je 0x2aac5
leaq 0x208f7(%rip), %rdi     # 0x4b3b7
callq 0x2a8b0
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
callq 0x22bc0
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0x2ab04
movq 0x38(%rsp), %rax
addq $0x1, %rax
movq %rax, 0x38(%rsp)
jmp 0x2aad3
callq 0x22bc0
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
jne 0x2ab31
leaq 0x208ac(%rip), %rdi     # 0x4b3d8
callq 0x2a8b0
movq 0x38(%rsp), %rdi
xorl %eax, %eax
movl %eax, %esi
movl $0x10, %edx
callq 0x22f50
movl %eax, 0x34(%rsp)
movl 0x34(%rsp), %eax
andl $0x800000, %eax         # imm = 0x800000
cmpl $0x0, %eax
je 0x2ac60
movq 0x313df(%rip), %rax     # 0x5bf40
cmpl $0x0, (%rax)
je 0x2ab78
movl 0x34(%rsp), %esi
leaq 0x20939(%rip), %rdi     # 0x4b4aa
movb $0x0, %al
callq 0x22060
movl 0x34(%rsp), %eax
andl $0xf, %eax
shrl $0x0, %eax
movl %eax, 0x30(%rsp)
movl 0x34(%rsp), %eax
andl $0xff0, %eax            # imm = 0xFF0
shrl $0x4, %eax
movl %eax, 0x2c(%rsp)
movl 0x34(%rsp), %eax
andl $0xf000, %eax           # imm = 0xF000
shrl $0xc, %eax
movl %eax, 0x28(%rsp)
movl 0x34(%rsp), %eax
andl $0xf0000, %eax          # imm = 0xF0000
shrl $0x10, %eax
movl %eax, 0x24(%rsp)
movl 0x34(%rsp), %eax
andl $0x700000, %eax         # imm = 0x700000
shrl $0x14, %eax
movl %eax, 0x20(%rsp)
movl 0x34(%rsp), %eax
andl $0x3000000, %eax        # imm = 0x3000000
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, 0x1c(%rsp)
movl 0x2c(%rsp), %ecx
movq 0xe0(%rsp), %rax
movl %ecx, (%rax)
movl 0x30(%rsp), %ecx
movq 0xd8(%rsp), %rax
movl %ecx, (%rax)
movl 0x20(%rsp), %ecx
movq 0xd0(%rsp), %rax
movl %ecx, (%rax)
movl 0x24(%rsp), %ecx
movq 0xc8(%rsp), %rax
movl %ecx, (%rax)
movl 0x1c(%rsp), %ecx
movq 0xc0(%rsp), %rax
movl %ecx, (%rax)
movq 0x31315(%rip), %rax     # 0x5bf40
cmpl $0x0, (%rax)
je 0x2ac5b
movl 0x30(%rsp), %esi
movl 0x2c(%rsp), %edx
movl 0x28(%rsp), %ecx
movl 0x24(%rsp), %r8d
movl 0x20(%rsp), %r9d
movl 0x1c(%rsp), %eax
leaq 0x20880(%rip), %rdi     # 0x4b4d1
movl %eax, (%rsp)
movb $0x0, %al
callq 0x22060
jmp 0x2b4e8
movq 0x312d9(%rip), %rax     # 0x5bf40
cmpl $0x0, (%rax)
je 0x2ac7f
movq 0x38(%rsp), %rsi
leaq 0x208a1(%rip), %rdi     # 0x4b519
movb $0x0, %al
callq 0x22060
callq 0x22bc0
movq (%rax), %rax
movq 0x38(%rsp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x800, %eax            # imm = 0x800
cmpl $0x0, %eax
jne 0x2acac
leaq 0x20897(%rip), %rdi     # 0x4b53e
callq 0x2a8b0
movq 0x38(%rsp), %rdi
callq 0x22420
cmpq $0x4, %rax
jae 0x2acc8
leaq 0x208b1(%rip), %rdi     # 0x4b574
callq 0x2a8b0
movq 0x38(%rsp), %rdi
callq 0x22420
cmpq $0x4, %rax
seta %al
andb $0x1, %al
movzbl %al, %ecx
movq 0xc0(%rsp), %rax
movl %ecx, (%rax)
movq 0x38(%rsp), %rax
movq %rax, 0x10(%rsp)
movq 0x38(%rsp), %rdi
callq 0x22420
movq %rax, %rcx
movq 0x10(%rsp), %rax
addq %rcx, %rax
addq $-0x4, %rax
movq %rax, 0x38(%rsp)
movq 0x38(%rsp), %rdi
leaq 0x2073a(%rip), %rsi     # 0x4b456
callq 0x22f40
cmpl $0x0, %eax
jne 0x2ad63
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x0, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4e6
movq 0x38(%rsp), %rdi
leaq 0x206ec(%rip), %rsi     # 0x4b45b
callq 0x22f40
cmpl $0x0, %eax
jne 0x2adb6
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4e4
movq 0x38(%rsp), %rdi
leaq 0x207da(%rip), %rsi     # 0x4b59c
callq 0x22f40
cmpl $0x0, %eax
jne 0x2ae09
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4e2
movq 0x38(%rsp), %rdi
leaq 0x2078c(%rip), %rsi     # 0x4b5a1
callq 0x22f40
cmpl $0x0, %eax
jne 0x2ae5c
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4e0
movq 0x38(%rsp), %rdi
leaq 0x2073e(%rip), %rsi     # 0x4b5a6
callq 0x22f40
cmpl $0x0, %eax
jne 0x2aeaf
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4de
movq 0x38(%rsp), %rdi
leaq 0x206f0(%rip), %rsi     # 0x4b5ab
callq 0x22f40
cmpl $0x0, %eax
jne 0x2af02
movq 0xe0(%rsp), %rax
movl $0x0, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4dc
movq 0x38(%rsp), %rdi
leaq 0x206a2(%rip), %rsi     # 0x4b5b0
callq 0x22f40
cmpl $0x0, %eax
jne 0x2af55
movq 0xe0(%rsp), %rax
movl $0x0, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4da
movq 0x38(%rsp), %rdi
leaq 0x20654(%rip), %rsi     # 0x4b5b5
callq 0x22f40
cmpl $0x0, %eax
jne 0x2afa8
movq 0xe0(%rsp), %rax
movl $0x0, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4d8
movq 0x38(%rsp), %rdi
leaq 0x20606(%rip), %rsi     # 0x4b5ba
callq 0x22f40
cmpl $0x0, %eax
jne 0x2affb
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4d6
movq 0x38(%rsp), %rdi
leaq 0x205b8(%rip), %rsi     # 0x4b5bf
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b04e
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4d4
movq 0x38(%rsp), %rdi
leaq 0x2056a(%rip), %rsi     # 0x4b5c4
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b0a1
movq 0xe0(%rsp), %rax
movl $0x1, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4d2
movq 0x38(%rsp), %rdi
leaq 0x2051c(%rip), %rsi     # 0x4b5c9
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b0f4
movq 0xe0(%rsp), %rax
movl $0x3, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4d0
movq 0x38(%rsp), %rdi
leaq 0x204ce(%rip), %rsi     # 0x4b5ce
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b147
movq 0xe0(%rsp), %rax
movl $0x3, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x2, (%rax)
jmp 0x2b4ce
movq 0x38(%rsp), %rdi
leaq 0x20480(%rip), %rsi     # 0x4b5d3
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b19a
movq 0xe0(%rsp), %rax
movl $0x3, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4cc
movq 0x38(%rsp), %rdi
leaq 0x20432(%rip), %rsi     # 0x4b5d8
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b1ed
movq 0xe0(%rsp), %rax
movl $0x3, (%rax)
movq 0xd8(%rsp), %rax
movl $0x2, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4ca
movq 0x38(%rsp), %rdi
leaq 0x203e4(%rip), %rsi     # 0x4b5dd
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b240
movq 0xe0(%rsp), %rax
movl $0x6, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4c8
movq 0x38(%rsp), %rdi
leaq 0x20396(%rip), %rsi     # 0x4b5e2
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b293
movq 0xe0(%rsp), %rax
movl $0x6, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x2, (%rax)
jmp 0x2b4c6
movq 0x38(%rsp), %rdi
leaq 0x20348(%rip), %rsi     # 0x4b5e7
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b2e6
movq 0xe0(%rsp), %rax
movl $0x6, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4c4
movq 0x38(%rsp), %rdi
leaq 0x202fa(%rip), %rsi     # 0x4b5ec
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b339
movq 0xe0(%rsp), %rax
movl $0x6, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4c2
movq 0x38(%rsp), %rdi
leaq 0x202ac(%rip), %rsi     # 0x4b5f1
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b38c
movq 0xe0(%rsp), %rax
movl $0x2, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4c0
movq 0x38(%rsp), %rdi
leaq 0x2025e(%rip), %rsi     # 0x4b5f6
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b3df
movq 0xe0(%rsp), %rax
movl $0x2, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x1, (%rax)
movq 0xc8(%rsp), %rax
movl $0x2, (%rax)
jmp 0x2b4be
movq 0x38(%rsp), %rdi
leaq 0x20210(%rip), %rsi     # 0x4b5fb
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b432
movq 0xe0(%rsp), %rax
movl $0x2, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4bc
movq 0x38(%rsp), %rdi
leaq 0x201c2(%rip), %rsi     # 0x4b600
callq 0x22f40
cmpl $0x0, %eax
jne 0x2b482
movq 0xe0(%rsp), %rax
movl $0x2, (%rax)
movq 0xd8(%rsp), %rax
movl $0x1, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x1, (%rax)
jmp 0x2b4ba
movq 0xe0(%rsp), %rax
movl $0x0, (%rax)
movq 0xd8(%rsp), %rax
movl $0x0, (%rax)
movq 0xd0(%rsp), %rax
movl $0x0, (%rax)
movq 0xc8(%rsp), %rax
movl $0x0, (%rax)
jmp 0x2b4bc
jmp 0x2b4be
jmp 0x2b4c0
jmp 0x2b4c2
jmp 0x2b4c4
jmp 0x2b4c6
jmp 0x2b4c8
jmp 0x2b4ca
jmp 0x2b4cc
jmp 0x2b4ce
jmp 0x2b4d0
jmp 0x2b4d2
jmp 0x2b4d4
jmp 0x2b4d6
jmp 0x2b4d8
jmp 0x2b4da
jmp 0x2b4dc
jmp 0x2b4de
jmp 0x2b4e0
jmp 0x2b4e2
jmp 0x2b4e4
jmp 0x2b4e6
jmp 0x2b4e8
addq $0xe8, %rsp
retq