#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int /*<<< orphan*/ border_e_horizontal_generic(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_e_horizontal_special_sand_n(unsigned char *,
                                                      unsigned char *);
int /*<<< orphan*/ border_e_horizontal_special_sand_only(unsigned char *,
                                                         unsigned char *);
int /*<<< orphan*/ border_e_horizontal_special_sand_s(unsigned char *,
                                                      unsigned char *);
int /*<<< orphan*/ border_n_vertical_generic(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_n_vertical_special_sand_e(unsigned char *,
                                                    unsigned char *);
int /*<<< orphan*/ border_n_vertical_special_sand_only(unsigned char *,
                                                       unsigned char *);
int /*<<< orphan*/ border_n_vertical_special_sand_w(unsigned char *,
                                                    unsigned char *);
int /*<<< orphan*/ border_ne_ext_corner_generic(unsigned char *,
                                                unsigned char *);
int /*<<< orphan*/ border_ne_ext_corner_special_sand_long_hori(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_ne_ext_corner_special_sand_long_vert(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_ne_ext_corner_special_sand_only(unsigned char *,
                                                          unsigned char *);
int /*<<< orphan*/
border_ne_ext_corner_special_sand_short_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_ne_ext_corner_special_sand_short_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_ne_ext_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/
border_ne_ext_diagonal_special_sand_long_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_ne_ext_diagonal_special_sand_long_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_ne_ext_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/
border_ne_ext_diagonal_special_sand_short_hori(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/
border_ne_ext_diagonal_special_sand_short_vert(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_ne_int_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/ border_ne_int_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/ border_nesw_double_diagonal_generic(unsigned char *,
                                                       unsigned char *);
int /*<<< orphan*/ border_nesw_double_diagonal_special_sand_n(unsigned char *,
                                                              unsigned char *);
int /*<<< orphan*/
border_nesw_double_diagonal_special_sand_only(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_nesw_double_diagonal_special_sand_s(unsigned char *,
                                                              unsigned char *);
int /*<<< orphan*/ border_nw_ext_corner_generic(unsigned char *,
                                                unsigned char *);
int /*<<< orphan*/ border_nw_ext_corner_special_sand_long_hori(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_nw_ext_corner_special_sand_long_vert(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_nw_ext_corner_special_sand_only(unsigned char *,
                                                          unsigned char *);
int /*<<< orphan*/
border_nw_ext_corner_special_sand_short_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_nw_ext_corner_special_sand_short_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_nw_ext_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/
border_nw_ext_diagonal_special_sand_long_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_nw_ext_diagonal_special_sand_long_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_nw_ext_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/
border_nw_ext_diagonal_special_sand_short_hori(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/
border_nw_ext_diagonal_special_sand_short_vert(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_nw_int_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/ border_nw_int_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/ border_nwse_double_diagonal_generic(unsigned char *,
                                                       unsigned char *);
int /*<<< orphan*/ border_nwse_double_diagonal_special_sand_n(unsigned char *,
                                                              unsigned char *);
int /*<<< orphan*/
border_nwse_double_diagonal_special_sand_only(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_nwse_double_diagonal_special_sand_s(unsigned char *,
                                                              unsigned char *);
int /*<<< orphan*/ border_s_vertical_generic(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_s_vertical_special_sand_e(unsigned char *,
                                                    unsigned char *);
int /*<<< orphan*/ border_s_vertical_special_sand_only(unsigned char *,
                                                       unsigned char *);
int /*<<< orphan*/ border_s_vertical_special_sand_w(unsigned char *,
                                                    unsigned char *);
int /*<<< orphan*/ border_se_ext_corner_generic(unsigned char *,
                                                unsigned char *);
int /*<<< orphan*/ border_se_ext_corner_special_sand_long_hori(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_se_ext_corner_special_sand_long_vert(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_se_ext_corner_special_sand_only(unsigned char *,
                                                          unsigned char *);
int /*<<< orphan*/
border_se_ext_corner_special_sand_short_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_se_ext_corner_special_sand_short_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_se_ext_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/
border_se_ext_diagonal_special_sand_long_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_se_ext_diagonal_special_sand_long_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_se_ext_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/
border_se_ext_diagonal_special_sand_short_hori(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/
border_se_ext_diagonal_special_sand_short_vert(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_se_int_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/ border_se_int_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/ border_sw_ext_corner_generic(unsigned char *,
                                                unsigned char *);
int /*<<< orphan*/ border_sw_ext_corner_special_sand_long_hori(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_sw_ext_corner_special_sand_long_vert(unsigned char *,
                                                               unsigned char *);
int /*<<< orphan*/ border_sw_ext_corner_special_sand_only(unsigned char *,
                                                          unsigned char *);
int /*<<< orphan*/
border_sw_ext_corner_special_sand_short_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_sw_ext_corner_special_sand_short_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_sw_ext_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/
border_sw_ext_diagonal_special_sand_long_hori(unsigned char *, unsigned char *);
int /*<<< orphan*/
border_sw_ext_diagonal_special_sand_long_vert(unsigned char *, unsigned char *);
int /*<<< orphan*/ border_sw_ext_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/
border_sw_ext_diagonal_special_sand_short_hori(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/
border_sw_ext_diagonal_special_sand_short_vert(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_sw_int_diagonal_generic(unsigned char *,
                                                  unsigned char *);
int /*<<< orphan*/ border_sw_int_diagonal_special_sand_only(unsigned char *,
                                                            unsigned char *);
int /*<<< orphan*/ border_w_horizontal_generic(unsigned char *,
                                               unsigned char *);
int /*<<< orphan*/ border_w_horizontal_special_sand_n(unsigned char *,
                                                      unsigned char *);
int /*<<< orphan*/ border_w_horizontal_special_sand_only(unsigned char *,
                                                         unsigned char *);
int /*<<< orphan*/ border_w_horizontal_special_sand_s(unsigned char *,
                                                      unsigned char *);
int /*<<< orphan*/ borderless_generic(unsigned char *);
int dispatch_terrain_generic(unsigned char adjacent_same,
                             unsigned char adjacent_sand, unsigned char *pic,
                             unsigned char *mirr) {
  switch (adjacent_same) {
  case 0xD6:
  case 0xD7:
  case 0xF6:
  case 0xF7:
    switch (adjacent_sand) {
    case 0x01:
      border_w_horizontal_special_sand_n(pic, mirr);
      break;
    case 0x20:
      border_w_horizontal_special_sand_s(pic, mirr);
      break;
    case 0x00:
      border_w_horizontal_generic(pic, mirr);
      break;
    default:
      border_w_horizontal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x6B:
  case 0x6F:
  case 0xEB:
  case 0xEF:
    switch (adjacent_sand) {
    case 0x04:
      border_e_horizontal_special_sand_n(pic, mirr);
      break;
    case 0x80:
      border_e_horizontal_special_sand_s(pic, mirr);
      break;
    case 0x00:
      border_e_horizontal_generic(pic, mirr);
      break;
    default:
      border_e_horizontal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xF8:
  case 0xF9:
  case 0xFC:
  case 0xFD:
    switch (adjacent_sand) {
    case 0x01:
      border_n_vertical_special_sand_w(pic, mirr);
      break;
    case 0x04:
      border_n_vertical_special_sand_e(pic, mirr);
      break;
    case 0x00:
      border_n_vertical_generic(pic, mirr);
      break;
    default:
      border_n_vertical_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x1F:
  case 0x3F:
  case 0x9F:
  case 0xBF:
    switch (adjacent_sand) {
    case 0x20:
      border_s_vertical_special_sand_w(pic, mirr);
      break;
    case 0x80:
      border_s_vertical_special_sand_e(pic, mirr);
      break;
    case 0x00:
      border_s_vertical_generic(pic, mirr);
      break;
    default:
      border_s_vertical_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xD4:
  case 0xF0:
  case 0xF4:
    switch (adjacent_sand) {
    case 0x04:
      border_nw_ext_diagonal_special_sand_short_hori(pic, mirr);
      break;
    case 0x08:
    case 0x09:
    case 0x28:
    case 0x29:
      border_nw_ext_diagonal_special_sand_long_vert(pic, mirr);
      break;
    case 0x02:
    case 0x03:
    case 0x06:
    case 0x07:
      border_nw_ext_diagonal_special_sand_long_hori(pic, mirr);
      break;
    case 0x20:
      border_nw_ext_diagonal_special_sand_short_vert(pic, mirr);
      break;
    case 0x00:
      border_nw_ext_diagonal_generic(pic, mirr);
      break;
    default:
      border_nw_ext_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xE8:
  case 0xE9:
  case 0x69:
    switch (adjacent_sand) {
    case 0x01:
      border_ne_ext_diagonal_special_sand_short_hori(pic, mirr);
      break;
    case 0x02:
    case 0x03:
    case 0x06:
    case 0x07:
      border_ne_ext_diagonal_special_sand_long_hori(pic, mirr);
      break;
    case 0x10:
    case 0x14:
    case 0x90:
    case 0x94:
      border_ne_ext_diagonal_special_sand_long_vert(pic, mirr);
      break;
    case 0x80:
      border_ne_ext_diagonal_special_sand_short_vert(pic, mirr);
      break;
    case 0x00:
      border_ne_ext_diagonal_generic(pic, mirr);
      break;
    default:
      border_ne_ext_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x96:
  case 0x97:
  case 0x17:
    switch (adjacent_sand) {
    case 0x01:
      border_sw_ext_diagonal_special_sand_short_vert(pic, mirr);
      break;
    case 0x08:
    case 0x09:
    case 0x28:
    case 0x29:
      border_sw_ext_diagonal_special_sand_long_vert(pic, mirr);
      break;
    case 0xC0:
    case 0xE0:
    case 0x40:
    case 0x60:
      border_sw_ext_diagonal_special_sand_long_hori(pic, mirr);
      break;
    case 0x80:
      border_sw_ext_diagonal_special_sand_short_hori(pic, mirr);
      break;
    case 0x00:
      border_sw_ext_diagonal_generic(pic, mirr);
      break;
    default:
      border_sw_ext_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x2B:
  case 0x2F:
  case 0x0F:
    switch (adjacent_sand) {
    case 0x04:
      border_se_ext_diagonal_special_sand_short_vert(pic, mirr);
      break;
    case 0x10:
    case 0x14:
    case 0x90:
    case 0x94:
      border_se_ext_diagonal_special_sand_long_vert(pic, mirr);
      break;
    case 0x40:
    case 0x60:
    case 0xC0:
    case 0xE0:
      border_se_ext_diagonal_special_sand_long_hori(pic, mirr);
      break;
    case 0x20:
      border_se_ext_diagonal_special_sand_short_hori(pic, mirr);
      break;
    case 0x00:
      border_se_ext_diagonal_generic(pic, mirr);
      break;
    default:
      border_se_ext_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xFE:
    (0 == adjacent_sand) ? border_nw_int_diagonal_generic(pic, mirr)
                         : border_nw_int_diagonal_special_sand_only(pic, mirr);
    break;
  case 0xFB:
    (0 == adjacent_sand) ? border_ne_int_diagonal_generic(pic, mirr)
                         : border_ne_int_diagonal_special_sand_only(pic, mirr);
    break;
  case 0xDF:
    (0 == adjacent_sand) ? border_sw_int_diagonal_generic(pic, mirr)
                         : border_sw_int_diagonal_special_sand_only(pic, mirr);
    break;
  case 0x7F:
    (0 == adjacent_sand) ? border_se_int_diagonal_generic(pic, mirr)
                         : border_se_int_diagonal_special_sand_only(pic, mirr);
    break;
  case 0x7E:
    switch (adjacent_sand) {
    case 0x01:
      border_nesw_double_diagonal_special_sand_n(pic, mirr);
      break;
    case 0x80:
      border_nesw_double_diagonal_special_sand_s(pic, mirr);
      break;
    case 0x00:
      border_nwse_double_diagonal_generic(pic, mirr);
      break;
    default:
      border_nwse_double_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xDB:
    switch (adjacent_sand) {
    case 0x04:
      border_nwse_double_diagonal_special_sand_n(pic, mirr);
      break;
    case 0x20:
      border_nwse_double_diagonal_special_sand_s(pic, mirr);
      break;
    case 0x00:
      border_nesw_double_diagonal_generic(pic, mirr);
      break;
    default:
      border_nesw_double_diagonal_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xD0:
    switch (adjacent_sand) {
    case 0x04:
      border_nw_ext_corner_special_sand_short_hori(pic, mirr);
      break;
    case 0x06:
    case 0x07:
      border_nw_ext_corner_special_sand_long_hori(pic, mirr);
      break;
    case 0x20:
      border_nw_ext_corner_special_sand_short_vert(pic, mirr);
      break;
    case 0x28:
    case 0x29:
      border_nw_ext_corner_special_sand_long_vert(pic, mirr);
      break;
    case 0x00:
      border_nw_ext_corner_generic(pic, mirr);
      break;
    default:
      border_nw_ext_corner_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x68:
    switch (adjacent_sand) {
    case 0x01:
      border_ne_ext_corner_special_sand_short_hori(pic, mirr);
      break;
    case 0x03:
    case 0x07:
      border_ne_ext_corner_special_sand_long_hori(pic, mirr);
      break;
    case 0x80:
      border_ne_ext_corner_special_sand_short_vert(pic, mirr);
      break;
    case 0x90:
    case 0x94:
      border_ne_ext_corner_special_sand_long_vert(pic, mirr);
      break;
    case 0x00:
      border_ne_ext_corner_generic(pic, mirr);
      break;
    default:
      border_ne_ext_corner_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x16:
    switch (adjacent_sand) {
    case 0x80:
      border_sw_ext_corner_special_sand_short_hori(pic, mirr);
      break;
    case 0xC0:
    case 0xE0:
      border_sw_ext_corner_special_sand_long_hori(pic, mirr);
      break;
    case 0x01:
      border_sw_ext_corner_special_sand_short_vert(pic, mirr);
      break;
    case 0x09:
    case 0x29:
      border_sw_ext_corner_special_sand_long_vert(pic, mirr);
      break;
    case 0x00:
      border_sw_ext_corner_generic(pic, mirr);
      break;
    default:
      border_sw_ext_corner_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0x0B:
    switch (adjacent_sand) {
    case 0x20:
      border_se_ext_corner_special_sand_short_hori(pic, mirr);
      break;
    case 0x60:
    case 0xE0:
      border_se_ext_corner_special_sand_long_hori(pic, mirr);
      break;
    case 0x04:
      border_se_ext_corner_special_sand_short_vert(pic, mirr);
      break;
    case 0x14:
    case 0x94:
      border_se_ext_corner_special_sand_long_vert(pic, mirr);
      break;
    case 0x00:
      border_se_ext_corner_generic(pic, mirr);
      break;
    default:
      border_se_ext_corner_special_sand_only(pic, mirr);
      break;
    }
    break;
  case 0xFF:
    borderless_generic(pic);
    break;
  default:
    return 1;
  }
  return 0;
}


x86 assembly (clang, -O0):
<dispatch_terrain_generic>:
push   %rbp
mov    %rsp,%rbp
sub    $0x70,%rsp
mov    %sil,%al
mov    %dil,%sil
mov    %sil,-0x5(%rbp)
mov    %al,-0x6(%rbp)
mov    %rdx,-0x10(%rbp)
mov    %rcx,-0x18(%rbp)
movzbl -0x5(%rbp),%eax
add    $0xfffffff5,%eax
mov    %eax,%ecx
mov    %rcx,-0x20(%rbp)
sub    $0xf4,%eax
ja     4169 <dispatch_terrain_generic+0xb59>
mov    -0x20(%rbp),%rax
lea    0x19b0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movzbl -0x6(%rbp),%eax
mov    %eax,-0x24(%rbp)
test   %eax,%eax
je     36b3 <dispatch_terrain_generic+0xa3>
jmp    366d <dispatch_terrain_generic+0x5d>
mov    -0x24(%rbp),%eax
sub    $0x1,%eax
je     368f <dispatch_terrain_generic+0x7f>
jmp    367e <dispatch_terrain_generic+0x6e>
mov    -0x24(%rbp),%eax
sub    $0x20,%eax
je     36a1 <dispatch_terrain_generic+0x91>
jmp    36c5 <dispatch_terrain_generic+0xb5>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3420 <border_w_horizontal_special_sand_n@plt>
jmp    36d2 <dispatch_terrain_generic+0xc2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31c0 <border_w_horizontal_special_sand_s@plt>
jmp    36d2 <dispatch_terrain_generic+0xc2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3280 <border_w_horizontal_generic@plt>
jmp    36d2 <dispatch_terrain_generic+0xc2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3100 <border_w_horizontal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x28(%rbp)
test   %eax,%eax
je     3733 <dispatch_terrain_generic+0x123>
jmp    36eb <dispatch_terrain_generic+0xdb>
mov    -0x28(%rbp),%eax
sub    $0x4,%eax
je     370f <dispatch_terrain_generic+0xff>
jmp    36fc <dispatch_terrain_generic+0xec>
mov    -0x28(%rbp),%eax
sub    $0x80,%eax
je     3721 <dispatch_terrain_generic+0x111>
jmp    3745 <dispatch_terrain_generic+0x135>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3300 <border_e_horizontal_special_sand_n@plt>
jmp    3752 <dispatch_terrain_generic+0x142>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3060 <border_e_horizontal_special_sand_s@plt>
jmp    3752 <dispatch_terrain_generic+0x142>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32f0 <border_e_horizontal_generic@plt>
jmp    3752 <dispatch_terrain_generic+0x142>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3110 <border_e_horizontal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x2c(%rbp)
test   %eax,%eax
je     37b1 <dispatch_terrain_generic+0x1a1>
jmp    376b <dispatch_terrain_generic+0x15b>
mov    -0x2c(%rbp),%eax
sub    $0x1,%eax
je     378d <dispatch_terrain_generic+0x17d>
jmp    377c <dispatch_terrain_generic+0x16c>
mov    -0x2c(%rbp),%eax
sub    $0x4,%eax
je     379f <dispatch_terrain_generic+0x18f>
jmp    37c3 <dispatch_terrain_generic+0x1b3>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30a0 <border_n_vertical_special_sand_w@plt>
jmp    37d0 <dispatch_terrain_generic+0x1c0>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30c0 <border_n_vertical_special_sand_e@plt>
jmp    37d0 <dispatch_terrain_generic+0x1c0>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32c0 <border_n_vertical_generic@plt>
jmp    37d0 <dispatch_terrain_generic+0x1c0>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32e0 <border_n_vertical_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x30(%rbp)
test   %eax,%eax
je     3831 <dispatch_terrain_generic+0x221>
jmp    37e9 <dispatch_terrain_generic+0x1d9>
mov    -0x30(%rbp),%eax
sub    $0x20,%eax
je     380d <dispatch_terrain_generic+0x1fd>
jmp    37fa <dispatch_terrain_generic+0x1ea>
mov    -0x30(%rbp),%eax
sub    $0x80,%eax
je     381f <dispatch_terrain_generic+0x20f>
jmp    3843 <dispatch_terrain_generic+0x233>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3320 <border_s_vertical_special_sand_w@plt>
jmp    3850 <dispatch_terrain_generic+0x240>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3350 <border_s_vertical_special_sand_e@plt>
jmp    3850 <dispatch_terrain_generic+0x240>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34b0 <border_s_vertical_generic@plt>
jmp    3850 <dispatch_terrain_generic+0x240>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32d0 <border_s_vertical_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %rax,-0x38(%rbp)
sub    $0x29,%rax
ja     38d5 <dispatch_terrain_generic+0x2c5>
mov    -0x38(%rbp),%rax
lea    0x1c0a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3340 <border_nw_ext_diagonal_special_sand_short_hori@plt>
jmp    38e2 <dispatch_terrain_generic+0x2d2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33b0 <border_nw_ext_diagonal_special_sand_long_vert@plt>
jmp    38e2 <dispatch_terrain_generic+0x2d2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33f0 <border_nw_ext_diagonal_special_sand_long_hori@plt>
jmp    38e2 <dispatch_terrain_generic+0x2d2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34d0 <border_nw_ext_diagonal_special_sand_short_vert@plt>
jmp    38e2 <dispatch_terrain_generic+0x2d2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31f0 <border_nw_ext_diagonal_generic@plt>
jmp    38e2 <dispatch_terrain_generic+0x2d2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31e0 <border_nw_ext_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x3c(%rbp)
test   %eax,%eax
je     39d7 <dispatch_terrain_generic+0x3c7>
jmp    38fb <dispatch_terrain_generic+0x2eb>
mov    -0x3c(%rbp),%eax
sub    $0x1,%eax
je     398f <dispatch_terrain_generic+0x37f>
jmp    390c <dispatch_terrain_generic+0x2fc>
mov    -0x3c(%rbp),%eax
add    $0xfffffffe,%eax
sub    $0x2,%eax
jb     39a1 <dispatch_terrain_generic+0x391>
jmp    3920 <dispatch_terrain_generic+0x310>
mov    -0x3c(%rbp),%eax
add    $0xfffffffa,%eax
sub    $0x2,%eax
jb     39a1 <dispatch_terrain_generic+0x391>
jmp    3934 <dispatch_terrain_generic+0x324>
mov    -0x3c(%rbp),%eax
sub    $0x10,%eax
je     39b3 <dispatch_terrain_generic+0x3a3>
jmp    3945 <dispatch_terrain_generic+0x335>
mov    -0x3c(%rbp),%eax
sub    $0x14,%eax
je     39b3 <dispatch_terrain_generic+0x3a3>
jmp    3956 <dispatch_terrain_generic+0x346>
mov    -0x3c(%rbp),%eax
sub    $0x80,%eax
je     39c5 <dispatch_terrain_generic+0x3b5>
jmp    3969 <dispatch_terrain_generic+0x359>
mov    -0x3c(%rbp),%eax
sub    $0x90,%eax
je     39b3 <dispatch_terrain_generic+0x3a3>
jmp    397c <dispatch_terrain_generic+0x36c>
mov    -0x3c(%rbp),%eax
sub    $0x94,%eax
je     39b3 <dispatch_terrain_generic+0x3a3>
jmp    39e9 <dispatch_terrain_generic+0x3d9>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30b0 <border_ne_ext_diagonal_special_sand_short_hori@plt>
jmp    39f6 <dispatch_terrain_generic+0x3e6>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3460 <border_ne_ext_diagonal_special_sand_long_hori@plt>
jmp    39f6 <dispatch_terrain_generic+0x3e6>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3030 <border_ne_ext_diagonal_special_sand_long_vert@plt>
jmp    39f6 <dispatch_terrain_generic+0x3e6>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3250 <border_ne_ext_diagonal_special_sand_short_vert@plt>
jmp    39f6 <dispatch_terrain_generic+0x3e6>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3160 <border_ne_ext_diagonal_generic@plt>
jmp    39f6 <dispatch_terrain_generic+0x3e6>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3520 <border_ne_ext_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x40(%rbp)
test   %eax,%eax
je     3aeb <dispatch_terrain_generic+0x4db>
jmp    3a0f <dispatch_terrain_generic+0x3ff>
mov    -0x40(%rbp),%eax
sub    $0x1,%eax
je     3aa3 <dispatch_terrain_generic+0x493>
jmp    3a20 <dispatch_terrain_generic+0x410>
mov    -0x40(%rbp),%eax
add    $0xfffffff8,%eax
sub    $0x2,%eax
jb     3ab5 <dispatch_terrain_generic+0x4a5>
jmp    3a34 <dispatch_terrain_generic+0x424>
mov    -0x40(%rbp),%eax
add    $0xffffffd8,%eax
sub    $0x2,%eax
jb     3ab5 <dispatch_terrain_generic+0x4a5>
jmp    3a48 <dispatch_terrain_generic+0x438>
mov    -0x40(%rbp),%eax
sub    $0x40,%eax
je     3ac7 <dispatch_terrain_generic+0x4b7>
jmp    3a59 <dispatch_terrain_generic+0x449>
mov    -0x40(%rbp),%eax
sub    $0x60,%eax
je     3ac7 <dispatch_terrain_generic+0x4b7>
jmp    3a6a <dispatch_terrain_generic+0x45a>
mov    -0x40(%rbp),%eax
sub    $0x80,%eax
je     3ad9 <dispatch_terrain_generic+0x4c9>
jmp    3a7d <dispatch_terrain_generic+0x46d>
mov    -0x40(%rbp),%eax
sub    $0xc0,%eax
je     3ac7 <dispatch_terrain_generic+0x4b7>
jmp    3a90 <dispatch_terrain_generic+0x480>
mov    -0x40(%rbp),%eax
sub    $0xe0,%eax
je     3ac7 <dispatch_terrain_generic+0x4b7>
jmp    3afd <dispatch_terrain_generic+0x4ed>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33e0 <border_sw_ext_diagonal_special_sand_short_vert@plt>
jmp    3b0a <dispatch_terrain_generic+0x4fa>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3480 <border_sw_ext_diagonal_special_sand_long_vert@plt>
jmp    3b0a <dispatch_terrain_generic+0x4fa>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3190 <border_sw_ext_diagonal_special_sand_long_hori@plt>
jmp    3b0a <dispatch_terrain_generic+0x4fa>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3450 <border_sw_ext_diagonal_special_sand_short_hori@plt>
jmp    3b0a <dispatch_terrain_generic+0x4fa>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3440 <border_sw_ext_diagonal_generic@plt>
jmp    3b0a <dispatch_terrain_generic+0x4fa>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3470 <border_sw_ext_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x44(%rbp)
test   %eax,%eax
je     3c1d <dispatch_terrain_generic+0x60d>
jmp    3b23 <dispatch_terrain_generic+0x513>
mov    -0x44(%rbp),%eax
sub    $0x4,%eax
je     3bd5 <dispatch_terrain_generic+0x5c5>
jmp    3b34 <dispatch_terrain_generic+0x524>
mov    -0x44(%rbp),%eax
sub    $0x10,%eax
je     3be7 <dispatch_terrain_generic+0x5d7>
jmp    3b45 <dispatch_terrain_generic+0x535>
mov    -0x44(%rbp),%eax
sub    $0x14,%eax
je     3be7 <dispatch_terrain_generic+0x5d7>
jmp    3b56 <dispatch_terrain_generic+0x546>
mov    -0x44(%rbp),%eax
sub    $0x20,%eax
je     3c0b <dispatch_terrain_generic+0x5fb>
jmp    3b67 <dispatch_terrain_generic+0x557>
mov    -0x44(%rbp),%eax
sub    $0x40,%eax
je     3bf9 <dispatch_terrain_generic+0x5e9>
jmp    3b78 <dispatch_terrain_generic+0x568>
mov    -0x44(%rbp),%eax
sub    $0x60,%eax
je     3bf9 <dispatch_terrain_generic+0x5e9>
jmp    3b89 <dispatch_terrain_generic+0x579>
mov    -0x44(%rbp),%eax
sub    $0x90,%eax
je     3be7 <dispatch_terrain_generic+0x5d7>
jmp    3b9c <dispatch_terrain_generic+0x58c>
mov    -0x44(%rbp),%eax
sub    $0x94,%eax
je     3be7 <dispatch_terrain_generic+0x5d7>
jmp    3baf <dispatch_terrain_generic+0x59f>
mov    -0x44(%rbp),%eax
sub    $0xc0,%eax
je     3bf9 <dispatch_terrain_generic+0x5e9>
jmp    3bc2 <dispatch_terrain_generic+0x5b2>
mov    -0x44(%rbp),%eax
sub    $0xe0,%eax
je     3bf9 <dispatch_terrain_generic+0x5e9>
jmp    3c2f <dispatch_terrain_generic+0x61f>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31b0 <border_se_ext_diagonal_special_sand_short_vert@plt>
jmp    3c3c <dispatch_terrain_generic+0x62c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31a0 <border_se_ext_diagonal_special_sand_long_vert@plt>
jmp    3c3c <dispatch_terrain_generic+0x62c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3070 <border_se_ext_diagonal_special_sand_long_hori@plt>
jmp    3c3c <dispatch_terrain_generic+0x62c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3330 <border_se_ext_diagonal_special_sand_short_hori@plt>
jmp    3c3c <dispatch_terrain_generic+0x62c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3120 <border_se_ext_diagonal_generic@plt>
jmp    3c3c <dispatch_terrain_generic+0x62c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34f0 <border_se_ext_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    3c61 <dispatch_terrain_generic+0x651>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3170 <border_nw_int_diagonal_generic@plt>
jmp    3c6e <dispatch_terrain_generic+0x65e>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3040 <border_nw_int_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    3c93 <dispatch_terrain_generic+0x683>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3150 <border_ne_int_diagonal_generic@plt>
jmp    3ca0 <dispatch_terrain_generic+0x690>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3050 <border_ne_int_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    3cc5 <dispatch_terrain_generic+0x6b5>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3270 <border_sw_int_diagonal_generic@plt>
jmp    3cd2 <dispatch_terrain_generic+0x6c2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3290 <border_sw_int_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%ecx
xor    %eax,%eax
cmp    %ecx,%eax
jne    3cf7 <dispatch_terrain_generic+0x6e7>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3400 <border_se_int_diagonal_generic@plt>
jmp    3d04 <dispatch_terrain_generic+0x6f4>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3500 <border_se_int_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x48(%rbp)
test   %eax,%eax
je     3d65 <dispatch_terrain_generic+0x755>
jmp    3d1d <dispatch_terrain_generic+0x70d>
mov    -0x48(%rbp),%eax
sub    $0x1,%eax
je     3d41 <dispatch_terrain_generic+0x731>
jmp    3d2e <dispatch_terrain_generic+0x71e>
mov    -0x48(%rbp),%eax
sub    $0x80,%eax
je     3d53 <dispatch_terrain_generic+0x743>
jmp    3d77 <dispatch_terrain_generic+0x767>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34c0 <border_nesw_double_diagonal_special_sand_n@plt>
jmp    3d84 <dispatch_terrain_generic+0x774>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3240 <border_nesw_double_diagonal_special_sand_s@plt>
jmp    3d84 <dispatch_terrain_generic+0x774>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33d0 <border_nwse_double_diagonal_generic@plt>
jmp    3d84 <dispatch_terrain_generic+0x774>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3510 <border_nwse_double_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x4c(%rbp)
test   %eax,%eax
je     3de3 <dispatch_terrain_generic+0x7d3>
jmp    3d9d <dispatch_terrain_generic+0x78d>
mov    -0x4c(%rbp),%eax
sub    $0x4,%eax
je     3dbf <dispatch_terrain_generic+0x7af>
jmp    3dae <dispatch_terrain_generic+0x79e>
mov    -0x4c(%rbp),%eax
sub    $0x20,%eax
je     3dd1 <dispatch_terrain_generic+0x7c1>
jmp    3df5 <dispatch_terrain_generic+0x7e5>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33a0 <border_nwse_double_diagonal_special_sand_n@plt>
jmp    3e02 <dispatch_terrain_generic+0x7f2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3140 <border_nwse_double_diagonal_special_sand_s@plt>
jmp    3e02 <dispatch_terrain_generic+0x7f2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3530 <border_nesw_double_diagonal_generic@plt>
jmp    3e02 <dispatch_terrain_generic+0x7f2>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32a0 <border_nesw_double_diagonal_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %rax,-0x58(%rbp)
sub    $0x29,%rax
ja     3e87 <dispatch_terrain_generic+0x877>
mov    -0x58(%rbp),%rax
lea    0x15b0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3370 <border_nw_ext_corner_special_sand_short_hori@plt>
jmp    3e94 <dispatch_terrain_generic+0x884>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30e0 <border_nw_ext_corner_special_sand_long_hori@plt>
jmp    3e94 <dispatch_terrain_generic+0x884>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3380 <border_nw_ext_corner_special_sand_short_vert@plt>
jmp    3e94 <dispatch_terrain_generic+0x884>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3430 <border_nw_ext_corner_special_sand_long_vert@plt>
jmp    3e94 <dispatch_terrain_generic+0x884>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30d0 <border_nw_ext_corner_generic@plt>
jmp    3e94 <dispatch_terrain_generic+0x884>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3220 <border_nw_ext_corner_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x5c(%rbp)
test   %eax,%eax
je     3f61 <dispatch_terrain_generic+0x951>
jmp    3ead <dispatch_terrain_generic+0x89d>
mov    -0x5c(%rbp),%eax
sub    $0x1,%eax
je     3f19 <dispatch_terrain_generic+0x909>
jmp    3ebe <dispatch_terrain_generic+0x8ae>
mov    -0x5c(%rbp),%eax
sub    $0x3,%eax
je     3f2b <dispatch_terrain_generic+0x91b>
jmp    3ecf <dispatch_terrain_generic+0x8bf>
mov    -0x5c(%rbp),%eax
sub    $0x7,%eax
je     3f2b <dispatch_terrain_generic+0x91b>
jmp    3ee0 <dispatch_terrain_generic+0x8d0>
mov    -0x5c(%rbp),%eax
sub    $0x80,%eax
je     3f3d <dispatch_terrain_generic+0x92d>
jmp    3ef3 <dispatch_terrain_generic+0x8e3>
mov    -0x5c(%rbp),%eax
sub    $0x90,%eax
je     3f4f <dispatch_terrain_generic+0x93f>
jmp    3f06 <dispatch_terrain_generic+0x8f6>
mov    -0x5c(%rbp),%eax
sub    $0x94,%eax
je     3f4f <dispatch_terrain_generic+0x93f>
jmp    3f73 <dispatch_terrain_generic+0x963>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   33c0 <border_ne_ext_corner_special_sand_short_hori@plt>
jmp    3f80 <dispatch_terrain_generic+0x970>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3090 <border_ne_ext_corner_special_sand_long_hori@plt>
jmp    3f80 <dispatch_terrain_generic+0x970>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   30f0 <border_ne_ext_corner_special_sand_short_vert@plt>
jmp    3f80 <dispatch_terrain_generic+0x970>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3490 <border_ne_ext_corner_special_sand_long_vert@plt>
jmp    3f80 <dispatch_terrain_generic+0x970>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34a0 <border_ne_ext_corner_generic@plt>
jmp    3f80 <dispatch_terrain_generic+0x970>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3230 <border_ne_ext_corner_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x60(%rbp)
test   %eax,%eax
je     404d <dispatch_terrain_generic+0xa3d>
jmp    3f99 <dispatch_terrain_generic+0x989>
mov    -0x60(%rbp),%eax
sub    $0x1,%eax
je     4029 <dispatch_terrain_generic+0xa19>
jmp    3faa <dispatch_terrain_generic+0x99a>
mov    -0x60(%rbp),%eax
sub    $0x9,%eax
je     403b <dispatch_terrain_generic+0xa2b>
jmp    3fbb <dispatch_terrain_generic+0x9ab>
mov    -0x60(%rbp),%eax
sub    $0x29,%eax
je     403b <dispatch_terrain_generic+0xa2b>
jmp    3fcc <dispatch_terrain_generic+0x9bc>
mov    -0x60(%rbp),%eax
sub    $0x80,%eax
je     4005 <dispatch_terrain_generic+0x9f5>
jmp    3fdf <dispatch_terrain_generic+0x9cf>
mov    -0x60(%rbp),%eax
sub    $0xc0,%eax
je     4017 <dispatch_terrain_generic+0xa07>
jmp    3ff2 <dispatch_terrain_generic+0x9e2>
mov    -0x60(%rbp),%eax
sub    $0xe0,%eax
je     4017 <dispatch_terrain_generic+0xa07>
jmp    405f <dispatch_terrain_generic+0xa4f>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   32b0 <border_sw_ext_corner_special_sand_short_hori@plt>
jmp    406c <dispatch_terrain_generic+0xa5c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3080 <border_sw_ext_corner_special_sand_long_hori@plt>
jmp    406c <dispatch_terrain_generic+0xa5c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3180 <border_sw_ext_corner_special_sand_short_vert@plt>
jmp    406c <dispatch_terrain_generic+0xa5c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3410 <border_sw_ext_corner_special_sand_long_vert@plt>
jmp    406c <dispatch_terrain_generic+0xa5c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3260 <border_sw_ext_corner_generic@plt>
jmp    406c <dispatch_terrain_generic+0xa5c>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3360 <border_sw_ext_corner_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movzbl -0x6(%rbp),%eax
mov    %eax,-0x64(%rbp)
test   %eax,%eax
je     4137 <dispatch_terrain_generic+0xb27>
jmp    4085 <dispatch_terrain_generic+0xa75>
mov    -0x64(%rbp),%eax
sub    $0x4,%eax
je     4113 <dispatch_terrain_generic+0xb03>
jmp    4096 <dispatch_terrain_generic+0xa86>
mov    -0x64(%rbp),%eax
sub    $0x14,%eax
je     4125 <dispatch_terrain_generic+0xb15>
jmp    40a7 <dispatch_terrain_generic+0xa97>
mov    -0x64(%rbp),%eax
sub    $0x20,%eax
je     40ef <dispatch_terrain_generic+0xadf>
jmp    40b8 <dispatch_terrain_generic+0xaa8>
mov    -0x64(%rbp),%eax
sub    $0x60,%eax
je     4101 <dispatch_terrain_generic+0xaf1>
jmp    40c9 <dispatch_terrain_generic+0xab9>
mov    -0x64(%rbp),%eax
sub    $0x94,%eax
je     4125 <dispatch_terrain_generic+0xb15>
jmp    40dc <dispatch_terrain_generic+0xacc>
mov    -0x64(%rbp),%eax
sub    $0xe0,%eax
je     4101 <dispatch_terrain_generic+0xaf1>
jmp    4149 <dispatch_terrain_generic+0xb39>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   31d0 <border_se_ext_corner_special_sand_short_hori@plt>
jmp    4156 <dispatch_terrain_generic+0xb46>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3200 <border_se_ext_corner_special_sand_long_hori@plt>
jmp    4156 <dispatch_terrain_generic+0xb46>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3310 <border_se_ext_corner_special_sand_short_vert@plt>
jmp    4156 <dispatch_terrain_generic+0xb46>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3390 <border_se_ext_corner_special_sand_long_vert@plt>
jmp    4156 <dispatch_terrain_generic+0xb46>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   3210 <border_se_ext_corner_generic@plt>
jmp    4156 <dispatch_terrain_generic+0xb46>
mov    -0x10(%rbp),%rdi
mov    -0x18(%rbp),%rsi
call   34e0 <border_se_ext_corner_special_sand_only@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
mov    -0x10(%rbp),%rdi
call   3130 <borderless_generic@plt>
jmp    4175 <dispatch_terrain_generic+0xb65>
movl   $0x1,-0x4(%rbp)
jmp    417c <dispatch_terrain_generic+0xb6c>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0x70,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<dispatch_terrain_generic>:
push   %rax
mov    $0x1,%eax
add    $0x6a,%dil
cmp    $0xe9,%dil
ja     3db3 <dispatch_terrain_generic+0x7a3>
movzbl %dil,%edi
lea    0x9d1(%rip),%r8
movslq (%r8,%rdi,4),%rdi
add    %r8,%rdi
jmp    *%rdi
mov    %rdx,%rdi
cmp    $0x80,%sil
je     3982 <dispatch_terrain_generic+0x372>
test   %sil,%sil
je     398f <dispatch_terrain_generic+0x37f>
cmp    $0x20,%sil
jne    399c <dispatch_terrain_generic+0x38c>
mov    %rcx,%rsi
call   3320 <border_s_vertical_special_sand_w@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     39a9 <dispatch_terrain_generic+0x399>
cmp    $0x20,%sil
je     39b6 <dispatch_terrain_generic+0x3a6>
cmp    $0x1,%sil
jne    39c3 <dispatch_terrain_generic+0x3b3>
mov    %rcx,%rsi
call   3420 <border_w_horizontal_special_sand_n@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
cmp    $0x80,%sil
je     39d0 <dispatch_terrain_generic+0x3c0>
test   %sil,%sil
je     39dd <dispatch_terrain_generic+0x3cd>
cmp    $0x4,%sil
jne    39ea <dispatch_terrain_generic+0x3da>
mov    %rcx,%rsi
call   3300 <border_e_horizontal_special_sand_n@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     39f7 <dispatch_terrain_generic+0x3e7>
cmp    $0x4,%sil
je     3a04 <dispatch_terrain_generic+0x3f4>
cmp    $0x1,%sil
jne    3a11 <dispatch_terrain_generic+0x401>
mov    %rcx,%rsi
call   30a0 <border_n_vertical_special_sand_w@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     3a2e <dispatch_terrain_generic+0x41e>
cmp    $0x40,%sil
ja     3b3b <dispatch_terrain_generic+0x52b>
movzbl %sil,%eax
lea    0xe6e(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3480 <border_sw_ext_diagonal_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x29,%sil
ja     3bf9 <dispatch_terrain_generic+0x5e9>
movzbl %sil,%eax
lea    0xf98(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   33f0 <border_nw_ext_diagonal_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     3a58 <dispatch_terrain_generic+0x448>
cmp    $0x14,%sil
ja     3cd7 <dispatch_terrain_generic+0x6c7>
movzbl %sil,%eax
lea    0xf0d(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3460 <border_ne_ext_diagonal_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     37bb <dispatch_terrain_generic+0x1ab>
cmp    $0x20,%sil
ja     3a82 <dispatch_terrain_generic+0x472>
movzbl %sil,%eax
lea    0xd52(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3120 <border_se_ext_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0xbf,%sil
jg     3a93 <dispatch_terrain_generic+0x483>
cmp    $0x90,%sil
je     37d5 <dispatch_terrain_generic+0x1c5>
cmp    $0x94,%sil
jne    3bb9 <dispatch_terrain_generic+0x5a9>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   31a0 <border_se_ext_diagonal_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x29,%sil
ja     3d11 <dispatch_terrain_generic+0x701>
movzbl %sil,%eax
lea    0xc52(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   30e0 <border_nw_ext_corner_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     3c59 <dispatch_terrain_generic+0x649>
cmp    $0x20,%sil
je     3c66 <dispatch_terrain_generic+0x656>
cmp    $0x4,%sil
jne    3c73 <dispatch_terrain_generic+0x663>
mov    %rcx,%rsi
call   33a0 <border_nwse_double_diagonal_special_sand_n@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     3b07 <dispatch_terrain_generic+0x4f7>
mov    %rcx,%rsi
call   3290 <border_sw_int_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     3b14 <dispatch_terrain_generic+0x504>
mov    %rcx,%rsi
call   3050 <border_ne_int_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     3b21 <dispatch_terrain_generic+0x511>
mov    %rcx,%rsi
call   3040 <border_nw_int_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
call   3130 <borderless_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     3b55 <dispatch_terrain_generic+0x545>
cmp    $0x20,%sil
ja     3ce7 <dispatch_terrain_generic+0x6d7>
movzbl %sil,%eax
lea    0xaf2(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3210 <border_se_ext_corner_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     3ab3 <dispatch_terrain_generic+0x4a3>
cmp    $0x8,%sil
jg     3b79 <dispatch_terrain_generic+0x569>
test   %sil,%sil
je     3d58 <dispatch_terrain_generic+0x748>
cmp    $0x1,%sil
jne    3da6 <dispatch_terrain_generic+0x796>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3180 <border_sw_ext_corner_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
test   %sil,%sil
js     3add <dispatch_terrain_generic+0x4cd>
cmp    $0x7,%sil
ja     3d99 <dispatch_terrain_generic+0x789>
movzbl %sil,%eax
lea    0xb09(%rip),%rsi
movslq (%rsi,%rax,4),%rax
add    %rsi,%rax
jmp    *%rax
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3090 <border_ne_ext_corner_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
cmp    $0x80,%sil
je     3c80 <dispatch_terrain_generic+0x670>
test   %sil,%sil
je     3c8d <dispatch_terrain_generic+0x67d>
cmp    $0x1,%sil
jne    3c9a <dispatch_terrain_generic+0x68a>
mov    %rcx,%rsi
call   34c0 <border_nesw_double_diagonal_special_sand_n@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
test   %sil,%sil
je     3b2e <dispatch_terrain_generic+0x51e>
mov    %rcx,%rsi
call   3500 <border_se_int_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3350 <border_s_vertical_special_sand_e@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   34b0 <border_s_vertical_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   32d0 <border_s_vertical_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3280 <border_w_horizontal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   31c0 <border_w_horizontal_special_sand_s@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3100 <border_w_horizontal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3060 <border_e_horizontal_special_sand_s@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   32f0 <border_e_horizontal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3110 <border_e_horizontal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   32c0 <border_n_vertical_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   30c0 <border_n_vertical_special_sand_e@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   32e0 <border_n_vertical_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   33b0 <border_nw_ext_diagonal_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x80,%sil
je     3ca7 <dispatch_terrain_generic+0x697>
cmp    $0xc0,%sil
je     3a48 <dispatch_terrain_generic+0x438>
cmp    $0xe0,%sil
jne    3b45 <dispatch_terrain_generic+0x535>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3190 <border_sw_ext_diagonal_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x80,%sil
je     3cb7 <dispatch_terrain_generic+0x6a7>
cmp    $0x90,%sil
je     3a72 <dispatch_terrain_generic+0x462>
cmp    $0x94,%sil
jne    3cd7 <dispatch_terrain_generic+0x6c7>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3030 <border_ne_ext_diagonal_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x40,%sil
je     3aa3 <dispatch_terrain_generic+0x493>
cmp    $0x60,%sil
je     3aa3 <dispatch_terrain_generic+0x493>
jmp    3bb9 <dispatch_terrain_generic+0x5a9>
cmp    $0xc0,%sil
je     3aa3 <dispatch_terrain_generic+0x493>
cmp    $0xe0,%sil
jne    3bb9 <dispatch_terrain_generic+0x5a9>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3070 <border_se_ext_diagonal_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x80,%sil
je     3d7f <dispatch_terrain_generic+0x76f>
cmp    $0xc0,%sil
je     3acd <dispatch_terrain_generic+0x4bd>
cmp    $0xe0,%sil
jne    3da6 <dispatch_terrain_generic+0x796>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3080 <border_sw_ext_corner_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x80,%sil
je     3d8c <dispatch_terrain_generic+0x77c>
cmp    $0x90,%sil
je     3af7 <dispatch_terrain_generic+0x4e7>
cmp    $0x94,%sil
jne    3d99 <dispatch_terrain_generic+0x789>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3490 <border_ne_ext_corner_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3270 <border_sw_int_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3150 <border_ne_int_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3170 <border_nw_int_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3400 <border_se_int_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x60,%sil
je     3a48 <dispatch_terrain_generic+0x438>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3470 <border_sw_ext_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x94,%sil
je     3cc7 <dispatch_terrain_generic+0x6b7>
cmp    $0xe0,%sil
jne    3cf1 <dispatch_terrain_generic+0x6e1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3200 <border_se_ext_corner_special_sand_long_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x9,%sil
je     3b89 <dispatch_terrain_generic+0x579>
cmp    $0x29,%sil
jne    3da6 <dispatch_terrain_generic+0x796>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3410 <border_sw_ext_corner_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   31b0 <border_se_ext_diagonal_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3330 <border_se_ext_diagonal_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   34f0 <border_se_ext_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3440 <border_sw_ext_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   33e0 <border_sw_ext_diagonal_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   31f0 <border_nw_ext_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   31e0 <border_nw_ext_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3340 <border_nw_ext_diagonal_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   34d0 <border_nw_ext_diagonal_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3160 <border_ne_ext_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   30b0 <border_ne_ext_diagonal_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3430 <border_nw_ext_corner_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3530 <border_nesw_double_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3140 <border_nwse_double_diagonal_special_sand_s@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   32a0 <border_nesw_double_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3240 <border_nesw_double_diagonal_special_sand_s@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   33d0 <border_nwse_double_diagonal_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rcx,%rsi
call   3510 <border_nwse_double_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3450 <border_sw_ext_diagonal_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3250 <border_ne_ext_diagonal_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3390 <border_se_ext_corner_special_sand_long_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3520 <border_ne_ext_diagonal_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
cmp    $0x60,%sil
je     3b69 <dispatch_terrain_generic+0x559>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   34e0 <border_se_ext_corner_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   30d0 <border_nw_ext_corner_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3220 <border_nw_ext_corner_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3370 <border_nw_ext_corner_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3380 <border_nw_ext_corner_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3310 <border_se_ext_corner_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   31d0 <border_se_ext_corner_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3260 <border_sw_ext_corner_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   34a0 <border_ne_ext_corner_generic@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   33c0 <border_ne_ext_corner_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   32b0 <border_sw_ext_corner_special_sand_short_hori@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   30f0 <border_ne_ext_corner_special_sand_short_vert@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3230 <border_ne_ext_corner_special_sand_only@plt>
jmp    3db1 <dispatch_terrain_generic+0x7a1>
mov    %rdx,%rdi
mov    %rcx,%rsi
call   3360 <border_sw_ext_corner_special_sand_only@plt>
xor    %eax,%eax
pop    %rcx
ret

LLVM IR (-O0):
define i32 @dispatch_terrain_generic(i8 zeroext %0, i8 zeroext %1, i8* %2, i8* %3) {
%5 = alloca i32
%6 = alloca i8
%7 = alloca i8
%8 = alloca i8*
%9 = alloca i8*
store i8 %0, i8* %6
store i8 %1, i8* %7
store i8* %2, i8** %8
store i8* %3, i8** %9
%10 = load i8, i8* %6
%11 = zext i8 %10 to i32
switch i32 %11, label %415 [
i32 214, label %12
i32 215, label %12
i32 246, label %12
i32 247, label %12
i32 107, label %32
i32 111, label %32
i32 235, label %32
i32 239, label %32
i32 248, label %52
i32 249, label %52
i32 252, label %52
i32 253, label %52
i32 31, label %72
i32 63, label %72
i32 159, label %72
i32 191, label %72
i32 212, label %92
i32 240, label %92
i32 244, label %92
i32 232, label %120
i32 233, label %120
i32 105, label %120
i32 150, label %148
i32 151, label %148
i32 23, label %148
i32 43, label %176
i32 47, label %176
i32 15, label %176
i32 254, label %204
i32 251, label %218
i32 223, label %232
i32 127, label %246
i32 126, label %260
i32 219, label %280
i32 208, label %300
i32 104, label %328
i32 22, label %356
i32 11, label %384
i32 255, label %412
]
12: ; preds = %4, %4, %4, %4
%13 = load i8, i8* %7
%14 = zext i8 %13 to i32
switch i32 %14, label %27 [
i32 1, label %15
i32 32, label %19
i32 0, label %23
]
15: ; preds = %12
%16 = load i8*, i8** %8
%17 = load i8*, i8** %9
%18 = call i32 @border_w_horizontal_special_sand_n(i8* %16, i8* %17)
br label %31
19: ; preds = %12
%20 = load i8*, i8** %8
%21 = load i8*, i8** %9
%22 = call i32 @border_w_horizontal_special_sand_s(i8* %20, i8* %21)
br label %31
23: ; preds = %12
%24 = load i8*, i8** %8
%25 = load i8*, i8** %9
%26 = call i32 @border_w_horizontal_generic(i8* %24, i8* %25)
br label %31
27: ; preds = %12
%28 = load i8*, i8** %8
%29 = load i8*, i8** %9
%30 = call i32 @border_w_horizontal_special_sand_only(i8* %28, i8* %29)
br label %31
31: ; preds = %27, %23, %19, %15
br label %416
32: ; preds = %4, %4, %4, %4
%33 = load i8, i8* %7
%34 = zext i8 %33 to i32
switch i32 %34, label %47 [
i32 4, label %35
i32 128, label %39
i32 0, label %43
]
35: ; preds = %32
%36 = load i8*, i8** %8
%37 = load i8*, i8** %9
%38 = call i32 @border_e_horizontal_special_sand_n(i8* %36, i8* %37)
br label %51
39: ; preds = %32
%40 = load i8*, i8** %8
%41 = load i8*, i8** %9
%42 = call i32 @border_e_horizontal_special_sand_s(i8* %40, i8* %41)
br label %51
43: ; preds = %32
%44 = load i8*, i8** %8
%45 = load i8*, i8** %9
%46 = call i32 @border_e_horizontal_generic(i8* %44, i8* %45)
br label %51
47: ; preds = %32
%48 = load i8*, i8** %8
%49 = load i8*, i8** %9
%50 = call i32 @border_e_horizontal_special_sand_only(i8* %48, i8* %49)
br label %51
51: ; preds = %47, %43, %39, %35
br label %416
52: ; preds = %4, %4, %4, %4
%53 = load i8, i8* %7
%54 = zext i8 %53 to i32
switch i32 %54, label %67 [
i32 1, label %55
i32 4, label %59
i32 0, label %63
]
55: ; preds = %52
%56 = load i8*, i8** %8
%57 = load i8*, i8** %9
%58 = call i32 @border_n_vertical_special_sand_w(i8* %56, i8* %57)
br label %71
59: ; preds = %52
%60 = load i8*, i8** %8
%61 = load i8*, i8** %9
%62 = call i32 @border_n_vertical_special_sand_e(i8* %60, i8* %61)
br label %71
63: ; preds = %52
%64 = load i8*, i8** %8
%65 = load i8*, i8** %9
%66 = call i32 @border_n_vertical_generic(i8* %64, i8* %65)
br label %71
67: ; preds = %52
%68 = load i8*, i8** %8
%69 = load i8*, i8** %9
%70 = call i32 @border_n_vertical_special_sand_only(i8* %68, i8* %69)
br label %71
71: ; preds = %67, %63, %59, %55
br label %416
72: ; preds = %4, %4, %4, %4
%73 = load i8, i8* %7
%74 = zext i8 %73 to i32
switch i32 %74, label %87 [
i32 32, label %75
i32 128, label %79
i32 0, label %83
]
75: ; preds = %72
%76 = load i8*, i8** %8
%77 = load i8*, i8** %9
%78 = call i32 @border_s_vertical_special_sand_w(i8* %76, i8* %77)
br label %91
79: ; preds = %72
%80 = load i8*, i8** %8
%81 = load i8*, i8** %9
%82 = call i32 @border_s_vertical_special_sand_e(i8* %80, i8* %81)
br label %91
83: ; preds = %72
%84 = load i8*, i8** %8
%85 = load i8*, i8** %9
%86 = call i32 @border_s_vertical_generic(i8* %84, i8* %85)
br label %91
87: ; preds = %72
%88 = load i8*, i8** %8
%89 = load i8*, i8** %9
%90 = call i32 @border_s_vertical_special_sand_only(i8* %88, i8* %89)
br label %91
91: ; preds = %87, %83, %79, %75
br label %416
92: ; preds = %4, %4, %4
%93 = load i8, i8* %7
%94 = zext i8 %93 to i32
switch i32 %94, label %115 [
i32 4, label %95
i32 8, label %99
i32 9, label %99
i32 40, label %99
i32 41, label %99
i32 2, label %103
i32 3, label %103
i32 6, label %103
i32 7, label %103
i32 32, label %107
i32 0, label %111
]
95: ; preds = %92
%96 = load i8*, i8** %8
%97 = load i8*, i8** %9
%98 = call i32 @border_nw_ext_diagonal_special_sand_short_hori(i8* %96, i8* %97)
br label %119
99: ; preds = %92, %92, %92, %92
%100 = load i8*, i8** %8
%101 = load i8*, i8** %9
%102 = call i32 @border_nw_ext_diagonal_special_sand_long_vert(i8* %100, i8* %101)
br label %119
103: ; preds = %92, %92, %92, %92
%104 = load i8*, i8** %8
%105 = load i8*, i8** %9
%106 = call i32 @border_nw_ext_diagonal_special_sand_long_hori(i8* %104, i8* %105)
br label %119
107: ; preds = %92
%108 = load i8*, i8** %8
%109 = load i8*, i8** %9
%110 = call i32 @border_nw_ext_diagonal_special_sand_short_vert(i8* %108, i8* %109)
br label %119
111: ; preds = %92
%112 = load i8*, i8** %8
%113 = load i8*, i8** %9
%114 = call i32 @border_nw_ext_diagonal_generic(i8* %112, i8* %113)
br label %119
115: ; preds = %92
%116 = load i8*, i8** %8
%117 = load i8*, i8** %9
%118 = call i32 @border_nw_ext_diagonal_special_sand_only(i8* %116, i8* %117)
br label %119
119: ; preds = %115, %111, %107, %103, %99, %95
br label %416
120: ; preds = %4, %4, %4
%121 = load i8, i8* %7
%122 = zext i8 %121 to i32
switch i32 %122, label %143 [
i32 1, label %123
i32 2, label %127
i32 3, label %127
i32 6, label %127
i32 7, label %127
i32 16, label %131
i32 20, label %131
i32 144, label %131
i32 148, label %131
i32 128, label %135
i32 0, label %139
]
123: ; preds = %120
%124 = load i8*, i8** %8
%125 = load i8*, i8** %9
%126 = call i32 @border_ne_ext_diagonal_special_sand_short_hori(i8* %124, i8* %125)
br label %147
127: ; preds = %120, %120, %120, %120
%128 = load i8*, i8** %8
%129 = load i8*, i8** %9
%130 = call i32 @border_ne_ext_diagonal_special_sand_long_hori(i8* %128, i8* %129)
br label %147
131: ; preds = %120, %120, %120, %120
%132 = load i8*, i8** %8
%133 = load i8*, i8** %9
%134 = call i32 @border_ne_ext_diagonal_special_sand_long_vert(i8* %132, i8* %133)
br label %147
135: ; preds = %120
%136 = load i8*, i8** %8
%137 = load i8*, i8** %9
%138 = call i32 @border_ne_ext_diagonal_special_sand_short_vert(i8* %136, i8* %137)
br label %147
139: ; preds = %120
%140 = load i8*, i8** %8
%141 = load i8*, i8** %9
%142 = call i32 @border_ne_ext_diagonal_generic(i8* %140, i8* %141)
br label %147
143: ; preds = %120
%144 = load i8*, i8** %8
%145 = load i8*, i8** %9
%146 = call i32 @border_ne_ext_diagonal_special_sand_only(i8* %144, i8* %145)
br label %147
147: ; preds = %143, %139, %135, %131, %127, %123
br label %416
148: ; preds = %4, %4, %4
%149 = load i8, i8* %7
%150 = zext i8 %149 to i32
switch i32 %150, label %171 [
i32 1, label %151
i32 8, label %155
i32 9, label %155
i32 40, label %155
i32 41, label %155
i32 192, label %159
i32 224, label %159
i32 64, label %159
i32 96, label %159
i32 128, label %163
i32 0, label %167
]
151: ; preds = %148
%152 = load i8*, i8** %8
%153 = load i8*, i8** %9
%154 = call i32 @border_sw_ext_diagonal_special_sand_short_vert(i8* %152, i8* %153)
br label %175
155: ; preds = %148, %148, %148, %148
%156 = load i8*, i8** %8
%157 = load i8*, i8** %9
%158 = call i32 @border_sw_ext_diagonal_special_sand_long_vert(i8* %156, i8* %157)
br label %175
159: ; preds = %148, %148, %148, %148
%160 = load i8*, i8** %8
%161 = load i8*, i8** %9
%162 = call i32 @border_sw_ext_diagonal_special_sand_long_hori(i8* %160, i8* %161)
br label %175
163: ; preds = %148
%164 = load i8*, i8** %8
%165 = load i8*, i8** %9
%166 = call i32 @border_sw_ext_diagonal_special_sand_short_hori(i8* %164, i8* %165)
br label %175
167: ; preds = %148
%168 = load i8*, i8** %8
%169 = load i8*, i8** %9
%170 = call i32 @border_sw_ext_diagonal_generic(i8* %168, i8* %169)
br label %175
171: ; preds = %148
%172 = load i8*, i8** %8
%173 = load i8*, i8** %9
%174 = call i32 @border_sw_ext_diagonal_special_sand_only(i8* %172, i8* %173)
br label %175
175: ; preds = %171, %167, %163, %159, %155, %151
br label %416
176: ; preds = %4, %4, %4
%177 = load i8, i8* %7
%178 = zext i8 %177 to i32
switch i32 %178, label %199 [
i32 4, label %179
i32 16, label %183
i32 20, label %183
i32 144, label %183
i32 148, label %183
i32 64, label %187
i32 96, label %187
i32 192, label %187
i32 224, label %187
i32 32, label %191
i32 0, label %195
]
179: ; preds = %176
%180 = load i8*, i8** %8
%181 = load i8*, i8** %9
%182 = call i32 @border_se_ext_diagonal_special_sand_short_vert(i8* %180, i8* %181)
br label %203
183: ; preds = %176, %176, %176, %176
%184 = load i8*, i8** %8
%185 = load i8*, i8** %9
%186 = call i32 @border_se_ext_diagonal_special_sand_long_vert(i8* %184, i8* %185)
br label %203
187: ; preds = %176, %176, %176, %176
%188 = load i8*, i8** %8
%189 = load i8*, i8** %9
%190 = call i32 @border_se_ext_diagonal_special_sand_long_hori(i8* %188, i8* %189)
br label %203
191: ; preds = %176
%192 = load i8*, i8** %8
%193 = load i8*, i8** %9
%194 = call i32 @border_se_ext_diagonal_special_sand_short_hori(i8* %192, i8* %193)
br label %203
195: ; preds = %176
%196 = load i8*, i8** %8
%197 = load i8*, i8** %9
%198 = call i32 @border_se_ext_diagonal_generic(i8* %196, i8* %197)
br label %203
199: ; preds = %176
%200 = load i8*, i8** %8
%201 = load i8*, i8** %9
%202 = call i32 @border_se_ext_diagonal_special_sand_only(i8* %200, i8* %201)
br label %203
203: ; preds = %199, %195, %191, %187, %183, %179
br label %416
204: ; preds = %4
%205 = load i8, i8* %7
%206 = zext i8 %205 to i32
%207 = icmp eq i32 0, %206
br i1 %207, label %208, label %212
208: ; preds = %204
%209 = load i8*, i8** %8
%210 = load i8*, i8** %9
%211 = call i32 @border_nw_int_diagonal_generic(i8* %209, i8* %210)
br label %216
212: ; preds = %204
%213 = load i8*, i8** %8
%214 = load i8*, i8** %9
%215 = call i32 @border_nw_int_diagonal_special_sand_only(i8* %213, i8* %214)
br label %216
216: ; preds = %212, %208
%217 = phi i32 [ %211, %208 ], [ %215, %212 ]
br label %416
218: ; preds = %4
%219 = load i8, i8* %7
%220 = zext i8 %219 to i32
%221 = icmp eq i32 0, %220
br i1 %221, label %222, label %226
222: ; preds = %218
%223 = load i8*, i8** %8
%224 = load i8*, i8** %9
%225 = call i32 @border_ne_int_diagonal_generic(i8* %223, i8* %224)
br label %230
226: ; preds = %218
%227 = load i8*, i8** %8
%228 = load i8*, i8** %9
%229 = call i32 @border_ne_int_diagonal_special_sand_only(i8* %227, i8* %228)
br label %230
230: ; preds = %226, %222
%231 = phi i32 [ %225, %222 ], [ %229, %226 ]
br label %416
232: ; preds = %4
%233 = load i8, i8* %7
%234 = zext i8 %233 to i32
%235 = icmp eq i32 0, %234
br i1 %235, label %236, label %240
236: ; preds = %232
%237 = load i8*, i8** %8
%238 = load i8*, i8** %9
%239 = call i32 @border_sw_int_diagonal_generic(i8* %237, i8* %238)
br label %244
240: ; preds = %232
%241 = load i8*, i8** %8
%242 = load i8*, i8** %9
%243 = call i32 @border_sw_int_diagonal_special_sand_only(i8* %241, i8* %242)
br label %244
244: ; preds = %240, %236
%245 = phi i32 [ %239, %236 ], [ %243, %240 ]
br label %416
246: ; preds = %4
%247 = load i8, i8* %7
%248 = zext i8 %247 to i32
%249 = icmp eq i32 0, %248
br i1 %249, label %250, label %254
250: ; preds = %246
%251 = load i8*, i8** %8
%252 = load i8*, i8** %9
%253 = call i32 @border_se_int_diagonal_generic(i8* %251, i8* %252)
br label %258
254: ; preds = %246
%255 = load i8*, i8** %8
%256 = load i8*, i8** %9
%257 = call i32 @border_se_int_diagonal_special_sand_only(i8* %255, i8* %256)
br label %258
258: ; preds = %254, %250
%259 = phi i32 [ %253, %250 ], [ %257, %254 ]
br label %416
260: ; preds = %4
%261 = load i8, i8* %7
%262 = zext i8 %261 to i32
switch i32 %262, label %275 [
i32 1, label %263
i32 128, label %267
i32 0, label %271
]
263: ; preds = %260
%264 = load i8*, i8** %8
%265 = load i8*, i8** %9
%266 = call i32 @border_nesw_double_diagonal_special_sand_n(i8* %264, i8* %265)
br label %279
267: ; preds = %260
%268 = load i8*, i8** %8
%269 = load i8*, i8** %9
%270 = call i32 @border_nesw_double_diagonal_special_sand_s(i8* %268, i8* %269)
br label %279
271: ; preds = %260
%272 = load i8*, i8** %8
%273 = load i8*, i8** %9
%274 = call i32 @border_nwse_double_diagonal_generic(i8* %272, i8* %273)
br label %279
275: ; preds = %260
%276 = load i8*, i8** %8
%277 = load i8*, i8** %9
%278 = call i32 @border_nwse_double_diagonal_special_sand_only(i8* %276, i8* %277)
br label %279
279: ; preds = %275, %271, %267, %263
br label %416
280: ; preds = %4
%281 = load i8, i8* %7
%282 = zext i8 %281 to i32
switch i32 %282, label %295 [
i32 4, label %283
i32 32, label %287
i32 0, label %291
]
283: ; preds = %280
%284 = load i8*, i8** %8
%285 = load i8*, i8** %9
%286 = call i32 @border_nwse_double_diagonal_special_sand_n(i8* %284, i8* %285)
br label %299
287: ; preds = %280
%288 = load i8*, i8** %8
%289 = load i8*, i8** %9
%290 = call i32 @border_nwse_double_diagonal_special_sand_s(i8* %288, i8* %289)
br label %299
291: ; preds = %280
%292 = load i8*, i8** %8
%293 = load i8*, i8** %9
%294 = call i32 @border_nesw_double_diagonal_generic(i8* %292, i8* %293)
br label %299
295: ; preds = %280
%296 = load i8*, i8** %8
%297 = load i8*, i8** %9
%298 = call i32 @border_nesw_double_diagonal_special_sand_only(i8* %296, i8* %297)
br label %299
299: ; preds = %295, %291, %287, %283
br label %416
300: ; preds = %4
%301 = load i8, i8* %7
%302 = zext i8 %301 to i32
switch i32 %302, label %323 [
i32 4, label %303
i32 6, label %307
i32 7, label %307
i32 32, label %311
i32 40, label %315
i32 41, label %315
i32 0, label %319
]
303: ; preds = %300
%304 = load i8*, i8** %8
%305 = load i8*, i8** %9
%306 = call i32 @border_nw_ext_corner_special_sand_short_hori(i8* %304, i8* %305)
br label %327
307: ; preds = %300, %300
%308 = load i8*, i8** %8
%309 = load i8*, i8** %9
%310 = call i32 @border_nw_ext_corner_special_sand_long_hori(i8* %308, i8* %309)
br label %327
311: ; preds = %300
%312 = load i8*, i8** %8
%313 = load i8*, i8** %9
%314 = call i32 @border_nw_ext_corner_special_sand_short_vert(i8* %312, i8* %313)
br label %327
315: ; preds = %300, %300
%316 = load i8*, i8** %8
%317 = load i8*, i8** %9
%318 = call i32 @border_nw_ext_corner_special_sand_long_vert(i8* %316, i8* %317)
br label %327
319: ; preds = %300
%320 = load i8*, i8** %8
%321 = load i8*, i8** %9
%322 = call i32 @border_nw_ext_corner_generic(i8* %320, i8* %321)
br label %327
323: ; preds = %300
%324 = load i8*, i8** %8
%325 = load i8*, i8** %9
%326 = call i32 @border_nw_ext_corner_special_sand_only(i8* %324, i8* %325)
br label %327
327: ; preds = %323, %319, %315, %311, %307, %303
br label %416
328: ; preds = %4
%329 = load i8, i8* %7
%330 = zext i8 %329 to i32
switch i32 %330, label %351 [
i32 1, label %331
i32 3, label %335
i32 7, label %335
i32 128, label %339
i32 144, label %343
i32 148, label %343
i32 0, label %347
]
331: ; preds = %328
%332 = load i8*, i8** %8
%333 = load i8*, i8** %9
%334 = call i32 @border_ne_ext_corner_special_sand_short_hori(i8* %332, i8* %333)
br label %355
335: ; preds = %328, %328
%336 = load i8*, i8** %8
%337 = load i8*, i8** %9
%338 = call i32 @border_ne_ext_corner_special_sand_long_hori(i8* %336, i8* %337)
br label %355
339: ; preds = %328
%340 = load i8*, i8** %8
%341 = load i8*, i8** %9
%342 = call i32 @border_ne_ext_corner_special_sand_short_vert(i8* %340, i8* %341)
br label %355
343: ; preds = %328, %328
%344 = load i8*, i8** %8
%345 = load i8*, i8** %9
%346 = call i32 @border_ne_ext_corner_special_sand_long_vert(i8* %344, i8* %345)
br label %355
347: ; preds = %328
%348 = load i8*, i8** %8
%349 = load i8*, i8** %9
%350 = call i32 @border_ne_ext_corner_generic(i8* %348, i8* %349)
br label %355
351: ; preds = %328
%352 = load i8*, i8** %8
%353 = load i8*, i8** %9
%354 = call i32 @border_ne_ext_corner_special_sand_only(i8* %352, i8* %353)
br label %355
355: ; preds = %351, %347, %343, %339, %335, %331
br label %416
356: ; preds = %4
%357 = load i8, i8* %7
%358 = zext i8 %357 to i32
switch i32 %358, label %379 [
i32 128, label %359
i32 192, label %363
i32 224, label %363
i32 1, label %367
i32 9, label %371
i32 41, label %371
i32 0, label %375
]
359: ; preds = %356
%360 = load i8*, i8** %8
%361 = load i8*, i8** %9
%362 = call i32 @border_sw_ext_corner_special_sand_short_hori(i8* %360, i8* %361)
br label %383
363: ; preds = %356, %356
%364 = load i8*, i8** %8
%365 = load i8*, i8** %9
%366 = call i32 @border_sw_ext_corner_special_sand_long_hori(i8* %364, i8* %365)
br label %383
367: ; preds = %356
%368 = load i8*, i8** %8
%369 = load i8*, i8** %9
%370 = call i32 @border_sw_ext_corner_special_sand_short_vert(i8* %368, i8* %369)
br label %383
371: ; preds = %356, %356
%372 = load i8*, i8** %8
%373 = load i8*, i8** %9
%374 = call i32 @border_sw_ext_corner_special_sand_long_vert(i8* %372, i8* %373)
br label %383
375: ; preds = %356
%376 = load i8*, i8** %8
%377 = load i8*, i8** %9
%378 = call i32 @border_sw_ext_corner_generic(i8* %376, i8* %377)
br label %383
379: ; preds = %356
%380 = load i8*, i8** %8
%381 = load i8*, i8** %9
%382 = call i32 @border_sw_ext_corner_special_sand_only(i8* %380, i8* %381)
br label %383
383: ; preds = %379, %375, %371, %367, %363, %359
br label %416
384: ; preds = %4
%385 = load i8, i8* %7
%386 = zext i8 %385 to i32
switch i32 %386, label %407 [
i32 32, label %387
i32 96, label %391
i32 224, label %391
i32 4, label %395
i32 20, label %399
i32 148, label %399
i32 0, label %403
]
387: ; preds = %384
%388 = load i8*, i8** %8
%389 = load i8*, i8** %9
%390 = call i32 @border_se_ext_corner_special_sand_short_hori(i8* %388, i8* %389)
br label %411
391: ; preds = %384, %384
%392 = load i8*, i8** %8
%393 = load i8*, i8** %9
%394 = call i32 @border_se_ext_corner_special_sand_long_hori(i8* %392, i8* %393)
br label %411
395: ; preds = %384
%396 = load i8*, i8** %8
%397 = load i8*, i8** %9
%398 = call i32 @border_se_ext_corner_special_sand_short_vert(i8* %396, i8* %397)
br label %411
399: ; preds = %384, %384
%400 = load i8*, i8** %8
%401 = load i8*, i8** %9
%402 = call i32 @border_se_ext_corner_special_sand_long_vert(i8* %400, i8* %401)
br label %411
403: ; preds = %384
%404 = load i8*, i8** %8
%405 = load i8*, i8** %9
%406 = call i32 @border_se_ext_corner_generic(i8* %404, i8* %405)
br label %411
407: ; preds = %384
%408 = load i8*, i8** %8
%409 = load i8*, i8** %9
%410 = call i32 @border_se_ext_corner_special_sand_only(i8* %408, i8* %409)
br label %411
411: ; preds = %407, %403, %399, %395, %391, %387
br label %416
412: ; preds = %4
%413 = load i8*, i8** %8
%414 = call i32 @borderless_generic(i8* %413)
br label %416
415: ; preds = %4
store i32 1, i32* %5
br label %417
416: ; preds = %412, %411, %383, %355, %327, %299, %279, %258, %244, %230, %216, %203, %175, %147, %119, %91, %71, %51, %31
store i32 0, i32* %5
br label %417
417: ; preds = %416, %415
%418 = load i32, i32* %5
ret i32 %418
}

LLVM IR (-O2):
define i32 @dispatch_terrain_generic(i8 zeroext %0, i8 zeroext %1, i8* %2, i8* %3) {
switch i8 %0, label %189 [
i8 -42, label %5
i8 -41, label %5
i8 -10, label %5
i8 -9, label %5
i8 107, label %14
i8 111, label %14
i8 -21, label %14
i8 -17, label %14
i8 -8, label %23
i8 -7, label %23
i8 -4, label %23
i8 -3, label %23
i8 31, label %32
i8 63, label %32
i8 -97, label %32
i8 -65, label %32
i8 -44, label %41
i8 -16, label %41
i8 -12, label %41
i8 -24, label %54
i8 -23, label %54
i8 105, label %54
i8 -106, label %67
i8 -105, label %67
i8 23, label %67
i8 43, label %80
i8 47, label %80
i8 15, label %80
i8 -2, label %93
i8 -5, label %99
i8 -33, label %105
i8 127, label %111
i8 126, label %117
i8 -37, label %126
i8 -48, label %135
i8 104, label %148
i8 22, label %161
i8 11, label %174
i8 -1, label %187
]
5: ; preds = %4, %4, %4, %4
switch i8 %1, label %12 [
i8 1, label %6
i8 32, label %8
i8 0, label %10
]
6: ; preds = %5
%7 = tail call i32 @border_w_horizontal_special_sand_n(i8* %2, i8* %3)
br label %189
8: ; preds = %5
%9 = tail call i32 @border_w_horizontal_special_sand_s(i8* %2, i8* %3)
br label %189
10: ; preds = %5
%11 = tail call i32 @border_w_horizontal_generic(i8* %2, i8* %3)
br label %189
12: ; preds = %5
%13 = tail call i32 @border_w_horizontal_special_sand_only(i8* %2, i8* %3)
br label %189
14: ; preds = %4, %4, %4, %4
switch i8 %1, label %21 [
i8 4, label %15
i8 -128, label %17
i8 0, label %19
]
15: ; preds = %14
%16 = tail call i32 @border_e_horizontal_special_sand_n(i8* %2, i8* %3)
br label %189
17: ; preds = %14
%18 = tail call i32 @border_e_horizontal_special_sand_s(i8* %2, i8* %3)
br label %189
19: ; preds = %14
%20 = tail call i32 @border_e_horizontal_generic(i8* %2, i8* %3)
br label %189
21: ; preds = %14
%22 = tail call i32 @border_e_horizontal_special_sand_only(i8* %2, i8* %3)
br label %189
23: ; preds = %4, %4, %4, %4
switch i8 %1, label %30 [
i8 1, label %24
i8 4, label %26
i8 0, label %28
]
24: ; preds = %23
%25 = tail call i32 @border_n_vertical_special_sand_w(i8* %2, i8* %3)
br label %189
26: ; preds = %23
%27 = tail call i32 @border_n_vertical_special_sand_e(i8* %2, i8* %3)
br label %189
28: ; preds = %23
%29 = tail call i32 @border_n_vertical_generic(i8* %2, i8* %3)
br label %189
30: ; preds = %23
%31 = tail call i32 @border_n_vertical_special_sand_only(i8* %2, i8* %3)
br label %189
32: ; preds = %4, %4, %4, %4
switch i8 %1, label %39 [
i8 32, label %33
i8 -128, label %35
i8 0, label %37
]
33: ; preds = %32
%34 = tail call i32 @border_s_vertical_special_sand_w(i8* %2, i8* %3)
br label %189
35: ; preds = %32
%36 = tail call i32 @border_s_vertical_special_sand_e(i8* %2, i8* %3)
br label %189
37: ; preds = %32
%38 = tail call i32 @border_s_vertical_generic(i8* %2, i8* %3)
br label %189
39: ; preds = %32
%40 = tail call i32 @border_s_vertical_special_sand_only(i8* %2, i8* %3)
br label %189
41: ; preds = %4, %4, %4
switch i8 %1, label %52 [
i8 4, label %42
i8 8, label %44
i8 9, label %44
i8 40, label %44
i8 41, label %44
i8 2, label %46
i8 3, label %46
i8 6, label %46
i8 7, label %46
i8 32, label %48
i8 0, label %50
]
42: ; preds = %41
%43 = tail call i32 @border_nw_ext_diagonal_special_sand_short_hori(i8* %2, i8* %3)
br label %189
44: ; preds = %41, %41, %41, %41
%45 = tail call i32 @border_nw_ext_diagonal_special_sand_long_vert(i8* %2, i8* %3)
br label %189
46: ; preds = %41, %41, %41, %41
%47 = tail call i32 @border_nw_ext_diagonal_special_sand_long_hori(i8* %2, i8* %3)
br label %189
48: ; preds = %41
%49 = tail call i32 @border_nw_ext_diagonal_special_sand_short_vert(i8* %2, i8* %3)
br label %189
50: ; preds = %41
%51 = tail call i32 @border_nw_ext_diagonal_generic(i8* %2, i8* %3)
br label %189
52: ; preds = %41
%53 = tail call i32 @border_nw_ext_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
54: ; preds = %4, %4, %4
switch i8 %1, label %65 [
i8 1, label %55
i8 2, label %57
i8 3, label %57
i8 6, label %57
i8 7, label %57
i8 16, label %59
i8 20, label %59
i8 -112, label %59
i8 -108, label %59
i8 -128, label %61
i8 0, label %63
]
55: ; preds = %54
%56 = tail call i32 @border_ne_ext_diagonal_special_sand_short_hori(i8* %2, i8* %3)
br label %189
57: ; preds = %54, %54, %54, %54
%58 = tail call i32 @border_ne_ext_diagonal_special_sand_long_hori(i8* %2, i8* %3)
br label %189
59: ; preds = %54, %54, %54, %54
%60 = tail call i32 @border_ne_ext_diagonal_special_sand_long_vert(i8* %2, i8* %3)
br label %189
61: ; preds = %54
%62 = tail call i32 @border_ne_ext_diagonal_special_sand_short_vert(i8* %2, i8* %3)
br label %189
63: ; preds = %54
%64 = tail call i32 @border_ne_ext_diagonal_generic(i8* %2, i8* %3)
br label %189
65: ; preds = %54
%66 = tail call i32 @border_ne_ext_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
67: ; preds = %4, %4, %4
switch i8 %1, label %78 [
i8 1, label %68
i8 8, label %70
i8 9, label %70
i8 40, label %70
i8 41, label %70
i8 -64, label %72
i8 -32, label %72
i8 64, label %72
i8 96, label %72
i8 -128, label %74
i8 0, label %76
]
68: ; preds = %67
%69 = tail call i32 @border_sw_ext_diagonal_special_sand_short_vert(i8* %2, i8* %3)
br label %189
70: ; preds = %67, %67, %67, %67
%71 = tail call i32 @border_sw_ext_diagonal_special_sand_long_vert(i8* %2, i8* %3)
br label %189
72: ; preds = %67, %67, %67, %67
%73 = tail call i32 @border_sw_ext_diagonal_special_sand_long_hori(i8* %2, i8* %3)
br label %189
74: ; preds = %67
%75 = tail call i32 @border_sw_ext_diagonal_special_sand_short_hori(i8* %2, i8* %3)
br label %189
76: ; preds = %67
%77 = tail call i32 @border_sw_ext_diagonal_generic(i8* %2, i8* %3)
br label %189
78: ; preds = %67
%79 = tail call i32 @border_sw_ext_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
80: ; preds = %4, %4, %4
switch i8 %1, label %91 [
i8 4, label %81
i8 16, label %83
i8 20, label %83
i8 -112, label %83
i8 -108, label %83
i8 64, label %85
i8 96, label %85
i8 -64, label %85
i8 -32, label %85
i8 32, label %87
i8 0, label %89
]
81: ; preds = %80
%82 = tail call i32 @border_se_ext_diagonal_special_sand_short_vert(i8* %2, i8* %3)
br label %189
83: ; preds = %80, %80, %80, %80
%84 = tail call i32 @border_se_ext_diagonal_special_sand_long_vert(i8* %2, i8* %3)
br label %189
85: ; preds = %80, %80, %80, %80
%86 = tail call i32 @border_se_ext_diagonal_special_sand_long_hori(i8* %2, i8* %3)
br label %189
87: ; preds = %80
%88 = tail call i32 @border_se_ext_diagonal_special_sand_short_hori(i8* %2, i8* %3)
br label %189
89: ; preds = %80
%90 = tail call i32 @border_se_ext_diagonal_generic(i8* %2, i8* %3)
br label %189
91: ; preds = %80
%92 = tail call i32 @border_se_ext_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
93: ; preds = %4
%94 = icmp eq i8 %1, 0
br i1 %94, label %95, label %97
95: ; preds = %93
%96 = tail call i32 @border_nw_int_diagonal_generic(i8* %2, i8* %3)
br label %189
97: ; preds = %93
%98 = tail call i32 @border_nw_int_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
99: ; preds = %4
%100 = icmp eq i8 %1, 0
br i1 %100, label %101, label %103
101: ; preds = %99
%102 = tail call i32 @border_ne_int_diagonal_generic(i8* %2, i8* %3)
br label %189
103: ; preds = %99
%104 = tail call i32 @border_ne_int_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
105: ; preds = %4
%106 = icmp eq i8 %1, 0
br i1 %106, label %107, label %109
107: ; preds = %105
%108 = tail call i32 @border_sw_int_diagonal_generic(i8* %2, i8* %3)
br label %189
109: ; preds = %105
%110 = tail call i32 @border_sw_int_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
111: ; preds = %4
%112 = icmp eq i8 %1, 0
br i1 %112, label %113, label %115
113: ; preds = %111
%114 = tail call i32 @border_se_int_diagonal_generic(i8* %2, i8* %3)
br label %189
115: ; preds = %111
%116 = tail call i32 @border_se_int_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
117: ; preds = %4
switch i8 %1, label %124 [
i8 1, label %118
i8 -128, label %120
i8 0, label %122
]
118: ; preds = %117
%119 = tail call i32 @border_nesw_double_diagonal_special_sand_n(i8* %2, i8* %3)
br label %189
120: ; preds = %117
%121 = tail call i32 @border_nesw_double_diagonal_special_sand_s(i8* %2, i8* %3)
br label %189
122: ; preds = %117
%123 = tail call i32 @border_nwse_double_diagonal_generic(i8* %2, i8* %3)
br label %189
124: ; preds = %117
%125 = tail call i32 @border_nwse_double_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
126: ; preds = %4
switch i8 %1, label %133 [
i8 4, label %127
i8 32, label %129
i8 0, label %131
]
127: ; preds = %126
%128 = tail call i32 @border_nwse_double_diagonal_special_sand_n(i8* %2, i8* %3)
br label %189
129: ; preds = %126
%130 = tail call i32 @border_nwse_double_diagonal_special_sand_s(i8* %2, i8* %3)
br label %189
131: ; preds = %126
%132 = tail call i32 @border_nesw_double_diagonal_generic(i8* %2, i8* %3)
br label %189
133: ; preds = %126
%134 = tail call i32 @border_nesw_double_diagonal_special_sand_only(i8* %2, i8* %3)
br label %189
135: ; preds = %4
switch i8 %1, label %146 [
i8 4, label %136
i8 6, label %138
i8 7, label %138
i8 32, label %140
i8 40, label %142
i8 41, label %142
i8 0, label %144
]
136: ; preds = %135
%137 = tail call i32 @border_nw_ext_corner_special_sand_short_hori(i8* %2, i8* %3)
br label %189
138: ; preds = %135, %135
%139 = tail call i32 @border_nw_ext_corner_special_sand_long_hori(i8* %2, i8* %3)
br label %189
140: ; preds = %135
%141 = tail call i32 @border_nw_ext_corner_special_sand_short_vert(i8* %2, i8* %3)
br label %189
142: ; preds = %135, %135
%143 = tail call i32 @border_nw_ext_corner_special_sand_long_vert(i8* %2, i8* %3)
br label %189
144: ; preds = %135
%145 = tail call i32 @border_nw_ext_corner_generic(i8* %2, i8* %3)
br label %189
146: ; preds = %135
%147 = tail call i32 @border_nw_ext_corner_special_sand_only(i8* %2, i8* %3)
br label %189
148: ; preds = %4
switch i8 %1, label %159 [
i8 1, label %149
i8 3, label %151
i8 7, label %151
i8 -128, label %153
i8 -112, label %155
i8 -108, label %155
i8 0, label %157
]
149: ; preds = %148
%150 = tail call i32 @border_ne_ext_corner_special_sand_short_hori(i8* %2, i8* %3)
br label %189
151: ; preds = %148, %148
%152 = tail call i32 @border_ne_ext_corner_special_sand_long_hori(i8* %2, i8* %3)
br label %189
153: ; preds = %148
%154 = tail call i32 @border_ne_ext_corner_special_sand_short_vert(i8* %2, i8* %3)
br label %189
155: ; preds = %148, %148
%156 = tail call i32 @border_ne_ext_corner_special_sand_long_vert(i8* %2, i8* %3)
br label %189
157: ; preds = %148
%158 = tail call i32 @border_ne_ext_corner_generic(i8* %2, i8* %3)
br label %189
159: ; preds = %148
%160 = tail call i32 @border_ne_ext_corner_special_sand_only(i8* %2, i8* %3)
br label %189
161: ; preds = %4
switch i8 %1, label %172 [
i8 -128, label %162
i8 -64, label %164
i8 -32, label %164
i8 1, label %166
i8 9, label %168
i8 41, label %168
i8 0, label %170
]
162: ; preds = %161
%163 = tail call i32 @border_sw_ext_corner_special_sand_short_hori(i8* %2, i8* %3)
br label %189
164: ; preds = %161, %161
%165 = tail call i32 @border_sw_ext_corner_special_sand_long_hori(i8* %2, i8* %3)
br label %189
166: ; preds = %161
%167 = tail call i32 @border_sw_ext_corner_special_sand_short_vert(i8* %2, i8* %3)
br label %189
168: ; preds = %161, %161
%169 = tail call i32 @border_sw_ext_corner_special_sand_long_vert(i8* %2, i8* %3)
br label %189
170: ; preds = %161
%171 = tail call i32 @border_sw_ext_corner_generic(i8* %2, i8* %3)
br label %189
172: ; preds = %161
%173 = tail call i32 @border_sw_ext_corner_special_sand_only(i8* %2, i8* %3)
br label %189
174: ; preds = %4
switch i8 %1, label %185 [
i8 32, label %175
i8 96, label %177
i8 -32, label %177
i8 4, label %179
i8 20, label %181
i8 -108, label %181
i8 0, label %183
]
175: ; preds = %174
%176 = tail call i32 @border_se_ext_corner_special_sand_short_hori(i8* %2, i8* %3)
br label %189
177: ; preds = %174, %174
%178 = tail call i32 @border_se_ext_corner_special_sand_long_hori(i8* %2, i8* %3)
br label %189
179: ; preds = %174
%180 = tail call i32 @border_se_ext_corner_special_sand_short_vert(i8* %2, i8* %3)
br label %189
181: ; preds = %174, %174
%182 = tail call i32 @border_se_ext_corner_special_sand_long_vert(i8* %2, i8* %3)
br label %189
183: ; preds = %174
%184 = tail call i32 @border_se_ext_corner_generic(i8* %2, i8* %3)
br label %189
185: ; preds = %174
%186 = tail call i32 @border_se_ext_corner_special_sand_only(i8* %2, i8* %3)
br label %189
187: ; preds = %4
%188 = tail call i32 @borderless_generic(i8* %2)
br label %189
189: ; preds = %187, %12, %10, %8, %6, %21, %19, %17, %15, %30, %28, %26, %24, %39, %37, %35, %33, %52, %50, %48, %46, %44, %42, %65, %63, %61, %59, %57, %55, %78, %76, %74, %72, %70, %68, %91, %89, %87, %85, %83, %81, %97, %95, %103, %101, %109, %107, %115, %113, %124, %122, %120, %118, %133, %131, %129, %127, %146, %144, %142, %140, %138, %136, %159, %157, %155, %153, %151, %149, %172, %170, %168, %166, %164, %162, %185, %183, %181, %179, %177, %175, %4
%190 = phi i32 [ 1, %4 ], [ 0, %175 ], [ 0, %177 ], [ 0, %179 ], [ 0, %181 ], [ 0, %183 ], [ 0, %185 ], [ 0, %162 ], [ 0, %164 ], [ 0, %166 ], [ 0, %168 ], [ 0, %170 ], [ 0, %172 ], [ 0, %149 ], [ 0, %151 ], [ 0, %153 ], [ 0, %155 ], [ 0, %157 ], [ 0, %159 ], [ 0, %136 ], [ 0, %138 ], [ 0, %140 ], [ 0, %142 ], [ 0, %144 ], [ 0, %146 ], [ 0, %127 ], [ 0, %129 ], [ 0, %131 ], [ 0, %133 ], [ 0, %118 ], [ 0, %120 ], [ 0, %122 ], [ 0, %124 ], [ 0, %113 ], [ 0, %115 ], [ 0, %107 ], [ 0, %109 ], [ 0, %101 ], [ 0, %103 ], [ 0, %95 ], [ 0, %97 ], [ 0, %81 ], [ 0, %83 ], [ 0, %85 ], [ 0, %87 ], [ 0, %89 ], [ 0, %91 ], [ 0, %68 ], [ 0, %70 ], [ 0, %72 ], [ 0, %74 ], [ 0, %76 ], [ 0, %78 ], [ 0, %55 ], [ 0, %57 ], [ 0, %59 ], [ 0, %61 ], [ 0, %63 ], [ 0, %65 ], [ 0, %42 ], [ 0, %44 ], [ 0, %46 ], [ 0, %48 ], [ 0, %50 ], [ 0, %52 ], [ 0, %33 ], [ 0, %35 ], [ 0, %37 ], [ 0, %39 ], [ 0, %24 ], [ 0, %26 ], [ 0, %28 ], [ 0, %30 ], [ 0, %15 ], [ 0, %17 ], [ 0, %19 ], [ 0, %21 ], [ 0, %6 ], [ 0, %8 ], [ 0, %10 ], [ 0, %12 ], [ 0, %187 ]
ret i32 %190
}