Skip to content

codegen quality: std.MultiArrayList(TaggedUnion).get code size increases with field count #22784

@Techatrix

Description

@Techatrix

The implementation of std.MultiArrayList uses an inline else to construct a tagged union from the tag and data which leads to bad code generation in all release modes.

https://godbolt.org/z/7Kxz9q8fG

Show Code
const std = @import("std");

export fn foo(
    list_opaque: *align(@alignOf(std.MultiArrayList(Unwrapped)))std.MultiArrayList(Unwrapped),
) void {
    var list: *std.MultiArrayList(Unwrapped) = @ptrCast(list_opaque);
    std.mem.doNotOptimizeAway(list.get(0));
}

const Tag = std.meta.Tag(Unwrapped);
const Data = @Type(.{
    .@"union" = .{
        .layout = .auto,
        .tag_type = null,
        .fields = std.meta.fields(Unwrapped),
        .decls = &.{},
    },
});

pub const Unwrapped = union(enum) {
    root,
    @"usingnamespace": u32,
    test_decl: extern struct { name_token: u32, block: u32 },
    global_var_decl: extern struct { extra: u32, init: u32 },
    local_var_decl: extern struct { extra: u32, init: u32 },
    simple_var_decl: extern struct { ty: u32, init: u32 },
    aligned_var_decl: extern struct { alignment: u32, init: u32 },
    @"errdefer": extern struct { payload: u32, expr: u32 },
    @"defer": u32,
    @"catch": extern struct { lhs: u32, rhs: u32 },
    field_access: extern struct { lhs: u32, field_name: u32 },
    unwrap_optional: extern struct { lhs: u32, question_mark: u32 },
    equal_equal: extern struct { lhs: u32, rhs: u32 },
    bang_equal: extern struct { lhs: u32, rhs: u32 },
    less_than: extern struct { lhs: u32, rhs: u32 },
    greater_than: extern struct { lhs: u32, rhs: u32 },
    less_or_equal: extern struct { lhs: u32, rhs: u32 },
    greater_or_equal: extern struct { lhs: u32, rhs: u32 },
    assign_mul: extern struct { lhs: u32, rhs: u32 },
    assign_div: extern struct { lhs: u32, rhs: u32 },
    assign_mod: extern struct { lhs: u32, rhs: u32 },
    assign_add: extern struct { lhs: u32, rhs: u32 },
    assign_sub: extern struct { lhs: u32, rhs: u32 },
    assign_shl: extern struct { lhs: u32, rhs: u32 },
    assign_shl_sat: extern struct { lhs: u32, rhs: u32 },
    assign_shr: extern struct { lhs: u32, rhs: u32 },
    assign_bit_and: extern struct { lhs: u32, rhs: u32 },
    assign_bit_xor: extern struct { lhs: u32, rhs: u32 },
    assign_bit_or: extern struct { lhs: u32, rhs: u32 },
    assign_mul_wrap: extern struct { lhs: u32, rhs: u32 },
    assign_add_wrap: extern struct { lhs: u32, rhs: u32 },
    assign_sub_wrap: extern struct { lhs: u32, rhs: u32 },
    assign_mul_sat: extern struct { lhs: u32, rhs: u32 },
    assign_add_sat: extern struct { lhs: u32, rhs: u32 },
    assign_sub_sat: extern struct { lhs: u32, rhs: u32 },
    assign: extern struct { lhs: u32, rhs: u32 },
    assign_destructure: extern struct { extra: u32, init: u32 },
    merge_error_sets: extern struct { lhs: u32, rhs: u32 },
    mul: extern struct { lhs: u32, rhs: u32 },
    div: extern struct { lhs: u32, rhs: u32 },
    mod: extern struct { lhs: u32, rhs: u32 },
    array_mult: extern struct { lhs: u32, rhs: u32 },
    mul_wrap: extern struct { lhs: u32, rhs: u32 },
    mul_sat: extern struct { lhs: u32, rhs: u32 },
    add: extern struct { lhs: u32, rhs: u32 },
    sub: extern struct { lhs: u32, rhs: u32 },
    array_cat: extern struct { lhs: u32, rhs: u32 },
    add_wrap: extern struct { lhs: u32, rhs: u32 },
    sub_wrap: extern struct { lhs: u32, rhs: u32 },
    add_sat: extern struct { lhs: u32, rhs: u32 },
    sub_sat: extern struct { lhs: u32, rhs: u32 },
    shl: extern struct { lhs: u32, rhs: u32 },
    shl_sat: extern struct { lhs: u32, rhs: u32 },
    shr: extern struct { lhs: u32, rhs: u32 },
    bit_and: extern struct { lhs: u32, rhs: u32 },
    bit_xor: extern struct { lhs: u32, rhs: u32 },
    bit_or: extern struct { lhs: u32, rhs: u32 },
    @"orelse": extern struct { lhs: u32, rhs: u32 },
    bool_and: extern struct { lhs: u32, rhs: u32 },
    bool_or: extern struct { lhs: u32, rhs: u32 },
    bool_not: u32,
    negation: u32,
    bit_not: u32,
    negation_wrap: u32,
    address_of: u32,
    @"try": u32,
    @"await": u32,
    optional_type: u32,
    array_type: extern struct { lhs: u32, rhs: u32 },
    array_type_sentinel,
    ptr_type_aligned: extern struct { alignment: u32, elem_type: u32 },
    ptr_type_sentinel: extern struct { sentinel: u32, elem_type: u32 },
    ptr_type: extern struct { extra: u32, elem_type: u32 },
    ptr_type_bit_range: extern struct { extra: u32, elem_type: u32 },
    slice_open: extern struct { lhs: u32, rhs: u32 },
    slice: extern struct { lhs: u32, extra: u32 },
    slice_sentinel: extern struct { lhs: u32, extra: u32 },
    deref: u32,
    array_access: extern struct { lhs: u32, rhs: u32 },
    array_init_one: extern struct { lhs: u32, rhs: u32 },
    array_init_one_comma: extern struct { lhs: u32, rhs: u32 },
    array_init_dot_two: [2]u32,
    array_init_dot_two_comma: [2]u32,
    array_init_dot: extern struct { start: u32, end: u32 },
    array_init_dot_comma: extern struct { start: u32, end: u32 },
    array_init: extern struct { lhs: u32, extra: u32 },
    array_init_comma: extern struct { lhs: u32, extra: u32 },
    struct_init_one: extern struct { lhs: u32, first_field_init: u32 },
    struct_init_one_comma: extern struct { lhs: u32, first_field_init: u32 },
    struct_init_dot_two: [2]u32,
    struct_init_dot_two_comma: [2]u32,
    struct_init_dot: extern struct { start: u32, end: u32 },
    struct_init_dot_comma: extern struct { start: u32, end: u32 },
    struct_init: extern struct { lhs: u32, extra: u32 },
    struct_init_comma: extern struct { lhs: u32, extra: u32 },
    call_one: extern struct { lhs: u32, first_arg: u32 },
    call_one_comma: extern struct { lhs: u32, first_arg: u32 },
    async_call_one: extern struct { lhs: u32, first_arg: u32 },
    async_call_one_comma: extern struct { lhs: u32, first_arg: u32 },
    call: extern struct { lhs: u32, extra: u32 },
    call_comma: extern struct { lhs: u32, extra: u32 },
    async_call: extern struct { lhs: u32, extra: u32 },
    async_call_comma: extern struct { lhs: u32, extra: u32 },
    @"switch": extern struct { lhs: u32, extra: u32 },
    switch_comma: extern struct { lhs: u32, extra: u32 },
    switch_case_one: extern struct { lhs: u32, rhs: u32 },
    switch_case_inline_one: extern struct { lhs: u32, rhs: u32 },
    switch_case: extern struct { extra: u32, rhs: u32 },
    switch_case_inline: extern struct { extra: u32, rhs: u32 },
    switch_range: extern struct { lhs: u32, rhs: u32 },
    while_simple: extern struct { lhs: u32, rhs: u32 },
    while_cont: extern struct { lhs: u32, extra: u32 },
    @"while": extern struct { lhs: u32, rhs: u32 },
    for_simple: extern struct { lhs: u32, rhs: u32 },
    @"for": extern struct { lhs: u32, data: u32 },
    for_range: extern struct { lhs: u32, rhs: u32 },
    if_simple: extern struct { lhs: u32, rhs: u32 },
    @"if": extern struct { lhs: u32, rhs: u32 },
    @"suspend": u32,
    @"resume": u32,
    @"continue": extern struct { label: u32, expr: u32 },
    @"break": extern struct { label: u32, expr: u32 },
    @"return": u32,
    fn_proto_simple: extern struct { first_param_ty: u32, return_type: u32 },
    fn_proto_multi: extern struct { extra: u32, return_type: u32 },
    fn_proto_one: extern struct { extra: u32, return_type: u32 },
    fn_proto: extern struct { extra: u32, return_type: u32 },
    fn_decl: extern struct { fn_prot: u32, body: u32 },
    anyframe_type: extern struct { right_arrow: u32, elem_ty: u32 },
    anyframe_literal,
    char_literal,
    number_literal,
    unreachable_literal,
    identifier,
    enum_literal: u32,
    string_literal,
    multiline_string_literal: extern struct { start: u32, end: u32 },
    grouped_expression: extern struct { expr: u32, r_paren: u32 },
    builtin_call_two: [2]u32,
    builtin_call_two_comma: [2]u32,
    builtin_call: extern struct { start: u32, end: u32 },
    builtin_call_comma: extern struct { start: u32, end: u32 },
    error_set_decl: u32,
    container_decl: extern struct { start: u32, end: u32 },
    container_decl_trailing: extern struct { start: u32, end: u32 },
    container_decl_two: [2]u32,
    container_decl_two_trailing: [2]u32,
    container_decl_arg: extern struct { lhs: u32, extra: u32 },
    container_decl_arg_trailing: extern struct { lhs: u32, extra: u32 },
    tagged_union: extern struct { start: u32, end: u32 },
    tagged_union_trailing: extern struct { start: u32, end: u32 },
    tagged_union_two: [2]u32,
    tagged_union_two_trailing: [2]u32,
    tagged_union_enum_tag: extern struct { lhs: u32, extra: u32 },
    tagged_union_enum_tag_trailing: extern struct { lhs: u32, extra: u32 },
    container_field_init: extern struct { ty: u32, default_init: u32 },
    container_field_align: extern struct { ty: u32, alignment: u32 },
    container_field: extern struct { ty: u32, extra: u32 },
    @"comptime": u32,
    @"nosuspend": u32,
    block_two: [2]u32,
    block_two_semicolon: [2]u32,
    block: extern struct { start: u32, end: u32 },
    block_semicolon: extern struct { start: u32, end: u32 },
    asm_simple: extern struct { lhs: u32, r_paren: u32 },
    @"asm": extern struct { lhs: u32, extra: u32 },
    asm_output: extern struct { lhs: u32, r_paren: u32 },
    asm_input: extern struct { lhs: u32, r_paren: u32 },
    error_value: extern struct { error_token: u32, name: u32 },
    error_union: extern struct { lhs: u32, rhs: u32 },
};
Show Disassembly
$ zig version
0.14.0-dev.2940+d0d5ca2b6
$ zig build-obj foo.zig -OReleaseFast
$ objdump -d foo.o
foo.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <foo>:
   0:   55                      push   %rbp
   1:   48 89 e5                mov    %rsp,%rbp
   4:   48 8b 07                mov    (%rdi),%rax
   7:   48 8b 4f 10             mov    0x10(%rdi),%rcx
   b:   48 8d 14 c8             lea    (%rax,%rcx,8),%rdx
   f:   48 85 c9                test   %rcx,%rcx
  12:   48 b9 aa aa aa aa aa    movabs $0xaaaaaaaaaaaaaaaa,%rcx
  19:   aa aa aa 
  1c:   48 0f 44 d1             cmove  %rcx,%rdx
  20:   0f b6 12                movzbl (%rdx),%edx
  23:   48 0f 44 c1             cmove  %rcx,%rax
  27:   48 8b 00                mov    (%rax),%rax
  2a:   ff 24 d5 00 00 00 00    jmp    *0x0(,%rdx,8)
  31:   b8 00 00 00 00          mov    $0x0,%eax
  36:   e9 49 08 00 00          jmp    884 <foo+0x884>
  3b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  3f:   c6 45 f8 03             movb   $0x3,-0x8(%rbp)
  43:   e9 38 08 00 00          jmp    880 <foo+0x880>
  48:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  4c:   c6 45 f8 26             movb   $0x26,-0x8(%rbp)
  50:   e9 2b 08 00 00          jmp    880 <foo+0x880>
  55:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  59:   c6 45 f8 2e             movb   $0x2e,-0x8(%rbp)
  5d:   e9 1e 08 00 00          jmp    880 <foo+0x880>
  62:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  66:   c6 45 f8 0c             movb   $0xc,-0x8(%rbp)
  6a:   e9 11 08 00 00          jmp    880 <foo+0x880>
  6f:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  73:   c6 45 f8 25             movb   $0x25,-0x8(%rbp)
  77:   e9 04 08 00 00          jmp    880 <foo+0x880>
  7c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  80:   c6 45 f8 14             movb   $0x14,-0x8(%rbp)
  84:   e9 f7 07 00 00          jmp    880 <foo+0x880>
  89:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  8d:   c6 45 f8 16             movb   $0x16,-0x8(%rbp)
  91:   e9 ea 07 00 00          jmp    880 <foo+0x880>
  96:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  9a:   c6 45 f8 3b             movb   $0x3b,-0x8(%rbp)
  9e:   e9 dd 07 00 00          jmp    880 <foo+0x880>
  a3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  a7:   c6 45 f8 1f             movb   $0x1f,-0x8(%rbp)
  ab:   e9 d0 07 00 00          jmp    880 <foo+0x880>
  b0:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  b4:   c6 45 f8 2f             movb   $0x2f,-0x8(%rbp)
  b8:   e9 c3 07 00 00          jmp    880 <foo+0x880>
  bd:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  c1:   c6 45 f8 55             movb   $0x55,-0x8(%rbp)
  c5:   e9 b6 07 00 00          jmp    880 <foo+0x880>
  ca:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  ce:   c6 45 f8 09             movb   $0x9,-0x8(%rbp)
  d2:   e9 a9 07 00 00          jmp    880 <foo+0x880>
  d7:   89 45 f0                mov    %eax,-0x10(%rbp)
  da:   c6 45 f8 3c             movb   $0x3c,-0x8(%rbp)
  de:   e9 9d 07 00 00          jmp    880 <foo+0x880>
  e3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  e7:   c6 45 f8 20             movb   $0x20,-0x8(%rbp)
  eb:   e9 90 07 00 00          jmp    880 <foo+0x880>
  f0:   48 89 45 f0             mov    %rax,-0x10(%rbp)
  f4:   c6 45 f8 02             movb   $0x2,-0x8(%rbp)
  f8:   e9 83 07 00 00          jmp    880 <foo+0x880>
  fd:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 101:   c6 45 f8 56             movb   $0x56,-0x8(%rbp)
 105:   e9 76 07 00 00          jmp    880 <foo+0x880>
 10a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 10e:   c6 45 f8 4e             movb   $0x4e,-0x8(%rbp)
 112:   e9 69 07 00 00          jmp    880 <foo+0x880>
 117:   89 45 f0                mov    %eax,-0x10(%rbp)
 11a:   c6 45 f8 3f             movb   $0x3f,-0x8(%rbp)
 11e:   e9 5d 07 00 00          jmp    880 <foo+0x880>
 123:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 127:   c6 45 f8 0a             movb   $0xa,-0x8(%rbp)
 12b:   e9 50 07 00 00          jmp    880 <foo+0x880>
 130:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 134:   c6 45 f8 0d             movb   $0xd,-0x8(%rbp)
 138:   e9 43 07 00 00          jmp    880 <foo+0x880>
 13d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 141:   c6 45 f8 5a             movb   $0x5a,-0x8(%rbp)
 145:   e9 36 07 00 00          jmp    880 <foo+0x880>
 14a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 14e:   c6 45 f8 31             movb   $0x31,-0x8(%rbp)
 152:   e9 29 07 00 00          jmp    880 <foo+0x880>
 157:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 15b:   c6 45 f8 49             movb   $0x49,-0x8(%rbp)
 15f:   e9 1c 07 00 00          jmp    880 <foo+0x880>
 164:   89 45 f0                mov    %eax,-0x10(%rbp)
 167:   c6 45 f8 40             movb   $0x40,-0x8(%rbp)
 16b:   e9 10 07 00 00          jmp    880 <foo+0x880>
 170:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 174:   c6 45 f8 63             movb   $0x63,-0x8(%rbp)
 178:   e9 03 07 00 00          jmp    880 <foo+0x880>
 17d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 181:   c6 45 f8 0e             movb   $0xe,-0x8(%rbp)
 185:   e9 f6 06 00 00          jmp    880 <foo+0x880>
 18a:   89 45 f0                mov    %eax,-0x10(%rbp)
 18d:   c6 45 f8 01             movb   $0x1,-0x8(%rbp)
 191:   e9 ea 06 00 00          jmp    880 <foo+0x880>
 196:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 19a:   c6 45 f8 5c             movb   $0x5c,-0x8(%rbp)
 19e:   e9 dd 06 00 00          jmp    880 <foo+0x880>
 1a3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 1a7:   c6 45 f8 11             movb   $0x11,-0x8(%rbp)
 1ab:   e9 d0 06 00 00          jmp    880 <foo+0x880>
 1b0:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 1b4:   c6 45 f8 4c             movb   $0x4c,-0x8(%rbp)
 1b8:   e9 c3 06 00 00          jmp    880 <foo+0x880>
 1bd:   89 45 f0                mov    %eax,-0x10(%rbp)
 1c0:   c6 45 f8 77             movb   $0x77,-0x8(%rbp)
 1c4:   e9 b7 06 00 00          jmp    880 <foo+0x880>
 1c9:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 1cd:   c6 45 f8 51             movb   $0x51,-0x8(%rbp)
 1d1:   e9 aa 06 00 00          jmp    880 <foo+0x880>
 1d6:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 1da:   c6 45 f8 7e             movb   $0x7e,-0x8(%rbp)
 1de:   e9 9d 06 00 00          jmp    880 <foo+0x880>
 1e3:   89 45 f0                mov    %eax,-0x10(%rbp)
 1e6:   c6 45 f8 43             movb   $0x43,-0x8(%rbp)
 1ea:   e9 91 06 00 00          jmp    880 <foo+0x880>
 1ef:   89 45 f0                mov    %eax,-0x10(%rbp)
 1f2:   c6 45 f8 08             movb   $0x8,-0x8(%rbp)
 1f6:   e9 85 06 00 00          jmp    880 <foo+0x880>
 1fb:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 1ff:   c6 45 f8 12             movb   $0x12,-0x8(%rbp)
 203:   e9 78 06 00 00          jmp    880 <foo+0x880>
 208:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 20c:   c6 45 f8 37             movb   $0x37,-0x8(%rbp)
 210:   e9 6b 06 00 00          jmp    880 <foo+0x880>
 215:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 219:   c6 45 f8 1a             movb   $0x1a,-0x8(%rbp)
 21d:   e9 5e 06 00 00          jmp    880 <foo+0x880>
 222:   89 45 f0                mov    %eax,-0x10(%rbp)
 225:   c6 45 f8 3d             movb   $0x3d,-0x8(%rbp)
 229:   e9 52 06 00 00          jmp    880 <foo+0x880>
 22e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 232:   c6 45 f8 38             movb   $0x38,-0x8(%rbp)
 236:   e9 45 06 00 00          jmp    880 <foo+0x880>
 23b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 23f:   c6 45 f8 67             movb   $0x67,-0x8(%rbp)
 243:   e9 38 06 00 00          jmp    880 <foo+0x880>
 248:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 24c:   c6 45 f8 59             movb   $0x59,-0x8(%rbp)
 250:   e9 2b 06 00 00          jmp    880 <foo+0x880>
 255:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 259:   c6 45 f8 62             movb   $0x62,-0x8(%rbp)
 25d:   e9 1e 06 00 00          jmp    880 <foo+0x880>
 262:   b8 00 00 00 00          mov    $0x0,%eax
 267:   e9 18 06 00 00          jmp    884 <foo+0x884>
 26c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 270:   c6 45 f8 74             movb   $0x74,-0x8(%rbp)
 274:   e9 07 06 00 00          jmp    880 <foo+0x880>
 279:   89 45 f0                mov    %eax,-0x10(%rbp)
 27c:   c6 45 f8 3e             movb   $0x3e,-0x8(%rbp)
 280:   e9 fb 05 00 00          jmp    880 <foo+0x880>
 285:   89 45 f0                mov    %eax,-0x10(%rbp)
 288:   c6 45 f8 7a             movb   $0x7a,-0x8(%rbp)
 28c:   e9 ef 05 00 00          jmp    880 <foo+0x880>
 291:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 295:   c6 45 f8 71             movb   $0x71,-0x8(%rbp)
 299:   e9 e2 05 00 00          jmp    880 <foo+0x880>
 29e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 2a2:   c6 45 f8 5e             movb   $0x5e,-0x8(%rbp)
 2a6:   e9 d5 05 00 00          jmp    880 <foo+0x880>
 2ab:   89 45 f0                mov    %eax,-0x10(%rbp)
 2ae:   c6 45 f8 86             movb   $0x86,-0x8(%rbp)
 2b2:   e9 c9 05 00 00          jmp    880 <foo+0x880>
 2b7:   b8 00 00 00 00          mov    $0x0,%eax
 2bc:   e9 c3 05 00 00          jmp    884 <foo+0x884>
 2c1:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 2c5:   c6 45 f8 1e             movb   $0x1e,-0x8(%rbp)
 2c9:   e9 b2 05 00 00          jmp    880 <foo+0x880>
 2ce:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 2d2:   c6 45 f8 15             movb   $0x15,-0x8(%rbp)
 2d6:   e9 a5 05 00 00          jmp    880 <foo+0x880>
 2db:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 2df:   c6 45 f8 64             movb   $0x64,-0x8(%rbp)
 2e3:   e9 98 05 00 00          jmp    880 <foo+0x880>
 2e8:   89 45 f0                mov    %eax,-0x10(%rbp)
 2eb:   c6 45 f8 8e             movb   $0x8e,-0x8(%rbp)
 2ef:   e9 8c 05 00 00          jmp    880 <foo+0x880>
 2f4:   b8 00 00 00 00          mov    $0x0,%eax
 2f9:   e9 86 05 00 00          jmp    884 <foo+0x884>
 2fe:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 302:   c6 45 f8 22             movb   $0x22,-0x8(%rbp)
 306:   e9 75 05 00 00          jmp    880 <foo+0x880>
 30b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 30f:   c6 45 f8 27             movb   $0x27,-0x8(%rbp)
 313:   e9 68 05 00 00          jmp    880 <foo+0x880>
 318:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 31c:   c6 45 f8 99             movb   $0x99,-0x8(%rbp)
 320:   e9 5b 05 00 00          jmp    880 <foo+0x880>
 325:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 329:   c6 45 f8 66             movb   $0x66,-0x8(%rbp)
 32d:   e9 4e 05 00 00          jmp    880 <foo+0x880>
 332:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 336:   c6 45 f8 7d             movb   $0x7d,-0x8(%rbp)
 33a:   e9 41 05 00 00          jmp    880 <foo+0x880>
 33f:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 343:   c6 45 f8 9b             movb   $0x9b,-0x8(%rbp)
 347:   e9 34 05 00 00          jmp    880 <foo+0x880>
 34c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 350:   c6 45 f8 88             movb   $0x88,-0x8(%rbp)
 354:   e9 27 05 00 00          jmp    880 <foo+0x880>
 359:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 35d:   c6 45 f8 79             movb   $0x79,-0x8(%rbp)
 361:   e9 1a 05 00 00          jmp    880 <foo+0x880>
 366:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 36a:   c6 45 f8 34             movb   $0x34,-0x8(%rbp)
 36e:   e9 0d 05 00 00          jmp    880 <foo+0x880>
 373:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 377:   c6 45 f8 6f             movb   $0x6f,-0x8(%rbp)
 37b:   e9 00 05 00 00          jmp    880 <foo+0x880>
 380:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 384:   c6 45 f8 28             movb   $0x28,-0x8(%rbp)
 388:   e9 f3 04 00 00          jmp    880 <foo+0x880>
 38d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 391:   c6 45 f8 57             movb   $0x57,-0x8(%rbp)
 395:   e9 e6 04 00 00          jmp    880 <foo+0x880>
 39a:   89 45 f0                mov    %eax,-0x10(%rbp)
 39d:   c6 45 f8 9e             movb   $0x9e,-0x8(%rbp)
 3a1:   e9 da 04 00 00          jmp    880 <foo+0x880>
 3a6:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3aa:   c6 45 f8 30             movb   $0x30,-0x8(%rbp)
 3ae:   e9 cd 04 00 00          jmp    880 <foo+0x880>
 3b3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3b7:   c6 45 f8 58             movb   $0x58,-0x8(%rbp)
 3bb:   e9 c0 04 00 00          jmp    880 <foo+0x880>
 3c0:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3c4:   c6 45 f8 78             movb   $0x78,-0x8(%rbp)
 3c8:   e9 b3 04 00 00          jmp    880 <foo+0x880>
 3cd:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3d1:   c6 45 f8 a5             movb   $0xa5,-0x8(%rbp)
 3d5:   e9 a6 04 00 00          jmp    880 <foo+0x880>
 3da:   b8 00 00 00 00          mov    $0x0,%eax
 3df:   e9 a0 04 00 00          jmp    884 <foo+0x884>
 3e4:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3e8:   c6 45 f8 2a             movb   $0x2a,-0x8(%rbp)
 3ec:   e9 8f 04 00 00          jmp    880 <foo+0x880>
 3f1:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 3f5:   c6 45 f8 6d             movb   $0x6d,-0x8(%rbp)
 3f9:   e9 82 04 00 00          jmp    880 <foo+0x880>
 3fe:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 402:   c6 45 f8 69             movb   $0x69,-0x8(%rbp)
 406:   e9 75 04 00 00          jmp    880 <foo+0x880>
 40b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 40f:   c6 45 f8 9d             movb   $0x9d,-0x8(%rbp)
 413:   e9 68 04 00 00          jmp    880 <foo+0x880>
 418:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 41c:   c6 45 f8 a0             movb   $0xa0,-0x8(%rbp)
 420:   e9 5b 04 00 00          jmp    880 <foo+0x880>
 425:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 429:   c6 45 f8 90             movb   $0x90,-0x8(%rbp)
 42d:   e9 4e 04 00 00          jmp    880 <foo+0x880>
 432:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 436:   c6 45 f8 91             movb   $0x91,-0x8(%rbp)
 43a:   e9 41 04 00 00          jmp    880 <foo+0x880>
 43f:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 443:   c6 45 f8 a7             movb   $0xa7,-0x8(%rbp)
 447:   e9 34 04 00 00          jmp    880 <foo+0x880>
 44c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 450:   c6 45 f8 10             movb   $0x10,-0x8(%rbp)
 454:   e9 27 04 00 00          jmp    880 <foo+0x880>
 459:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 45d:   c6 45 f8 13             movb   $0x13,-0x8(%rbp)
 461:   e9 1a 04 00 00          jmp    880 <foo+0x880>
 466:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 46a:   c6 45 f8 9a             movb   $0x9a,-0x8(%rbp)
 46e:   e9 0d 04 00 00          jmp    880 <foo+0x880>
 473:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 477:   c6 45 f8 2c             movb   $0x2c,-0x8(%rbp)
 47b:   e9 00 04 00 00          jmp    880 <foo+0x880>
 480:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 484:   c6 45 f8 6a             movb   $0x6a,-0x8(%rbp)
 488:   e9 f3 03 00 00          jmp    880 <foo+0x880>
 48d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 491:   c6 45 f8 a6             movb   $0xa6,-0x8(%rbp)
 495:   e9 e6 03 00 00          jmp    880 <foo+0x880>
 49a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 49e:   c6 45 f8 a2             movb   $0xa2,-0x8(%rbp)
 4a2:   e9 d9 03 00 00          jmp    880 <foo+0x880>
 4a7:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4ab:   c6 45 f8 a8             movb   $0xa8,-0x8(%rbp)
 4af:   e9 cc 03 00 00          jmp    880 <foo+0x880>
 4b4:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4b8:   c6 45 f8 a9             movb   $0xa9,-0x8(%rbp)
 4bc:   e9 bf 03 00 00          jmp    880 <foo+0x880>
 4c1:   89 45 f0                mov    %eax,-0x10(%rbp)
 4c4:   c6 45 f8 4d             movb   $0x4d,-0x8(%rbp)
 4c8:   e9 b3 03 00 00          jmp    880 <foo+0x880>
 4cd:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4d1:   c6 45 f8 47             movb   $0x47,-0x8(%rbp)
 4d5:   e9 a6 03 00 00          jmp    880 <foo+0x880>
 4da:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4de:   c6 45 f8 8a             movb   $0x8a,-0x8(%rbp)
 4e2:   e9 99 03 00 00          jmp    880 <foo+0x880>
 4e7:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4eb:   c6 45 f8 98             movb   $0x98,-0x8(%rbp)
 4ef:   e9 8c 03 00 00          jmp    880 <foo+0x880>
 4f4:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 4f8:   c6 45 f8 4b             movb   $0x4b,-0x8(%rbp)
 4fc:   e9 7f 03 00 00          jmp    880 <foo+0x880>
 501:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 505:   c6 45 f8 80             movb   $0x80,-0x8(%rbp)
 509:   e9 72 03 00 00          jmp    880 <foo+0x880>
 50e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 512:   c6 45 f8 5d             movb   $0x5d,-0x8(%rbp)
 516:   e9 65 03 00 00          jmp    880 <foo+0x880>
 51b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 51f:   c6 45 f8 95             movb   $0x95,-0x8(%rbp)
 523:   e9 58 03 00 00          jmp    880 <foo+0x880>
 528:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 52c:   c6 45 f8 6c             movb   $0x6c,-0x8(%rbp)
 530:   e9 4b 03 00 00          jmp    880 <foo+0x880>
 535:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 539:   c6 45 f8 a4             movb   $0xa4,-0x8(%rbp)
 53d:   e9 3e 03 00 00          jmp    880 <foo+0x880>
 542:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 546:   c6 45 f8 68             movb   $0x68,-0x8(%rbp)
 54a:   e9 31 03 00 00          jmp    880 <foo+0x880>
 54f:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 553:   c6 45 f8 6b             movb   $0x6b,-0x8(%rbp)
 557:   e9 24 03 00 00          jmp    880 <foo+0x880>
 55c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 560:   c6 45 f8 94             movb   $0x94,-0x8(%rbp)
 564:   e9 17 03 00 00          jmp    880 <foo+0x880>
 569:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 56d:   c6 45 f8 9c             movb   $0x9c,-0x8(%rbp)
 571:   e9 0a 03 00 00          jmp    880 <foo+0x880>
 576:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 57a:   c6 45 f8 a3             movb   $0xa3,-0x8(%rbp)
 57e:   e9 fd 02 00 00          jmp    880 <foo+0x880>
 583:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 587:   c6 45 f8 97             movb   $0x97,-0x8(%rbp)
 58b:   e9 f0 02 00 00          jmp    880 <foo+0x880>
 590:   89 45 f0                mov    %eax,-0x10(%rbp)
 593:   c6 45 f8 9f             movb   $0x9f,-0x8(%rbp)
 597:   e9 e4 02 00 00          jmp    880 <foo+0x880>
 59c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5a0:   c6 45 f8 a1             movb   $0xa1,-0x8(%rbp)
 5a4:   e9 d7 02 00 00          jmp    880 <foo+0x880>
 5a9:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5ad:   c6 45 f8 8b             movb   $0x8b,-0x8(%rbp)
 5b1:   e9 ca 02 00 00          jmp    880 <foo+0x880>
 5b6:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5ba:   c6 45 f8 89             movb   $0x89,-0x8(%rbp)
 5be:   e9 bd 02 00 00          jmp    880 <foo+0x880>
 5c3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5c7:   c6 45 f8 7c             movb   $0x7c,-0x8(%rbp)
 5cb:   e9 b0 02 00 00          jmp    880 <foo+0x880>
 5d0:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5d4:   c6 45 f8 19             movb   $0x19,-0x8(%rbp)
 5d8:   e9 a3 02 00 00          jmp    880 <foo+0x880>
 5dd:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5e1:   c6 45 f8 2b             movb   $0x2b,-0x8(%rbp)
 5e5:   e9 96 02 00 00          jmp    880 <foo+0x880>
 5ea:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5ee:   c6 45 f8 29             movb   $0x29,-0x8(%rbp)
 5f2:   e9 89 02 00 00          jmp    880 <foo+0x880>
 5f7:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 5fb:   c6 45 f8 54             movb   $0x54,-0x8(%rbp)
 5ff:   e9 7c 02 00 00          jmp    880 <foo+0x880>
 604:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 608:   c6 45 f8 93             movb   $0x93,-0x8(%rbp)
 60c:   e9 6f 02 00 00          jmp    880 <foo+0x880>
 611:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 615:   c6 45 f8 53             movb   $0x53,-0x8(%rbp)
 619:   e9 62 02 00 00          jmp    880 <foo+0x880>
 61e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 622:   c6 45 f8 36             movb   $0x36,-0x8(%rbp)
 626:   e9 55 02 00 00          jmp    880 <foo+0x880>
 62b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 62f:   c6 45 f8 32             movb   $0x32,-0x8(%rbp)
 633:   e9 48 02 00 00          jmp    880 <foo+0x880>
 638:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 63c:   c6 45 f8 39             movb   $0x39,-0x8(%rbp)
 640:   e9 3b 02 00 00          jmp    880 <foo+0x880>
 645:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 649:   c6 45 f8 33             movb   $0x33,-0x8(%rbp)
 64d:   e9 2e 02 00 00          jmp    880 <foo+0x880>
 652:   b8 00 00 00 00          mov    $0x0,%eax
 657:   e9 28 02 00 00          jmp    884 <foo+0x884>
 65c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 660:   c6 45 f8 96             movb   $0x96,-0x8(%rbp)
 664:   e9 17 02 00 00          jmp    880 <foo+0x880>
 669:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 66d:   c6 45 f8 70             movb   $0x70,-0x8(%rbp)
 671:   e9 0a 02 00 00          jmp    880 <foo+0x880>
 676:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 67a:   c6 45 f8 7f             movb   $0x7f,-0x8(%rbp)
 67e:   e9 fd 01 00 00          jmp    880 <foo+0x880>
 683:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 687:   c6 45 f8 6e             movb   $0x6e,-0x8(%rbp)
 68b:   e9 f0 01 00 00          jmp    880 <foo+0x880>
 690:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 694:   c6 45 f8 92             movb   $0x92,-0x8(%rbp)
 698:   e9 e3 01 00 00          jmp    880 <foo+0x880>
 69d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6a1:   c6 45 f8 8d             movb   $0x8d,-0x8(%rbp)
 6a5:   e9 d6 01 00 00          jmp    880 <foo+0x880>
 6aa:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6ae:   c6 45 f8 8c             movb   $0x8c,-0x8(%rbp)
 6b2:   e9 c9 01 00 00          jmp    880 <foo+0x880>
 6b7:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6bb:   c6 45 f8 35             movb   $0x35,-0x8(%rbp)
 6bf:   e9 bc 01 00 00          jmp    880 <foo+0x880>
 6c4:   b8 00 00 00 00          mov    $0x0,%eax
 6c9:   e9 b6 01 00 00          jmp    884 <foo+0x884>
 6ce:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6d2:   c6 45 f8 8f             movb   $0x8f,-0x8(%rbp)
 6d6:   e9 a5 01 00 00          jmp    880 <foo+0x880>
 6db:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6df:   c6 45 f8 73             movb   $0x73,-0x8(%rbp)
 6e3:   e9 98 01 00 00          jmp    880 <foo+0x880>
 6e8:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6ec:   c6 45 f8 18             movb   $0x18,-0x8(%rbp)
 6f0:   e9 8b 01 00 00          jmp    880 <foo+0x880>
 6f5:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 6f9:   c6 45 f8 3a             movb   $0x3a,-0x8(%rbp)
 6fd:   e9 7e 01 00 00          jmp    880 <foo+0x880>
 702:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 706:   c6 45 f8 21             movb   $0x21,-0x8(%rbp)
 70a:   e9 71 01 00 00          jmp    880 <foo+0x880>
 70f:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 713:   c6 45 f8 61             movb   $0x61,-0x8(%rbp)
 717:   e9 64 01 00 00          jmp    880 <foo+0x880>
 71c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 720:   c6 45 f8 72             movb   $0x72,-0x8(%rbp)
 724:   e9 57 01 00 00          jmp    880 <foo+0x880>
 729:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 72d:   c6 45 f8 2d             movb   $0x2d,-0x8(%rbp)
 731:   e9 4a 01 00 00          jmp    880 <foo+0x880>
 736:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 73a:   c6 45 f8 75             movb   $0x75,-0x8(%rbp)
 73e:   e9 3d 01 00 00          jmp    880 <foo+0x880>
 743:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 747:   c6 45 f8 7b             movb   $0x7b,-0x8(%rbp)
 74b:   e9 30 01 00 00          jmp    880 <foo+0x880>
 750:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 754:   c6 45 f8 60             movb   $0x60,-0x8(%rbp)
 758:   e9 23 01 00 00          jmp    880 <foo+0x880>
 75d:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 761:   c6 45 f8 1b             movb   $0x1b,-0x8(%rbp)
 765:   e9 16 01 00 00          jmp    880 <foo+0x880>
 76a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 76e:   c6 45 f8 52             movb   $0x52,-0x8(%rbp)
 772:   e9 09 01 00 00          jmp    880 <foo+0x880>
 777:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 77b:   c6 45 f8 5f             movb   $0x5f,-0x8(%rbp)
 77f:   e9 fc 00 00 00          jmp    880 <foo+0x880>
 784:   89 45 f0                mov    %eax,-0x10(%rbp)
 787:   c6 45 f8 41             movb   $0x41,-0x8(%rbp)
 78b:   e9 f0 00 00 00          jmp    880 <foo+0x880>
 790:   89 45 f0                mov    %eax,-0x10(%rbp)
 793:   c6 45 f8 76             movb   $0x76,-0x8(%rbp)
 797:   e9 e4 00 00 00          jmp    880 <foo+0x880>
 79c:   89 45 f0                mov    %eax,-0x10(%rbp)
 79f:   c6 45 f8 42             movb   $0x42,-0x8(%rbp)
 7a3:   e9 d8 00 00 00          jmp    880 <foo+0x880>
 7a8:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7ac:   c6 45 f8 5b             movb   $0x5b,-0x8(%rbp)
 7b0:   e9 cb 00 00 00          jmp    880 <foo+0x880>
 7b5:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7b9:   c6 45 f8 44             movb   $0x44,-0x8(%rbp)
 7bd:   e9 be 00 00 00          jmp    880 <foo+0x880>
 7c2:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7c6:   c6 45 f8 65             movb   $0x65,-0x8(%rbp)
 7ca:   e9 b1 00 00 00          jmp    880 <foo+0x880>
 7cf:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7d3:   c6 45 f8 0f             movb   $0xf,-0x8(%rbp)
 7d7:   e9 a4 00 00 00          jmp    880 <foo+0x880>
 7dc:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7e0:   c6 45 f8 4a             movb   $0x4a,-0x8(%rbp)
 7e4:   e9 97 00 00 00          jmp    880 <foo+0x880>
 7e9:   b8 00 00 00 00          mov    $0x0,%eax
 7ee:   e9 91 00 00 00          jmp    884 <foo+0x884>
 7f3:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 7f7:   c6 45 f8 23             movb   $0x23,-0x8(%rbp)
 7fb:   e9 80 00 00 00          jmp    880 <foo+0x880>
 800:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 804:   c6 45 f8 4f             movb   $0x4f,-0x8(%rbp)
 808:   eb 76                   jmp    880 <foo+0x880>
 80a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 80e:   c6 45 f8 50             movb   $0x50,-0x8(%rbp)
 812:   eb 6c                   jmp    880 <foo+0x880>
 814:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 818:   c6 45 f8 1c             movb   $0x1c,-0x8(%rbp)
 81c:   eb 62                   jmp    880 <foo+0x880>
 81e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 822:   c6 45 f8 17             movb   $0x17,-0x8(%rbp)
 826:   eb 58                   jmp    880 <foo+0x880>
 828:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 82c:   c6 45 f8 48             movb   $0x48,-0x8(%rbp)
 830:   eb 4e                   jmp    880 <foo+0x880>
 832:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 836:   c6 45 f8 07             movb   $0x7,-0x8(%rbp)
 83a:   eb 44                   jmp    880 <foo+0x880>
 83c:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 840:   c6 45 f8 24             movb   $0x24,-0x8(%rbp)
 844:   eb 3a                   jmp    880 <foo+0x880>
 846:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 84a:   c6 45 f8 46             movb   $0x46,-0x8(%rbp)
 84e:   eb 30                   jmp    880 <foo+0x880>
 850:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 854:   c6 45 f8 1d             movb   $0x1d,-0x8(%rbp)
 858:   eb 26                   jmp    880 <foo+0x880>
 85a:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 85e:   c6 45 f8 05             movb   $0x5,-0x8(%rbp)
 862:   eb 1c                   jmp    880 <foo+0x880>
 864:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 868:   c6 45 f8 0b             movb   $0xb,-0x8(%rbp)
 86c:   eb 12                   jmp    880 <foo+0x880>
 86e:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 872:   c6 45 f8 06             movb   $0x6,-0x8(%rbp)
 876:   eb 08                   jmp    880 <foo+0x880>
 878:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 87c:   c6 45 f8 04             movb   $0x4,-0x8(%rbp)
 880:   48 8d 45 f0             lea    -0x10(%rbp),%rax
 884:   8b 48 08                mov    0x8(%rax),%ecx
 887:   89 4d e8                mov    %ecx,-0x18(%rbp)
 88a:   48 8b 00                mov    (%rax),%rax
 88d:   48 89 45 e0             mov    %rax,-0x20(%rbp)
 891:   8b 45 e8                mov    -0x18(%rbp),%eax
 894:   89 45 f8                mov    %eax,-0x8(%rbp)
 897:   48 8b 45 e0             mov    -0x20(%rbp),%rax
 89b:   48 89 45 f0             mov    %rax,-0x10(%rbp)
 89f:   48 8d 45 f0             lea    -0x10(%rbp),%rax
 8a3:   48 89 45 d0             mov    %rax,-0x30(%rbp)
 8a7:   48 8d 45 d0             lea    -0x30(%rbp),%rax
 8ab:   48 89 45 d8             mov    %rax,-0x28(%rbp)
 8af:   5d                      pop    %rbp
 8b0:   c3                      ret

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions