diff --git a/bootstrap/compiler.zig b/bootstrap/compiler.zig index 1b7118d..b59620b 100644 --- a/bootstrap/compiler.zig +++ b/bootstrap/compiler.zig @@ -715,6 +715,673 @@ fn add_file(file_absolute_path: []const u8, interested_threads: []const u32) Fil return new_file_index; } +const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { + 0x42, 0x43, 0xc0, 0xde, + 0x35, 0x14, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, + 0x62, 0x0c, 0x30, 0x24, + 0x4a, 0x59, 0xbe, 0x66, + 0xbd, 0xfb, 0xb4, 0xaf, + 0x0b, 0x51, 0x80, 0x4c, + 0x01, 0x00, 0x00, 0x00, + 0x21, 0x0c, 0x00, 0x00, + 0x55, 0x02, 0x00, 0x00, + 0x0b, 0x02, 0x21, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x23, 0x91, + 0x41, 0xc8, 0x04, 0x49, + 0x06, 0x10, 0x32, 0x39, + 0x92, 0x01, 0x84, 0x0c, + 0x25, 0x05, 0x08, 0x19, + 0x1e, 0x04, 0x8b, 0x62, + 0x80, 0x0c, 0x45, 0x02, + 0x42, 0x92, 0x0b, 0x42, + 0x64, 0x10, 0x32, 0x14, + 0x38, 0x08, 0x18, 0x4b, + 0x0a, 0x32, 0x32, 0x88, + 0x48, 0x70, 0xc4, 0x21, + 0x23, 0x44, 0x12, 0x87, + 0x8c, 0x10, 0x41, 0x92, + 0x02, 0x64, 0xc8, 0x08, + 0xb1, 0x14, 0x20, 0x43, + 0x46, 0x88, 0x20, 0xc9, + 0x01, 0x32, 0x32, 0x84, + 0x18, 0x2a, 0x28, 0x2a, + 0x90, 0x31, 0x7c, 0xb0, + 0x5c, 0x91, 0x20, 0xc3, + 0xc8, 0x00, 0x00, 0x00, + 0x89, 0x20, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, + 0x22, 0x66, 0x04, 0x10, + 0xb2, 0x42, 0x82, 0xc9, + 0x10, 0x52, 0x42, 0x82, + 0xc9, 0x90, 0x71, 0xc2, + 0x50, 0x48, 0x0a, 0x09, + 0x26, 0x43, 0xc6, 0x05, + 0x42, 0x32, 0x26, 0x08, + 0x0c, 0x9a, 0x23, 0x00, + 0x83, 0x32, 0x24, 0x18, + 0x01, 0x18, 0x08, 0x28, + 0xc4, 0x48, 0x02, 0x00, + 0x51, 0x18, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, + 0x1b, 0x58, 0x23, 0xf8, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x70, 0x00, 0x09, + 0x28, 0x03, 0x80, 0x0b, + 0xc2, 0x40, 0x20, 0xcc, + 0x41, 0x1e, 0xc2, 0xa1, + 0x1d, 0xca, 0xa1, 0x0d, + 0xe0, 0xe1, 0x1d, 0xd2, + 0xc1, 0x1d, 0xe8, 0xa1, + 0x1c, 0xe4, 0x01, 0x08, + 0x07, 0x76, 0x60, 0x07, + 0x80, 0x68, 0x87, 0x74, + 0x70, 0x87, 0x36, 0x60, + 0x87, 0x72, 0x38, 0x87, + 0x70, 0x60, 0x87, 0x36, + 0xb0, 0x87, 0x72, 0x18, + 0x07, 0x7a, 0x78, 0x07, + 0x79, 0x68, 0x83, 0x7b, + 0x48, 0x07, 0x72, 0xa0, + 0x07, 0x74, 0x00, 0xe0, + 0x00, 0x20, 0xdc, 0xe1, + 0x1d, 0xda, 0x80, 0x1e, + 0xe4, 0x21, 0x1c, 0xe0, + 0x01, 0x1e, 0xd2, 0xc1, + 0x1d, 0xce, 0xa1, 0x0d, + 0xda, 0x21, 0x1c, 0xe8, + 0x01, 0x1d, 0x00, 0x7a, + 0x90, 0x87, 0x7a, 0x28, + 0x07, 0x80, 0x98, 0x07, + 0x7a, 0x08, 0x87, 0x71, + 0x58, 0x87, 0x36, 0x80, + 0x07, 0x79, 0x78, 0x07, + 0x7a, 0x28, 0x87, 0x71, + 0xa0, 0x87, 0x77, 0x90, + 0x87, 0x36, 0x10, 0x87, + 0x7a, 0x30, 0x07, 0x73, + 0x28, 0x07, 0x79, 0x68, + 0x83, 0x79, 0x48, 0x07, + 0x7d, 0x28, 0x07, 0x00, + 0x0f, 0x00, 0x82, 0x1e, + 0xc2, 0x41, 0x1e, 0xce, + 0xa1, 0x1c, 0xe8, 0xa1, + 0x0d, 0xc6, 0x01, 0x1e, + 0xea, 0x01, 0xc0, 0x07, + 0x3c, 0xb0, 0x83, 0x36, + 0xb0, 0x03, 0x3a, 0x00, + 0x08, 0x7a, 0x08, 0x07, + 0x79, 0x38, 0x87, 0x72, + 0xa0, 0x87, 0x36, 0x30, + 0x87, 0x72, 0x08, 0x07, + 0x7a, 0xa8, 0x07, 0x79, + 0x28, 0x87, 0x79, 0x00, + 0xd6, 0x60, 0x1c, 0xda, + 0xe1, 0x1d, 0xec, 0x81, + 0x0d, 0xd6, 0x60, 0x1c, + 0xf0, 0x01, 0x0f, 0xd8, + 0x60, 0x0d, 0xcc, 0x01, + 0x1f, 0xe6, 0x41, 0x1e, + 0xd8, 0x60, 0x0d, 0xda, + 0xa1, 0x1d, 0xf0, 0x81, + 0x0d, 0xd6, 0x60, 0x1e, + 0xe6, 0xa1, 0x1c, 0xd8, + 0x60, 0x0d, 0xe6, 0x61, + 0x1e, 0xca, 0x41, 0x0e, + 0xd8, 0x60, 0x0d, 0xf0, + 0x01, 0x0f, 0xee, 0x00, + 0x20, 0xe8, 0xa1, 0x1e, + 0xdc, 0xa1, 0x1c, 0xda, + 0x60, 0x1c, 0xe0, 0xa1, + 0x1e, 0x80, 0x73, 0x28, + 0x07, 0x77, 0x28, 0x07, + 0x79, 0x48, 0x87, 0x71, + 0x00, 0x36, 0x10, 0x42, + 0x00, 0x90, 0xc2, 0x06, + 0x62, 0x10, 0x00, 0x52, + 0xd8, 0x10, 0x11, 0xff, + 0xff, 0xff, 0xff, 0x3f, + 0x00, 0xa7, 0x00, 0xf8, + 0x01, 0xf0, 0x07, 0x80, + 0x04, 0xd4, 0x01, 0xd0, + 0x07, 0x81, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x49, 0x18, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x13, 0x86, 0x40, 0x18, + 0x26, 0x04, 0x04, 0x00, + 0x13, 0x26, 0x7c, 0xc0, + 0x03, 0x3b, 0xf8, 0x05, + 0x3b, 0xa0, 0x83, 0x36, + 0x80, 0x87, 0x71, 0x68, + 0x03, 0x76, 0x48, 0x07, + 0x77, 0xa8, 0x07, 0x7c, + 0x68, 0x83, 0x73, 0x70, + 0x87, 0x7a, 0xd8, 0x60, + 0x0a, 0xe5, 0xd0, 0x06, + 0xed, 0xa0, 0x07, 0xe5, + 0xd0, 0x06, 0xf0, 0x20, + 0x07, 0x77, 0x00, 0x07, + 0x7a, 0x30, 0x07, 0x72, + 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x6d, 0x00, 0x0f, + 0x72, 0x70, 0x07, 0x71, + 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xd0, 0x06, 0xf0, + 0x20, 0x07, 0x77, 0x20, + 0x07, 0x7a, 0x60, 0x07, + 0x74, 0xa0, 0x07, 0x76, + 0x40, 0x07, 0x6d, 0x90, + 0x0e, 0x76, 0x40, 0x07, + 0x7a, 0x60, 0x07, 0x74, + 0xd0, 0x06, 0xe6, 0x80, + 0x07, 0x70, 0xa0, 0x07, + 0x71, 0x20, 0x07, 0x78, + 0xd0, 0x06, 0xee, 0x80, + 0x07, 0x7a, 0x10, 0x07, + 0x76, 0xa0, 0x07, 0x73, + 0x20, 0x07, 0x7a, 0x60, + 0x07, 0x74, 0xd0, 0x06, + 0xb3, 0x10, 0x07, 0x72, + 0x80, 0x07, 0x1a, 0x21, + 0x0c, 0x69, 0x30, 0x00, + 0xd2, 0xf8, 0xc2, 0x90, + 0x0a, 0x20, 0x04, 0x00, + 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x02, + 0x18, 0x52, 0x11, 0x50, + 0x01, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x12, 0x1b, + 0x04, 0x8a, 0x66, 0x09, + 0x00, 0x00, 0x64, 0x81, + 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, + 0x32, 0x1e, 0x98, 0x10, + 0x19, 0x11, 0x4c, 0x90, + 0x8c, 0x09, 0x26, 0x47, + 0xc6, 0x04, 0x43, 0x4a, + 0x39, 0x94, 0x42, 0x11, + 0x94, 0x41, 0x09, 0x14, + 0x42, 0x41, 0x00, 0x00, + 0xb1, 0x18, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, + 0x33, 0x08, 0x80, 0x1c, + 0xc4, 0xe1, 0x1c, 0x66, + 0x14, 0x01, 0x3d, 0x88, + 0x43, 0x38, 0x84, 0xc3, + 0x8c, 0x42, 0x80, 0x07, + 0x79, 0x78, 0x07, 0x73, + 0x98, 0x71, 0x0c, 0xe6, + 0x00, 0x0f, 0xed, 0x10, + 0x0e, 0xf4, 0x80, 0x0e, + 0x33, 0x0c, 0x42, 0x1e, + 0xc2, 0xc1, 0x1d, 0xce, + 0xa1, 0x1c, 0x66, 0x30, + 0x05, 0x3d, 0x88, 0x43, + 0x38, 0x84, 0x83, 0x1b, + 0xcc, 0x03, 0x3d, 0xc8, + 0x43, 0x3d, 0x8c, 0x03, + 0x3d, 0xcc, 0x78, 0x8c, + 0x74, 0x70, 0x07, 0x7b, + 0x08, 0x07, 0x79, 0x48, + 0x87, 0x70, 0x70, 0x07, + 0x7a, 0x70, 0x03, 0x76, + 0x78, 0x87, 0x70, 0x20, + 0x87, 0x19, 0xcc, 0x11, + 0x0e, 0xec, 0x90, 0x0e, + 0xe1, 0x30, 0x0f, 0x6e, + 0x30, 0x0f, 0xe3, 0xf0, + 0x0e, 0xf0, 0x50, 0x0e, + 0x33, 0x10, 0xc4, 0x1d, + 0xde, 0x21, 0x1c, 0xd8, + 0x21, 0x1d, 0xc2, 0x61, + 0x1e, 0x66, 0x30, 0x89, + 0x3b, 0xbc, 0x83, 0x3b, + 0xd0, 0x43, 0x39, 0xb4, + 0x03, 0x3c, 0xbc, 0x83, + 0x3c, 0x84, 0x03, 0x3b, + 0xcc, 0xf0, 0x14, 0x76, + 0x60, 0x07, 0x7b, 0x68, + 0x07, 0x37, 0x68, 0x87, + 0x72, 0x68, 0x07, 0x37, + 0x80, 0x87, 0x70, 0x90, + 0x87, 0x70, 0x60, 0x07, + 0x76, 0x28, 0x07, 0x76, + 0xf8, 0x05, 0x76, 0x78, + 0x87, 0x77, 0x80, 0x87, + 0x5f, 0x08, 0x87, 0x71, + 0x18, 0x87, 0x72, 0x98, + 0x87, 0x79, 0x98, 0x81, + 0x2c, 0xee, 0xf0, 0x0e, + 0xee, 0xe0, 0x0e, 0xf5, + 0xc0, 0x0e, 0xec, 0x30, + 0x03, 0x62, 0xc8, 0xa1, + 0x1c, 0xe4, 0xa1, 0x1c, + 0xcc, 0xa1, 0x1c, 0xe4, + 0xa1, 0x1c, 0xdc, 0x61, + 0x1c, 0xca, 0x21, 0x1c, + 0xc4, 0x81, 0x1d, 0xca, + 0x61, 0x06, 0xd6, 0x90, + 0x43, 0x39, 0xc8, 0x43, + 0x39, 0x98, 0x43, 0x39, + 0xc8, 0x43, 0x39, 0xb8, + 0xc3, 0x38, 0x94, 0x43, + 0x38, 0x88, 0x03, 0x3b, + 0x94, 0xc3, 0x2f, 0xbc, + 0x83, 0x3c, 0xfc, 0x82, + 0x3b, 0xd4, 0x03, 0x3b, + 0xb0, 0xc3, 0x0c, 0xc7, + 0x69, 0x87, 0x70, 0x58, + 0x87, 0x72, 0x70, 0x83, + 0x74, 0x68, 0x07, 0x78, + 0x60, 0x87, 0x74, 0x18, + 0x87, 0x74, 0xa0, 0x87, + 0x19, 0xce, 0x53, 0x0f, + 0xee, 0x00, 0x0f, 0xf2, + 0x50, 0x0e, 0xe4, 0x90, + 0x0e, 0xe3, 0x40, 0x0f, + 0xe1, 0x20, 0x0e, 0xec, + 0x50, 0x0e, 0x33, 0x20, + 0x28, 0x1d, 0xdc, 0xc1, + 0x1e, 0xc2, 0x41, 0x1e, + 0xd2, 0x21, 0x1c, 0xdc, + 0x81, 0x1e, 0xdc, 0xe0, + 0x1c, 0xe4, 0xe1, 0x1d, + 0xea, 0x01, 0x1e, 0x66, + 0x18, 0x51, 0x38, 0xb0, + 0x43, 0x3a, 0x9c, 0x83, + 0x3b, 0xcc, 0x50, 0x24, + 0x76, 0x60, 0x07, 0x7b, + 0x68, 0x07, 0x37, 0x60, + 0x87, 0x77, 0x78, 0x07, + 0x78, 0x98, 0x51, 0x4c, + 0xf4, 0x90, 0x0f, 0xf0, + 0x50, 0x0e, 0x33, 0x1e, + 0x6a, 0x1e, 0xca, 0x61, + 0x1c, 0xe8, 0x21, 0x1d, + 0xde, 0xc1, 0x1d, 0x7e, + 0x01, 0x1e, 0xe4, 0xa1, + 0x1c, 0xcc, 0x21, 0x1d, + 0xf0, 0x61, 0x06, 0x54, + 0x85, 0x83, 0x38, 0xcc, + 0xc3, 0x3b, 0xb0, 0x43, + 0x3d, 0xd0, 0x43, 0x39, + 0xfc, 0xc2, 0x3c, 0xe4, + 0x43, 0x3b, 0x88, 0xc3, + 0x3b, 0xb0, 0xc3, 0x8c, + 0xc5, 0x0a, 0x87, 0x79, + 0x98, 0x87, 0x77, 0x18, + 0x87, 0x74, 0x08, 0x07, + 0x7a, 0x28, 0x07, 0x72, + 0x98, 0x81, 0x5c, 0xe3, + 0x10, 0x0e, 0xec, 0xc0, + 0x0e, 0xe5, 0x50, 0x0e, + 0xf3, 0x30, 0x23, 0xc1, + 0xd2, 0x41, 0x1e, 0xe4, + 0xe1, 0x17, 0xd8, 0xe1, + 0x1d, 0xde, 0x01, 0x1e, + 0x66, 0x48, 0x19, 0x3b, + 0xb0, 0x83, 0x3d, 0xb4, + 0x83, 0x1b, 0x84, 0xc3, + 0x38, 0x8c, 0x43, 0x39, + 0xcc, 0xc3, 0x3c, 0xb8, + 0xc1, 0x39, 0xc8, 0xc3, + 0x3b, 0xd4, 0x03, 0x3c, + 0xcc, 0x48, 0xb4, 0x71, + 0x08, 0x07, 0x76, 0x60, + 0x07, 0x71, 0x08, 0x87, + 0x71, 0x58, 0x87, 0x19, + 0xdb, 0xc6, 0x0e, 0xec, + 0x60, 0x0f, 0xed, 0xe0, + 0x06, 0xf0, 0x20, 0x0f, + 0xe5, 0x30, 0x0f, 0xe5, + 0x20, 0x0f, 0xf6, 0x50, + 0x0e, 0x6e, 0x10, 0x0e, + 0xe3, 0x30, 0x0e, 0xe5, + 0x30, 0x0f, 0xf3, 0xe0, + 0x06, 0xe9, 0xe0, 0x0e, + 0xe4, 0x50, 0x0e, 0xf8, + 0x30, 0x23, 0xe2, 0xec, + 0x61, 0x1c, 0xc2, 0x81, + 0x1d, 0xd8, 0xe1, 0x17, + 0xec, 0x21, 0x1d, 0xe6, + 0x21, 0x1d, 0xc4, 0x21, + 0x1d, 0xd8, 0x21, 0x1d, + 0xe8, 0x21, 0x1f, 0x66, + 0x20, 0x9d, 0x3b, 0xbc, + 0x43, 0x3d, 0xb8, 0x03, + 0x39, 0x94, 0x83, 0x39, + 0xcc, 0x58, 0xbc, 0x70, + 0x70, 0x07, 0x77, 0x78, + 0x07, 0x7a, 0x08, 0x07, + 0x7a, 0x48, 0x87, 0x77, + 0x70, 0x87, 0x19, 0xcb, + 0xe7, 0x0e, 0xef, 0x30, + 0x0f, 0xe1, 0xe0, 0x0e, + 0xe9, 0x40, 0x0f, 0xe9, + 0xa0, 0x0f, 0xe5, 0x30, + 0xc3, 0x01, 0x03, 0x73, + 0xa8, 0x07, 0x77, 0x18, + 0x87, 0x5f, 0x98, 0x87, + 0x70, 0x70, 0x87, 0x74, + 0xa0, 0x87, 0x74, 0xd0, + 0x87, 0x72, 0x98, 0x81, + 0x84, 0x41, 0x39, 0xe0, + 0xc3, 0x38, 0xb0, 0x43, + 0x3d, 0x90, 0x43, 0x39, + 0xcc, 0x40, 0xc4, 0xa0, + 0x1d, 0xca, 0xa1, 0x1d, + 0xe0, 0x41, 0x1e, 0xde, + 0xc1, 0x1c, 0x66, 0x24, + 0x63, 0x30, 0x0e, 0xe1, + 0xc0, 0x0e, 0xec, 0x30, + 0x0f, 0xe9, 0x40, 0x0f, + 0xe5, 0x30, 0x43, 0x21, + 0x83, 0x75, 0x18, 0x07, + 0x73, 0x48, 0x87, 0x5f, + 0xa0, 0x87, 0x7c, 0x80, + 0x87, 0x72, 0x98, 0xb1, + 0x94, 0x01, 0x3c, 0x8c, + 0xc3, 0x3c, 0x94, 0xc3, + 0x38, 0xd0, 0x43, 0x3a, + 0xbc, 0x83, 0x3b, 0xcc, + 0xc3, 0x8c, 0xc5, 0x0c, + 0x48, 0x21, 0x15, 0x42, + 0x61, 0x1e, 0xe6, 0x21, + 0x1d, 0xce, 0xc1, 0x1d, + 0x52, 0x81, 0x14, 0x00, + 0x79, 0x20, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, + 0x72, 0x1e, 0x48, 0x20, + 0x43, 0x88, 0x0c, 0x19, + 0x09, 0x72, 0x32, 0x48, + 0x20, 0x23, 0x81, 0x8c, + 0x91, 0x91, 0xd1, 0x44, + 0xa0, 0x10, 0x28, 0x64, + 0x3c, 0x31, 0x32, 0x42, + 0x8e, 0x90, 0x21, 0xa3, + 0xb8, 0x30, 0x60, 0x01, + 0xc6, 0x02, 0x06, 0x54, + 0x23, 0x29, 0x49, 0x72, + 0x34, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, + 0x2e, 0x63, 0x2f, 0x68, + 0x6f, 0x6d, 0x65, 0x2f, + 0x64, 0x61, 0x76, 0x69, + 0x64, 0x64, 0x35, 0x36, + 0x65, 0x30, 0x63, 0x30, + 0x39, 0x62, 0x30, 0x32, + 0x32, 0x33, 0x37, 0x61, + 0x61, 0x37, 0x38, 0x63, + 0x61, 0x62, 0x39, 0x39, + 0x64, 0x35, 0x36, 0x65, + 0x65, 0x65, 0x36, 0x63, + 0x63, 0x63, 0x6c, 0x61, + 0x6e, 0x67, 0x20, 0x76, + 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x31, + 0x37, 0x2e, 0x30, 0x2e, + 0x36, 0x44, 0x77, 0x61, + 0x72, 0x66, 0x20, 0x56, + 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x44, 0x65, + 0x62, 0x75, 0x67, 0x20, + 0x49, 0x6e, 0x66, 0x6f, + 0x20, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, + 0x77, 0x63, 0x68, 0x61, + 0x72, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x50, 0x49, + 0x43, 0x20, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x50, + 0x49, 0x45, 0x20, 0x4c, + 0x65, 0x76, 0x65, 0x6c, + 0x75, 0x77, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x66, + 0x72, 0x61, 0x6d, 0x65, + 0x2d, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x65, 0x72, + 0x23, 0x08, 0x81, 0x30, + 0x82, 0x10, 0x0c, 0x23, + 0x08, 0x01, 0x31, 0x82, + 0x10, 0x14, 0x23, 0x08, + 0x81, 0x31, 0x82, 0x10, + 0x1c, 0x23, 0x08, 0x01, + 0x32, 0x94, 0x15, 0x74, + 0x14, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x03, + 0x15, 0x40, 0x20, 0x04, + 0xc3, 0x0c, 0x03, 0x53, + 0x34, 0x33, 0x0c, 0x8e, + 0xf1, 0xcc, 0x30, 0x40, + 0x47, 0x34, 0xc3, 0x20, + 0x21, 0xce, 0x0c, 0x03, + 0x93, 0x38, 0x33, 0x0c, + 0x8c, 0xe2, 0xcc, 0x30, + 0x30, 0x8b, 0x33, 0x43, + 0x40, 0xc8, 0x48, 0x60, + 0x82, 0x72, 0x61, 0x63, + 0xb3, 0x6b, 0x73, 0x21, + 0x13, 0x3b, 0x73, 0x19, + 0xab, 0x1b, 0x25, 0x90, + 0x32, 0x62, 0x63, 0xb3, + 0x6b, 0x73, 0x69, 0x7b, + 0x23, 0xab, 0x63, 0x2b, + 0x73, 0x31, 0x63, 0x0b, + 0x3b, 0x9b, 0x1b, 0xe5, + 0xa0, 0x2a, 0xeb, 0xc2, + 0x32, 0x2d, 0x15, 0x36, + 0x36, 0xbb, 0x36, 0x97, + 0x34, 0xb2, 0x32, 0x37, + 0xba, 0x51, 0x82, 0x0d, + 0x00, 0x00, 0x00, 0x00, + 0xa9, 0x18, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, + 0x0b, 0x0a, 0x72, 0x28, + 0x87, 0x77, 0x80, 0x07, + 0x7a, 0x58, 0x70, 0x98, + 0x43, 0x3d, 0xb8, 0xc3, + 0x38, 0xb0, 0x43, 0x39, + 0xd0, 0xc3, 0x82, 0xe6, + 0x1c, 0xc6, 0xa1, 0x0d, + 0xe8, 0x41, 0x1e, 0xc2, + 0xc1, 0x1d, 0xe6, 0x21, + 0x1d, 0xe8, 0x21, 0x1d, + 0xde, 0xc1, 0x1d, 0x16, + 0x34, 0xe3, 0x60, 0x0e, + 0xe7, 0x50, 0x0f, 0xe1, + 0x20, 0x0f, 0xe4, 0x40, + 0x0f, 0xe1, 0x20, 0x0f, + 0xe7, 0x50, 0x0e, 0xf4, + 0xb0, 0x80, 0x81, 0x07, + 0x79, 0x28, 0x87, 0x70, + 0x60, 0x07, 0x76, 0x78, + 0x87, 0x71, 0x08, 0x07, + 0x7a, 0x28, 0x07, 0x72, + 0x58, 0x70, 0x9c, 0xc3, + 0x38, 0xb4, 0x01, 0x3b, + 0xa4, 0x83, 0x3d, 0x94, + 0xc3, 0x02, 0x6b, 0x1c, + 0xd8, 0x21, 0x1c, 0xdc, + 0xe1, 0x1c, 0xdc, 0x20, + 0x1c, 0xe4, 0x61, 0x1c, + 0xdc, 0x20, 0x1c, 0xe8, + 0x81, 0x1e, 0xc2, 0x61, + 0x1c, 0xd0, 0xa1, 0x1c, + 0xc8, 0x61, 0x1c, 0xc2, + 0x81, 0x1d, 0xd8, 0x61, + 0xc1, 0x01, 0x0f, 0xf4, + 0x20, 0x0f, 0xe1, 0x50, + 0x0f, 0xf4, 0x80, 0x0e, + 0x0b, 0x88, 0x75, 0x18, + 0x07, 0x73, 0x48, 0x87, + 0x05, 0xcf, 0x38, 0xbc, + 0x83, 0x3b, 0xd8, 0x43, + 0x39, 0xc8, 0xc3, 0x39, + 0x94, 0x83, 0x3b, 0x8c, + 0x43, 0x39, 0x8c, 0x03, + 0x3d, 0xc8, 0x03, 0x3b, + 0x00, 0x00, 0x00, 0x00, + 0xd1, 0x10, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x07, 0xcc, 0x3c, 0xa4, + 0x83, 0x3b, 0x9c, 0x03, + 0x3b, 0x94, 0x03, 0x3d, + 0xa0, 0x83, 0x3c, 0x94, + 0x43, 0x38, 0x90, 0xc3, + 0x01, 0x00, 0x00, 0x00, + 0x61, 0x20, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, + 0x13, 0x04, 0x41, 0x2c, + 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x94, 0x11, 0x00, 0x00, + 0xf1, 0x30, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, + 0x22, 0x47, 0xc8, 0x90, + 0x51, 0x16, 0xc4, 0x05, + 0xc4, 0x40, 0x10, 0x04, + 0x6d, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x74, 0x63, + 0x68, 0x61, 0x72, 0x61, + 0x72, 0x67, 0x63, 0x61, + 0x72, 0x67, 0x76, 0x00, + 0xab, 0xa8, 0x83, 0xea, + 0x00, 0x2a, 0x40, 0x03, + 0x01, 0x40, 0x00, 0x10, + 0x99, 0x00, 0x20, 0x0d, + 0x00, 0x00, 0x00, 0xf6, + 0x1c, 0x00, 0x19, 0x78, + 0x60, 0x00, 0x14, 0xc0, + 0x9e, 0x03, 0x20, 0x83, + 0x0f, 0x01, 0x0c, 0x60, + 0x91, 0x03, 0x3c, 0x00, + 0x00, 0x00, 0x64, 0x00, + 0x0a, 0x00, 0x00, 0x00, + 0x00, 0xb0, 0xc8, 0x01, + 0x1e, 0x00, 0x00, 0x80, + 0x32, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0xd8, + 0x30, 0x8c, 0xc1, 0x18, + 0x98, 0xc1, 0x26, 0x42, + 0x00, 0xce, 0x00, 0xd8, + 0x00, 0x8c, 0x53, 0x04, + 0x31, 0x00, 0x03, 0x2a, + 0x18, 0x83, 0x00, 0x00, + 0x80, 0x75, 0x81, 0x31, + 0x4e, 0x11, 0xc4, 0x20, + 0x0c, 0xa8, 0xc0, 0x0c, + 0x04, 0x00, 0x00, 0x26, + 0x08, 0x40, 0x33, 0x41, + 0x00, 0x1c, 0x00, 0x00, + 0x33, 0x11, 0x41, 0x60, + 0x8c, 0xc2, 0x4c, 0x44, + 0x10, 0x18, 0xa3, 0x30, + 0x13, 0x01, 0x04, 0x06, + 0x29, 0x0c, 0x1b, 0x10, + 0x03, 0x31, 0x00, 0xc3, + 0x06, 0x84, 0x60, 0x0c, + 0xc0, 0x88, 0xc1, 0x01, + 0x80, 0x20, 0x18, 0x14, + 0xce, 0xf8, 0xff, 0xff, + 0xff, 0x0f, 0xe6, 0xff, + 0xff, 0xff, 0x3f, 0x94, + 0xff, 0xff, 0xff, 0xff, + 0x30, 0x63, 0x50, 0x04, + 0x8e, 0x18, 0x00, 0xc0, + 0xb0, 0x01, 0x11, 0x14, + 0x04, 0x30, 0x62, 0x70, + 0x00, 0x20, 0x08, 0x06, + 0x85, 0x23, 0xfe, 0xff, + 0xff, 0xff, 0x03, 0xf9, + 0xff, 0xff, 0xff, 0x0f, + 0xe5, 0xff, 0xff, 0xff, + 0x3f, 0xcc, 0x18, 0x14, + 0xc1, 0x26, 0x06, 0x00, + 0xb0, 0xc4, 0x8c, 0x41, + 0x31, 0x14, 0x62, 0x00, + 0x00, 0x01, 0x31, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x5b, 0x04, 0x20, 0x0c, + 0x00, 0x00, 0x00, 0x00, + 0x21, 0x31, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x0b, 0x86, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x71, 0x20, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x32, 0x0e, 0x10, 0x22, + 0x84, 0x00, 0x8a, 0x04, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x65, 0x0c, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0x28, + 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, + 0x00, 0x24, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, + 0x08, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x5d, 0x0c, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0x73, + 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, + 0x6c, 0x6c, 0x76, 0x6d, + 0x2e, 0x64, 0x62, 0x67, + 0x2e, 0x64, 0x65, 0x63, + 0x6c, 0x61, 0x72, 0x65, + 0x31, 0x37, 0x2e, 0x30, + 0x2e, 0x36, 0x78, 0x38, + 0x36, 0x5f, 0x36, 0x34, + 0x2d, 0x70, 0x63, 0x2d, + 0x6c, 0x69, 0x6e, 0x75, + 0x78, 0x2d, 0x67, 0x6e, + 0x75, 0x6d, 0x61, 0x69, + 0x6e, 0x2e, 0x63, 0x00, + 0x00, 0x00, 0x00, 0x00, +}; + pub fn make() void { instance.arena = library.Arena.init(4 * 1024 * 1024) catch unreachable; // var modules: [2]*LLVM.Module = undefined; @@ -1326,6 +1993,211 @@ const Bitcode = struct { set_record_name = 3, }; + const AttributeKindCode = enum(u8) { + alignment = 1, + always_inline = 2, + by_val = 3, + inline_hint = 4, + in_reg = 5, + min_size = 6, + naked = 7, + nest = 8, + no_alias = 9, + no_builtin = 10, + no_capture = 11, + no_duplicate = 12, + no_implicit_float = 13, + no_inline = 14, + non_lazy_bind = 15, + no_red_zone = 16, + no_return = 17, + no_unwind = 18, + optimize_for_size = 19, + read_none = 20, + read_only = 21, + returned = 22, + returns_twice = 23, + s_ext = 24, + stack_alignment = 25, + stack_protect = 26, + stack_protect_req = 27, + stack_protect_strong = 28, + struct_ret = 29, + sanitize_address = 30, + sanitize_thread = 31, + sanitize_memory = 32, + uw_table = 33, + z_ext = 34, + builtin = 35, + cold = 36, + optimize_none = 37, + in_alloca = 38, + non_null = 39, + jump_table = 40, + dereferenceable = 41, + dereferenceable_or_null = 42, + convergent = 43, + safestack = 44, + argmemonly = 45, + swift_self = 46, + swift_error = 47, + no_recurse = 48, + inaccessiblemem_only = 49, + inaccessiblemem_or_argmemonly = 50, + alloc_size = 51, + writeonly = 52, + speculatable = 53, + strict_fp = 54, + sanitize_hwaddress = 55, + nocf_check = 56, + opt_for_fuzzing = 57, + shadowcallstack = 58, + speculative_load_hardening = 59, + immarg = 60, + willreturn = 61, + nofree = 62, + nosync = 63, + sanitize_memtag = 64, + preallocated = 65, + no_merge = 66, + null_pointer_is_valid = 67, + noundef = 68, + byref = 69, + mustprogress = 70, + no_callback = 71, + hot = 72, + no_profile = 73, + vscale_range = 74, + swift_async = 75, + no_sanitize_coverage = 76, + elementtype = 77, + disable_sanitizer_instrumentation = 78, + no_sanitize_bounds = 79, + alloc_align = 80, + allocated_pointer = 81, + alloc_kind = 82, + presplit_coroutine = 83, + fnretthunk_extern = 84, + skip_profile = 85, + memory = 86, + nofpclass = 87, + optimize_for_debugging = 88, + writable = 89, + coro_only_destroy_when_complete = 90, + dead_on_unwind = 91, + + pub fn is_enum(attribute_kind: AttributeKindCode) bool { + return switch (attribute_kind) { + .alloc_align, + .allocated_pointer, + .always_inline, + .builtin, + .cold, + .convergent, + .disable_sanitizer_instrumentation, + .fnretthunk_extern, + .hot, + .immarg, + .inreg, + .inline_hint, + .jump_table, + .min_size, + .mustprogress, + .naked, + .nest, + .no_alias, + .no_builtin, + .no_callback, + .no_capture, + .nocf_check, + .no_duplicate, + .nofree, + .no_implicit_float, + .no_inline, + .no_merge, + .no_profile, + .no_recurse, + .no_red_zone, + .no_return, + .no_sanitize_bounds, + .no_sanitize_coverage, + .no_sync, + .noundef, + .no_unwind, + .non_lazy_bind, + .non_null, + .null_pointer_is_valid, + .opt_for_fuzzing, + .optimize_for_size, + .optimize_none, + .presplit_coroutine, + .read_none, + .read_only, + .returned, + .returns_twice, + .s_ext, + .safestack, + .sanitize_address, + .sanitize_hwaddress, + .sanitize_memtag, + .sanitize_memory, + .sanitize_thread, + .shadowcallstack, + .skip_profile, + .speculatable, + .speculative_load_hardening, + .stack_protect, + .stack_protect_req, + .stack_protect_strong, + .strict_fp, + .swift_async, + .swift_error, + .swift_self, + .willreturn, + .writeonly, + .z_ext, + => true, + else => false, + }; + } + + pub fn is_int(attribute_kind: AttributeKindCode) bool { + return switch (attribute_kind) { + .alignment, + .alloc_kind, + .alloc_size, + .dereferenceable, + .dereferenceable_or_null, + .memory, + .nofpclass, + .stack_alignment, + .uw_table, + .vscale_range, + => true, + else => false, + }; + } + + pub fn is_type(attribute_kind: AttributeKindCode) bool { + return switch (attribute_kind) { + .byref, + .byval, + .elementtype, + .in_alloca, + .preallocated, + .struct_ret, + => true, + else => false, + }; + } + }; + + const AttributeCode = enum(u8) { + entry_old = 1, + entry = 2, + group_entry = 3, + }; + fn print_hex_slice(bytes: []const u8) void { for (bytes, 0..) |b, i| { if (i % 4 == 0) { @@ -1346,6 +2218,17 @@ const Bitcode = struct { current_value: u32 = 0, current_codesize: u32 = 2, block_info_current_block_id: u32 = 0, + strtab_content: PinnedArray(u8) = .{}, + + fn get_type_count(writer: *Writer) u32 { + _ = writer; // autofix + return dummy_types.len; + } + + fn compute_bits_required_for_type_indices(writer: *Writer) u32 { + const n = (writer.get_type_count() + 1); + return 32 - @ctz(n); + } fn get_byte_slice(writer: *Writer) []const u8 { const final_slice_len = writer.buffer.length * @sizeOf(u32); @@ -1360,497 +2243,608 @@ const Bitcode = struct { } fn write_module_block(writer: *Writer) void { - const raw = true; + const raw = false; if (raw) { - const module_block align(4) = [_]u8{ - 0x21, 0x0c, 0x00, 0x00, - 0xe6, 0x01, 0x00, 0x00, - 0x0b, 0x02, 0x21, 0x00, - 0x02, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, - 0x07, 0x81, 0x23, 0x91, - 0x41, 0xc8, 0x04, 0x49, - 0x06, 0x10, 0x32, 0x39, - 0x92, 0x01, 0x84, 0x0c, - 0x25, 0x05, 0x08, 0x19, - 0x1e, 0x04, 0x8b, 0x62, - 0x80, 0x0c, 0x45, 0x02, - 0x42, 0x92, 0x0b, 0x42, - 0x64, 0x10, 0x32, 0x14, - 0x38, 0x08, 0x18, 0x4b, - 0x0a, 0x32, 0x32, 0x88, - 0x48, 0x70, 0xc4, 0x21, - 0x23, 0x44, 0x12, 0x87, - 0x8c, 0x10, 0x41, 0x92, - 0x02, 0x64, 0xc8, 0x08, - 0xb1, 0x14, 0x20, 0x43, - 0x46, 0x88, 0x20, 0xc9, - 0x01, 0x32, 0x32, 0x84, - 0x18, 0x2a, 0x28, 0x2a, - 0x90, 0x31, 0x7c, 0xb0, - 0x5c, 0x91, 0x20, 0xc3, - 0xc8, 0x00, 0x00, 0x00, - 0x89, 0x20, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, - 0x22, 0x66, 0x04, 0x10, - 0xb2, 0x42, 0x82, 0xc9, - 0x10, 0x52, 0x42, 0x82, - 0xc9, 0x90, 0x71, 0xc2, - 0x50, 0x48, 0x0a, 0x09, - 0x26, 0x43, 0xc6, 0x05, - 0x42, 0x32, 0x26, 0x08, - 0x0a, 0x9a, 0x23, 0x00, - 0x83, 0x32, 0x24, 0x18, - 0x08, 0x18, 0x01, 0x00, - 0x51, 0x18, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, - 0x1b, 0x58, 0x23, 0xf8, - 0xff, 0xff, 0xff, 0xff, - 0x01, 0x70, 0x00, 0x09, - 0x28, 0x03, 0x80, 0x0b, - 0xc2, 0x40, 0x20, 0xcc, - 0x41, 0x1e, 0xc2, 0xa1, - 0x1d, 0xca, 0xa1, 0x0d, - 0xe0, 0xe1, 0x1d, 0xd2, - 0xc1, 0x1d, 0xe8, 0xa1, - 0x1c, 0xe4, 0x01, 0x08, - 0x07, 0x76, 0x60, 0x07, - 0x80, 0x68, 0x87, 0x74, - 0x70, 0x87, 0x36, 0x60, - 0x87, 0x72, 0x38, 0x87, - 0x70, 0x60, 0x87, 0x36, - 0xb0, 0x87, 0x72, 0x18, - 0x07, 0x7a, 0x78, 0x07, - 0x79, 0x68, 0x83, 0x7b, - 0x48, 0x07, 0x72, 0xa0, - 0x07, 0x74, 0x00, 0xe0, - 0x00, 0x20, 0xdc, 0xe1, - 0x1d, 0xda, 0x80, 0x1e, - 0xe4, 0x21, 0x1c, 0xe0, - 0x01, 0x1e, 0xd2, 0xc1, - 0x1d, 0xce, 0xa1, 0x0d, - 0xda, 0x21, 0x1c, 0xe8, - 0x01, 0x1d, 0x00, 0x7a, - 0x90, 0x87, 0x7a, 0x28, - 0x07, 0x80, 0x98, 0x07, - 0x7a, 0x08, 0x87, 0x71, - 0x58, 0x87, 0x36, 0x80, - 0x07, 0x79, 0x78, 0x07, - 0x7a, 0x28, 0x87, 0x71, - 0xa0, 0x87, 0x77, 0x90, - 0x87, 0x36, 0x10, 0x87, - 0x7a, 0x30, 0x07, 0x73, - 0x28, 0x07, 0x79, 0x68, - 0x83, 0x79, 0x48, 0x07, - 0x7d, 0x28, 0x07, 0x00, - 0x0f, 0x00, 0x82, 0x1e, - 0xc2, 0x41, 0x1e, 0xce, - 0xa1, 0x1c, 0xe8, 0xa1, - 0x0d, 0xc6, 0x01, 0x1e, - 0xea, 0x01, 0xc0, 0x07, - 0x3c, 0xb0, 0x83, 0x36, - 0xb0, 0x03, 0x3a, 0x00, - 0x08, 0x7a, 0x08, 0x07, - 0x79, 0x38, 0x87, 0x72, - 0xa0, 0x87, 0x36, 0x30, - 0x87, 0x72, 0x08, 0x07, - 0x7a, 0xa8, 0x07, 0x79, - 0x28, 0x87, 0x79, 0x00, - 0xd6, 0x60, 0x1c, 0xda, - 0xe1, 0x1d, 0xec, 0x81, - 0x0d, 0xd6, 0x60, 0x1c, - 0xf0, 0x01, 0x0f, 0xd8, - 0x60, 0x0d, 0xcc, 0x01, - 0x1f, 0xe6, 0x41, 0x1e, - 0xd8, 0x60, 0x0d, 0xda, - 0xa1, 0x1d, 0xf0, 0x81, - 0x0d, 0xd6, 0x60, 0x1e, - 0xe6, 0xa1, 0x1c, 0xd8, - 0x60, 0x0d, 0xe6, 0x61, - 0x1e, 0xca, 0x41, 0x0e, - 0xd8, 0x60, 0x0d, 0xf0, - 0x01, 0x0f, 0xee, 0x00, - 0x20, 0xe8, 0xa1, 0x1e, - 0xdc, 0xa1, 0x1c, 0xda, - 0x60, 0x1c, 0xe0, 0xa1, - 0x1e, 0x80, 0x73, 0x28, - 0x07, 0x77, 0x28, 0x07, - 0x79, 0x48, 0x87, 0x71, - 0x00, 0x36, 0x10, 0x42, - 0x00, 0x90, 0xc2, 0x06, - 0x62, 0x10, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, - 0x49, 0x18, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, - 0x13, 0x86, 0x40, 0x18, - 0x00, 0x00, 0x00, 0x00, - 0x13, 0x26, 0x7c, 0xc0, - 0x03, 0x3b, 0xf8, 0x05, - 0x3b, 0xa0, 0x83, 0x36, - 0x80, 0x87, 0x71, 0x68, - 0x03, 0x76, 0x48, 0x07, - 0x77, 0xa8, 0x07, 0x7c, - 0x68, 0x83, 0x73, 0x70, - 0x87, 0x7a, 0xd8, 0x60, - 0x0a, 0xe5, 0xd0, 0x06, - 0xed, 0xa0, 0x07, 0xe5, - 0xd0, 0x06, 0xf0, 0x20, - 0x07, 0x77, 0x00, 0x07, - 0x7a, 0x30, 0x07, 0x72, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x6d, 0x00, 0x0f, - 0x72, 0x70, 0x07, 0x71, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x7a, 0x30, 0x07, - 0x72, 0xd0, 0x06, 0xf0, - 0x20, 0x07, 0x77, 0x20, - 0x07, 0x7a, 0x60, 0x07, - 0x74, 0xa0, 0x07, 0x76, - 0x40, 0x07, 0x6d, 0x90, - 0x0e, 0x76, 0x40, 0x07, - 0x7a, 0x60, 0x07, 0x74, - 0xd0, 0x06, 0xe6, 0x80, - 0x07, 0x70, 0xa0, 0x07, - 0x71, 0x20, 0x07, 0x78, - 0xd0, 0x06, 0xee, 0x80, - 0x07, 0x7a, 0x10, 0x07, - 0x76, 0xa0, 0x07, 0x73, - 0x20, 0x07, 0x7a, 0x60, - 0x07, 0x74, 0xd0, 0x06, - 0xb3, 0x10, 0x07, 0x72, - 0x80, 0x07, 0x1a, 0x21, - 0x4c, 0x0e, 0x13, 0x36, - 0xdb, 0xde, 0x6e, 0xb1, - 0xd3, 0xee, 0xf5, 0x90, - 0x0a, 0x20, 0x04, 0x00, - 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x02, - 0x90, 0xd8, 0x20, 0x50, - 0x54, 0x3d, 0x00, 0x00, - 0x20, 0x0b, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x32, 0x1e, 0x98, 0x0c, - 0x19, 0x11, 0x4c, 0x90, - 0x8c, 0x09, 0x26, 0x47, - 0xc6, 0x04, 0x43, 0x4a, - 0x09, 0x14, 0x42, 0x41, - 0x14, 0x41, 0x39, 0x00, - 0xb1, 0x18, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, - 0x33, 0x08, 0x80, 0x1c, - 0xc4, 0xe1, 0x1c, 0x66, - 0x14, 0x01, 0x3d, 0x88, - 0x43, 0x38, 0x84, 0xc3, - 0x8c, 0x42, 0x80, 0x07, - 0x79, 0x78, 0x07, 0x73, - 0x98, 0x71, 0x0c, 0xe6, - 0x00, 0x0f, 0xed, 0x10, - 0x0e, 0xf4, 0x80, 0x0e, - 0x33, 0x0c, 0x42, 0x1e, - 0xc2, 0xc1, 0x1d, 0xce, - 0xa1, 0x1c, 0x66, 0x30, - 0x05, 0x3d, 0x88, 0x43, - 0x38, 0x84, 0x83, 0x1b, - 0xcc, 0x03, 0x3d, 0xc8, - 0x43, 0x3d, 0x8c, 0x03, - 0x3d, 0xcc, 0x78, 0x8c, - 0x74, 0x70, 0x07, 0x7b, - 0x08, 0x07, 0x79, 0x48, - 0x87, 0x70, 0x70, 0x07, - 0x7a, 0x70, 0x03, 0x76, - 0x78, 0x87, 0x70, 0x20, - 0x87, 0x19, 0xcc, 0x11, - 0x0e, 0xec, 0x90, 0x0e, - 0xe1, 0x30, 0x0f, 0x6e, - 0x30, 0x0f, 0xe3, 0xf0, - 0x0e, 0xf0, 0x50, 0x0e, - 0x33, 0x10, 0xc4, 0x1d, - 0xde, 0x21, 0x1c, 0xd8, - 0x21, 0x1d, 0xc2, 0x61, - 0x1e, 0x66, 0x30, 0x89, - 0x3b, 0xbc, 0x83, 0x3b, - 0xd0, 0x43, 0x39, 0xb4, - 0x03, 0x3c, 0xbc, 0x83, - 0x3c, 0x84, 0x03, 0x3b, - 0xcc, 0xf0, 0x14, 0x76, - 0x60, 0x07, 0x7b, 0x68, - 0x07, 0x37, 0x68, 0x87, - 0x72, 0x68, 0x07, 0x37, - 0x80, 0x87, 0x70, 0x90, - 0x87, 0x70, 0x60, 0x07, - 0x76, 0x28, 0x07, 0x76, - 0xf8, 0x05, 0x76, 0x78, - 0x87, 0x77, 0x80, 0x87, - 0x5f, 0x08, 0x87, 0x71, - 0x18, 0x87, 0x72, 0x98, - 0x87, 0x79, 0x98, 0x81, - 0x2c, 0xee, 0xf0, 0x0e, - 0xee, 0xe0, 0x0e, 0xf5, - 0xc0, 0x0e, 0xec, 0x30, - 0x03, 0x62, 0xc8, 0xa1, - 0x1c, 0xe4, 0xa1, 0x1c, - 0xcc, 0xa1, 0x1c, 0xe4, - 0xa1, 0x1c, 0xdc, 0x61, - 0x1c, 0xca, 0x21, 0x1c, - 0xc4, 0x81, 0x1d, 0xca, - 0x61, 0x06, 0xd6, 0x90, - 0x43, 0x39, 0xc8, 0x43, - 0x39, 0x98, 0x43, 0x39, - 0xc8, 0x43, 0x39, 0xb8, - 0xc3, 0x38, 0x94, 0x43, - 0x38, 0x88, 0x03, 0x3b, - 0x94, 0xc3, 0x2f, 0xbc, - 0x83, 0x3c, 0xfc, 0x82, - 0x3b, 0xd4, 0x03, 0x3b, - 0xb0, 0xc3, 0x0c, 0xc7, - 0x69, 0x87, 0x70, 0x58, - 0x87, 0x72, 0x70, 0x83, - 0x74, 0x68, 0x07, 0x78, - 0x60, 0x87, 0x74, 0x18, - 0x87, 0x74, 0xa0, 0x87, - 0x19, 0xce, 0x53, 0x0f, - 0xee, 0x00, 0x0f, 0xf2, - 0x50, 0x0e, 0xe4, 0x90, - 0x0e, 0xe3, 0x40, 0x0f, - 0xe1, 0x20, 0x0e, 0xec, - 0x50, 0x0e, 0x33, 0x20, - 0x28, 0x1d, 0xdc, 0xc1, - 0x1e, 0xc2, 0x41, 0x1e, - 0xd2, 0x21, 0x1c, 0xdc, - 0x81, 0x1e, 0xdc, 0xe0, - 0x1c, 0xe4, 0xe1, 0x1d, - 0xea, 0x01, 0x1e, 0x66, - 0x18, 0x51, 0x38, 0xb0, - 0x43, 0x3a, 0x9c, 0x83, - 0x3b, 0xcc, 0x50, 0x24, - 0x76, 0x60, 0x07, 0x7b, - 0x68, 0x07, 0x37, 0x60, - 0x87, 0x77, 0x78, 0x07, - 0x78, 0x98, 0x51, 0x4c, - 0xf4, 0x90, 0x0f, 0xf0, - 0x50, 0x0e, 0x33, 0x1e, - 0x6a, 0x1e, 0xca, 0x61, - 0x1c, 0xe8, 0x21, 0x1d, - 0xde, 0xc1, 0x1d, 0x7e, - 0x01, 0x1e, 0xe4, 0xa1, - 0x1c, 0xcc, 0x21, 0x1d, - 0xf0, 0x61, 0x06, 0x54, - 0x85, 0x83, 0x38, 0xcc, - 0xc3, 0x3b, 0xb0, 0x43, - 0x3d, 0xd0, 0x43, 0x39, - 0xfc, 0xc2, 0x3c, 0xe4, - 0x43, 0x3b, 0x88, 0xc3, - 0x3b, 0xb0, 0xc3, 0x8c, - 0xc5, 0x0a, 0x87, 0x79, - 0x98, 0x87, 0x77, 0x18, - 0x87, 0x74, 0x08, 0x07, - 0x7a, 0x28, 0x07, 0x72, - 0x98, 0x81, 0x5c, 0xe3, - 0x10, 0x0e, 0xec, 0xc0, - 0x0e, 0xe5, 0x50, 0x0e, - 0xf3, 0x30, 0x23, 0xc1, - 0xd2, 0x41, 0x1e, 0xe4, - 0xe1, 0x17, 0xd8, 0xe1, - 0x1d, 0xde, 0x01, 0x1e, - 0x66, 0x48, 0x19, 0x3b, - 0xb0, 0x83, 0x3d, 0xb4, - 0x83, 0x1b, 0x84, 0xc3, - 0x38, 0x8c, 0x43, 0x39, - 0xcc, 0xc3, 0x3c, 0xb8, - 0xc1, 0x39, 0xc8, 0xc3, - 0x3b, 0xd4, 0x03, 0x3c, - 0xcc, 0x48, 0xb4, 0x71, - 0x08, 0x07, 0x76, 0x60, - 0x07, 0x71, 0x08, 0x87, - 0x71, 0x58, 0x87, 0x19, - 0xdb, 0xc6, 0x0e, 0xec, - 0x60, 0x0f, 0xed, 0xe0, - 0x06, 0xf0, 0x20, 0x0f, - 0xe5, 0x30, 0x0f, 0xe5, - 0x20, 0x0f, 0xf6, 0x50, - 0x0e, 0x6e, 0x10, 0x0e, - 0xe3, 0x30, 0x0e, 0xe5, - 0x30, 0x0f, 0xf3, 0xe0, - 0x06, 0xe9, 0xe0, 0x0e, - 0xe4, 0x50, 0x0e, 0xf8, - 0x30, 0x23, 0xe2, 0xec, - 0x61, 0x1c, 0xc2, 0x81, - 0x1d, 0xd8, 0xe1, 0x17, - 0xec, 0x21, 0x1d, 0xe6, - 0x21, 0x1d, 0xc4, 0x21, - 0x1d, 0xd8, 0x21, 0x1d, - 0xe8, 0x21, 0x1f, 0x66, - 0x20, 0x9d, 0x3b, 0xbc, - 0x43, 0x3d, 0xb8, 0x03, - 0x39, 0x94, 0x83, 0x39, - 0xcc, 0x58, 0xbc, 0x70, - 0x70, 0x07, 0x77, 0x78, - 0x07, 0x7a, 0x08, 0x07, - 0x7a, 0x48, 0x87, 0x77, - 0x70, 0x87, 0x19, 0xcb, - 0xe7, 0x0e, 0xef, 0x30, - 0x0f, 0xe1, 0xe0, 0x0e, - 0xe9, 0x40, 0x0f, 0xe9, - 0xa0, 0x0f, 0xe5, 0x30, - 0xc3, 0x01, 0x03, 0x73, - 0xa8, 0x07, 0x77, 0x18, - 0x87, 0x5f, 0x98, 0x87, - 0x70, 0x70, 0x87, 0x74, - 0xa0, 0x87, 0x74, 0xd0, - 0x87, 0x72, 0x98, 0x81, - 0x84, 0x41, 0x39, 0xe0, - 0xc3, 0x38, 0xb0, 0x43, - 0x3d, 0x90, 0x43, 0x39, - 0xcc, 0x40, 0xc4, 0xa0, - 0x1d, 0xca, 0xa1, 0x1d, - 0xe0, 0x41, 0x1e, 0xde, - 0xc1, 0x1c, 0x66, 0x24, - 0x63, 0x30, 0x0e, 0xe1, - 0xc0, 0x0e, 0xec, 0x30, - 0x0f, 0xe9, 0x40, 0x0f, - 0xe5, 0x30, 0x43, 0x21, - 0x83, 0x75, 0x18, 0x07, - 0x73, 0x48, 0x87, 0x5f, - 0xa0, 0x87, 0x7c, 0x80, - 0x87, 0x72, 0x98, 0xb1, - 0x94, 0x01, 0x3c, 0x8c, - 0xc3, 0x3c, 0x94, 0xc3, - 0x38, 0xd0, 0x43, 0x3a, - 0xbc, 0x83, 0x3b, 0xcc, - 0xc3, 0x8c, 0xc5, 0x0c, - 0x48, 0x21, 0x15, 0x42, - 0x61, 0x1e, 0xe6, 0x21, - 0x1d, 0xce, 0xc1, 0x1d, - 0x52, 0x81, 0x14, 0x00, - 0x79, 0x20, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, - 0x72, 0x1e, 0x48, 0x20, - 0x43, 0x88, 0x0c, 0x19, - 0x09, 0x72, 0x32, 0x48, - 0x20, 0x23, 0x81, 0x8c, - 0x91, 0x91, 0xd1, 0x44, - 0xa0, 0x10, 0x28, 0x64, - 0x3c, 0x31, 0x32, 0x42, - 0x8e, 0x90, 0x21, 0xa3, - 0x68, 0x20, 0xac, 0x00, - 0x94, 0x92, 0x24, 0x47, - 0x03, 0x00, 0x00, 0x00, - 0x63, 0x6c, 0x61, 0x6e, - 0x67, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x31, 0x37, - 0x2e, 0x30, 0x2e, 0x36, - 0x77, 0x63, 0x68, 0x61, - 0x72, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x50, 0x49, - 0x43, 0x20, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x50, - 0x49, 0x45, 0x20, 0x4c, - 0x65, 0x76, 0x65, 0x6c, - 0x75, 0x77, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x66, - 0x72, 0x61, 0x6d, 0x65, - 0x2d, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x65, 0x72, - 0x23, 0x08, 0x41, 0x30, - 0x82, 0x10, 0x08, 0x23, - 0x08, 0xc1, 0x30, 0x82, - 0x10, 0x10, 0x23, 0x08, - 0x41, 0x31, 0x43, 0x10, - 0xcc, 0x30, 0x1c, 0x02, - 0x32, 0xc3, 0x90, 0x0c, - 0xca, 0x0c, 0xc3, 0x42, - 0x28, 0x33, 0x0c, 0x4b, - 0xa1, 0xcc, 0x30, 0x2c, - 0x86, 0x22, 0x23, 0x81, - 0x09, 0x4a, 0x85, 0x8d, - 0xcd, 0xae, 0xcd, 0x25, - 0x8d, 0xac, 0xcc, 0x8d, - 0x6e, 0x94, 0x60, 0xc9, - 0x88, 0x8d, 0xcd, 0xae, - 0xcd, 0xa5, 0xed, 0x8d, - 0xac, 0x8e, 0xad, 0xcc, - 0xc5, 0x8c, 0x2d, 0xec, - 0x6c, 0x6e, 0x94, 0x82, - 0x69, 0x9c, 0x07, 0x02, - 0xa9, 0x18, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, - 0x0b, 0x0a, 0x72, 0x28, - 0x87, 0x77, 0x80, 0x07, - 0x7a, 0x58, 0x70, 0x98, - 0x43, 0x3d, 0xb8, 0xc3, - 0x38, 0xb0, 0x43, 0x39, - 0xd0, 0xc3, 0x82, 0xe6, - 0x1c, 0xc6, 0xa1, 0x0d, - 0xe8, 0x41, 0x1e, 0xc2, - 0xc1, 0x1d, 0xe6, 0x21, - 0x1d, 0xe8, 0x21, 0x1d, - 0xde, 0xc1, 0x1d, 0x16, - 0x34, 0xe3, 0x60, 0x0e, - 0xe7, 0x50, 0x0f, 0xe1, - 0x20, 0x0f, 0xe4, 0x40, - 0x0f, 0xe1, 0x20, 0x0f, - 0xe7, 0x50, 0x0e, 0xf4, - 0xb0, 0x80, 0x81, 0x07, - 0x79, 0x28, 0x87, 0x70, - 0x60, 0x07, 0x76, 0x78, - 0x87, 0x71, 0x08, 0x07, - 0x7a, 0x28, 0x07, 0x72, - 0x58, 0x70, 0x9c, 0xc3, - 0x38, 0xb4, 0x01, 0x3b, - 0xa4, 0x83, 0x3d, 0x94, - 0xc3, 0x02, 0x6b, 0x1c, - 0xd8, 0x21, 0x1c, 0xdc, - 0xe1, 0x1c, 0xdc, 0x20, - 0x1c, 0xe4, 0x61, 0x1c, - 0xdc, 0x20, 0x1c, 0xe8, - 0x81, 0x1e, 0xc2, 0x61, - 0x1c, 0xd0, 0xa1, 0x1c, - 0xc8, 0x61, 0x1c, 0xc2, - 0x81, 0x1d, 0xd8, 0x61, - 0xc1, 0x01, 0x0f, 0xf4, - 0x20, 0x0f, 0xe1, 0x50, - 0x0f, 0xf4, 0x80, 0x0e, - 0x0b, 0x88, 0x75, 0x18, - 0x07, 0x73, 0x48, 0x87, - 0x05, 0xcf, 0x38, 0xbc, - 0x83, 0x3b, 0xd8, 0x43, - 0x39, 0xc8, 0xc3, 0x39, - 0x94, 0x83, 0x3b, 0x8c, - 0x43, 0x39, 0x8c, 0x03, - 0x3d, 0xc8, 0x03, 0x3b, - 0x00, 0x00, 0x00, 0x00, - 0xd1, 0x10, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x07, 0xcc, 0x3c, 0xa4, - 0x83, 0x3b, 0x9c, 0x03, - 0x3b, 0x94, 0x03, 0x3d, - 0xa0, 0x83, 0x3c, 0x94, - 0x43, 0x38, 0x90, 0xc3, - 0x01, 0x00, 0x00, 0x00, - 0x61, 0x20, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, - 0x13, 0x04, 0x41, 0x2c, - 0x10, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x94, 0x11, 0x00, 0x00, - 0x33, 0x11, 0x41, 0x10, - 0x8c, 0xc2, 0x4c, 0x44, - 0x10, 0x04, 0xa3, 0x30, - 0x13, 0x01, 0x04, 0x01, - 0x29, 0x0c, 0x1b, 0x10, - 0x03, 0x31, 0x00, 0xc3, - 0x06, 0x84, 0x60, 0x0c, - 0xc0, 0xb0, 0x01, 0x11, - 0x14, 0x04, 0xb0, 0x04, - 0x00, 0x00, 0x00, 0x00, - 0x71, 0x20, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, - 0x32, 0x0e, 0x10, 0x22, - 0x84, 0x00, 0xda, 0x03, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + const module_block align(4) = [_]u8 { + 0x21, 0x0c, 0x00, 0x00, + 0x55, 0x02, 0x00, 0x00, + 0x0b, 0x02, 0x21, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x00, 0x00, + 0x07, 0x81, 0x23, 0x91, + 0x41, 0xc8, 0x04, 0x49, + 0x06, 0x10, 0x32, 0x39, + 0x92, 0x01, 0x84, 0x0c, + 0x25, 0x05, 0x08, 0x19, + 0x1e, 0x04, 0x8b, 0x62, + 0x80, 0x0c, 0x45, 0x02, + 0x42, 0x92, 0x0b, 0x42, + 0x64, 0x10, 0x32, 0x14, + 0x38, 0x08, 0x18, 0x4b, + 0x0a, 0x32, 0x32, 0x88, + 0x48, 0x70, 0xc4, 0x21, + 0x23, 0x44, 0x12, 0x87, + 0x8c, 0x10, 0x41, 0x92, + 0x02, 0x64, 0xc8, 0x08, + 0xb1, 0x14, 0x20, 0x43, + 0x46, 0x88, 0x20, 0xc9, + 0x01, 0x32, 0x32, 0x84, + 0x18, 0x2a, 0x28, 0x2a, + 0x90, 0x31, 0x7c, 0xb0, + 0x5c, 0x91, 0x20, 0xc3, + 0xc8, 0x00, 0x00, 0x00, + 0x89, 0x20, 0x00, 0x00, + 0x0b, 0x00, 0x00, 0x00, + 0x22, 0x66, 0x04, 0x10, + 0xb2, 0x42, 0x82, 0xc9, + 0x10, 0x52, 0x42, 0x82, + 0xc9, 0x90, 0x71, 0xc2, + 0x50, 0x48, 0x0a, 0x09, + 0x26, 0x43, 0xc6, 0x05, + 0x42, 0x32, 0x26, 0x08, + 0x0c, 0x9a, 0x23, 0x00, + 0x83, 0x32, 0x24, 0x18, + 0x01, 0x18, 0x08, 0x28, + 0xc4, 0x48, 0x02, 0x00, + 0x51, 0x18, 0x00, 0x00, + 0x52, 0x00, 0x00, 0x00, + 0x1b, 0x58, 0x23, 0xf8, + 0xff, 0xff, 0xff, 0xff, + 0x01, 0x70, 0x00, 0x09, + 0x28, 0x03, 0x80, 0x0b, + 0xc2, 0x40, 0x20, 0xcc, + 0x41, 0x1e, 0xc2, 0xa1, + 0x1d, 0xca, 0xa1, 0x0d, + 0xe0, 0xe1, 0x1d, 0xd2, + 0xc1, 0x1d, 0xe8, 0xa1, + 0x1c, 0xe4, 0x01, 0x08, + 0x07, 0x76, 0x60, 0x07, + 0x80, 0x68, 0x87, 0x74, + 0x70, 0x87, 0x36, 0x60, + 0x87, 0x72, 0x38, 0x87, + 0x70, 0x60, 0x87, 0x36, + 0xb0, 0x87, 0x72, 0x18, + 0x07, 0x7a, 0x78, 0x07, + 0x79, 0x68, 0x83, 0x7b, + 0x48, 0x07, 0x72, 0xa0, + 0x07, 0x74, 0x00, 0xe0, + 0x00, 0x20, 0xdc, 0xe1, + 0x1d, 0xda, 0x80, 0x1e, + 0xe4, 0x21, 0x1c, 0xe0, + 0x01, 0x1e, 0xd2, 0xc1, + 0x1d, 0xce, 0xa1, 0x0d, + 0xda, 0x21, 0x1c, 0xe8, + 0x01, 0x1d, 0x00, 0x7a, + 0x90, 0x87, 0x7a, 0x28, + 0x07, 0x80, 0x98, 0x07, + 0x7a, 0x08, 0x87, 0x71, + 0x58, 0x87, 0x36, 0x80, + 0x07, 0x79, 0x78, 0x07, + 0x7a, 0x28, 0x87, 0x71, + 0xa0, 0x87, 0x77, 0x90, + 0x87, 0x36, 0x10, 0x87, + 0x7a, 0x30, 0x07, 0x73, + 0x28, 0x07, 0x79, 0x68, + 0x83, 0x79, 0x48, 0x07, + 0x7d, 0x28, 0x07, 0x00, + 0x0f, 0x00, 0x82, 0x1e, + 0xc2, 0x41, 0x1e, 0xce, + 0xa1, 0x1c, 0xe8, 0xa1, + 0x0d, 0xc6, 0x01, 0x1e, + 0xea, 0x01, 0xc0, 0x07, + 0x3c, 0xb0, 0x83, 0x36, + 0xb0, 0x03, 0x3a, 0x00, + 0x08, 0x7a, 0x08, 0x07, + 0x79, 0x38, 0x87, 0x72, + 0xa0, 0x87, 0x36, 0x30, + 0x87, 0x72, 0x08, 0x07, + 0x7a, 0xa8, 0x07, 0x79, + 0x28, 0x87, 0x79, 0x00, + 0xd6, 0x60, 0x1c, 0xda, + 0xe1, 0x1d, 0xec, 0x81, + 0x0d, 0xd6, 0x60, 0x1c, + 0xf0, 0x01, 0x0f, 0xd8, + 0x60, 0x0d, 0xcc, 0x01, + 0x1f, 0xe6, 0x41, 0x1e, + 0xd8, 0x60, 0x0d, 0xda, + 0xa1, 0x1d, 0xf0, 0x81, + 0x0d, 0xd6, 0x60, 0x1e, + 0xe6, 0xa1, 0x1c, 0xd8, + 0x60, 0x0d, 0xe6, 0x61, + 0x1e, 0xca, 0x41, 0x0e, + 0xd8, 0x60, 0x0d, 0xf0, + 0x01, 0x0f, 0xee, 0x00, + 0x20, 0xe8, 0xa1, 0x1e, + 0xdc, 0xa1, 0x1c, 0xda, + 0x60, 0x1c, 0xe0, 0xa1, + 0x1e, 0x80, 0x73, 0x28, + 0x07, 0x77, 0x28, 0x07, + 0x79, 0x48, 0x87, 0x71, + 0x00, 0x36, 0x10, 0x42, + 0x00, 0x90, 0xc2, 0x06, + 0x62, 0x10, 0x00, 0x52, + 0xd8, 0x10, 0x11, 0xff, + 0xff, 0xff, 0xff, 0x3f, + 0x00, 0xa7, 0x00, 0xf8, + 0x01, 0xf0, 0x07, 0x80, + 0x04, 0xd4, 0x01, 0xd0, + 0x07, 0x81, 0x2d, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x49, 0x18, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x13, 0x86, 0x40, 0x18, + 0x26, 0x04, 0x04, 0x00, + 0x13, 0x26, 0x7c, 0xc0, + 0x03, 0x3b, 0xf8, 0x05, + 0x3b, 0xa0, 0x83, 0x36, + 0x80, 0x87, 0x71, 0x68, + 0x03, 0x76, 0x48, 0x07, + 0x77, 0xa8, 0x07, 0x7c, + 0x68, 0x83, 0x73, 0x70, + 0x87, 0x7a, 0xd8, 0x60, + 0x0a, 0xe5, 0xd0, 0x06, + 0xed, 0xa0, 0x07, 0xe5, + 0xd0, 0x06, 0xf0, 0x20, + 0x07, 0x77, 0x00, 0x07, + 0x7a, 0x30, 0x07, 0x72, + 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x6d, 0x00, 0x0f, + 0x72, 0x70, 0x07, 0x71, + 0xa0, 0x07, 0x73, 0x20, + 0x07, 0x7a, 0x30, 0x07, + 0x72, 0xd0, 0x06, 0xf0, + 0x20, 0x07, 0x77, 0x20, + 0x07, 0x7a, 0x60, 0x07, + 0x74, 0xa0, 0x07, 0x76, + 0x40, 0x07, 0x6d, 0x90, + 0x0e, 0x76, 0x40, 0x07, + 0x7a, 0x60, 0x07, 0x74, + 0xd0, 0x06, 0xe6, 0x80, + 0x07, 0x70, 0xa0, 0x07, + 0x71, 0x20, 0x07, 0x78, + 0xd0, 0x06, 0xee, 0x80, + 0x07, 0x7a, 0x10, 0x07, + 0x76, 0xa0, 0x07, 0x73, + 0x20, 0x07, 0x7a, 0x60, + 0x07, 0x74, 0xd0, 0x06, + 0xb3, 0x10, 0x07, 0x72, + 0x80, 0x07, 0x1a, 0x21, + 0x0c, 0x69, 0x30, 0x00, + 0xd2, 0xf8, 0xc2, 0x90, + 0x0a, 0x20, 0x04, 0x00, + 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x08, 0x00, 0x02, + 0x18, 0x52, 0x11, 0x50, + 0x01, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x40, 0x00, 0x12, 0x1b, + 0x04, 0x8a, 0x66, 0x09, + 0x00, 0x00, 0x64, 0x81, + 0x00, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, + 0x32, 0x1e, 0x98, 0x10, + 0x19, 0x11, 0x4c, 0x90, + 0x8c, 0x09, 0x26, 0x47, + 0xc6, 0x04, 0x43, 0x4a, + 0x39, 0x94, 0x42, 0x11, + 0x94, 0x41, 0x09, 0x14, + 0x42, 0x41, 0x00, 0x00, + 0xb1, 0x18, 0x00, 0x00, + 0xb9, 0x00, 0x00, 0x00, + 0x33, 0x08, 0x80, 0x1c, + 0xc4, 0xe1, 0x1c, 0x66, + 0x14, 0x01, 0x3d, 0x88, + 0x43, 0x38, 0x84, 0xc3, + 0x8c, 0x42, 0x80, 0x07, + 0x79, 0x78, 0x07, 0x73, + 0x98, 0x71, 0x0c, 0xe6, + 0x00, 0x0f, 0xed, 0x10, + 0x0e, 0xf4, 0x80, 0x0e, + 0x33, 0x0c, 0x42, 0x1e, + 0xc2, 0xc1, 0x1d, 0xce, + 0xa1, 0x1c, 0x66, 0x30, + 0x05, 0x3d, 0x88, 0x43, + 0x38, 0x84, 0x83, 0x1b, + 0xcc, 0x03, 0x3d, 0xc8, + 0x43, 0x3d, 0x8c, 0x03, + 0x3d, 0xcc, 0x78, 0x8c, + 0x74, 0x70, 0x07, 0x7b, + 0x08, 0x07, 0x79, 0x48, + 0x87, 0x70, 0x70, 0x07, + 0x7a, 0x70, 0x03, 0x76, + 0x78, 0x87, 0x70, 0x20, + 0x87, 0x19, 0xcc, 0x11, + 0x0e, 0xec, 0x90, 0x0e, + 0xe1, 0x30, 0x0f, 0x6e, + 0x30, 0x0f, 0xe3, 0xf0, + 0x0e, 0xf0, 0x50, 0x0e, + 0x33, 0x10, 0xc4, 0x1d, + 0xde, 0x21, 0x1c, 0xd8, + 0x21, 0x1d, 0xc2, 0x61, + 0x1e, 0x66, 0x30, 0x89, + 0x3b, 0xbc, 0x83, 0x3b, + 0xd0, 0x43, 0x39, 0xb4, + 0x03, 0x3c, 0xbc, 0x83, + 0x3c, 0x84, 0x03, 0x3b, + 0xcc, 0xf0, 0x14, 0x76, + 0x60, 0x07, 0x7b, 0x68, + 0x07, 0x37, 0x68, 0x87, + 0x72, 0x68, 0x07, 0x37, + 0x80, 0x87, 0x70, 0x90, + 0x87, 0x70, 0x60, 0x07, + 0x76, 0x28, 0x07, 0x76, + 0xf8, 0x05, 0x76, 0x78, + 0x87, 0x77, 0x80, 0x87, + 0x5f, 0x08, 0x87, 0x71, + 0x18, 0x87, 0x72, 0x98, + 0x87, 0x79, 0x98, 0x81, + 0x2c, 0xee, 0xf0, 0x0e, + 0xee, 0xe0, 0x0e, 0xf5, + 0xc0, 0x0e, 0xec, 0x30, + 0x03, 0x62, 0xc8, 0xa1, + 0x1c, 0xe4, 0xa1, 0x1c, + 0xcc, 0xa1, 0x1c, 0xe4, + 0xa1, 0x1c, 0xdc, 0x61, + 0x1c, 0xca, 0x21, 0x1c, + 0xc4, 0x81, 0x1d, 0xca, + 0x61, 0x06, 0xd6, 0x90, + 0x43, 0x39, 0xc8, 0x43, + 0x39, 0x98, 0x43, 0x39, + 0xc8, 0x43, 0x39, 0xb8, + 0xc3, 0x38, 0x94, 0x43, + 0x38, 0x88, 0x03, 0x3b, + 0x94, 0xc3, 0x2f, 0xbc, + 0x83, 0x3c, 0xfc, 0x82, + 0x3b, 0xd4, 0x03, 0x3b, + 0xb0, 0xc3, 0x0c, 0xc7, + 0x69, 0x87, 0x70, 0x58, + 0x87, 0x72, 0x70, 0x83, + 0x74, 0x68, 0x07, 0x78, + 0x60, 0x87, 0x74, 0x18, + 0x87, 0x74, 0xa0, 0x87, + 0x19, 0xce, 0x53, 0x0f, + 0xee, 0x00, 0x0f, 0xf2, + 0x50, 0x0e, 0xe4, 0x90, + 0x0e, 0xe3, 0x40, 0x0f, + 0xe1, 0x20, 0x0e, 0xec, + 0x50, 0x0e, 0x33, 0x20, + 0x28, 0x1d, 0xdc, 0xc1, + 0x1e, 0xc2, 0x41, 0x1e, + 0xd2, 0x21, 0x1c, 0xdc, + 0x81, 0x1e, 0xdc, 0xe0, + 0x1c, 0xe4, 0xe1, 0x1d, + 0xea, 0x01, 0x1e, 0x66, + 0x18, 0x51, 0x38, 0xb0, + 0x43, 0x3a, 0x9c, 0x83, + 0x3b, 0xcc, 0x50, 0x24, + 0x76, 0x60, 0x07, 0x7b, + 0x68, 0x07, 0x37, 0x60, + 0x87, 0x77, 0x78, 0x07, + 0x78, 0x98, 0x51, 0x4c, + 0xf4, 0x90, 0x0f, 0xf0, + 0x50, 0x0e, 0x33, 0x1e, + 0x6a, 0x1e, 0xca, 0x61, + 0x1c, 0xe8, 0x21, 0x1d, + 0xde, 0xc1, 0x1d, 0x7e, + 0x01, 0x1e, 0xe4, 0xa1, + 0x1c, 0xcc, 0x21, 0x1d, + 0xf0, 0x61, 0x06, 0x54, + 0x85, 0x83, 0x38, 0xcc, + 0xc3, 0x3b, 0xb0, 0x43, + 0x3d, 0xd0, 0x43, 0x39, + 0xfc, 0xc2, 0x3c, 0xe4, + 0x43, 0x3b, 0x88, 0xc3, + 0x3b, 0xb0, 0xc3, 0x8c, + 0xc5, 0x0a, 0x87, 0x79, + 0x98, 0x87, 0x77, 0x18, + 0x87, 0x74, 0x08, 0x07, + 0x7a, 0x28, 0x07, 0x72, + 0x98, 0x81, 0x5c, 0xe3, + 0x10, 0x0e, 0xec, 0xc0, + 0x0e, 0xe5, 0x50, 0x0e, + 0xf3, 0x30, 0x23, 0xc1, + 0xd2, 0x41, 0x1e, 0xe4, + 0xe1, 0x17, 0xd8, 0xe1, + 0x1d, 0xde, 0x01, 0x1e, + 0x66, 0x48, 0x19, 0x3b, + 0xb0, 0x83, 0x3d, 0xb4, + 0x83, 0x1b, 0x84, 0xc3, + 0x38, 0x8c, 0x43, 0x39, + 0xcc, 0xc3, 0x3c, 0xb8, + 0xc1, 0x39, 0xc8, 0xc3, + 0x3b, 0xd4, 0x03, 0x3c, + 0xcc, 0x48, 0xb4, 0x71, + 0x08, 0x07, 0x76, 0x60, + 0x07, 0x71, 0x08, 0x87, + 0x71, 0x58, 0x87, 0x19, + 0xdb, 0xc6, 0x0e, 0xec, + 0x60, 0x0f, 0xed, 0xe0, + 0x06, 0xf0, 0x20, 0x0f, + 0xe5, 0x30, 0x0f, 0xe5, + 0x20, 0x0f, 0xf6, 0x50, + 0x0e, 0x6e, 0x10, 0x0e, + 0xe3, 0x30, 0x0e, 0xe5, + 0x30, 0x0f, 0xf3, 0xe0, + 0x06, 0xe9, 0xe0, 0x0e, + 0xe4, 0x50, 0x0e, 0xf8, + 0x30, 0x23, 0xe2, 0xec, + 0x61, 0x1c, 0xc2, 0x81, + 0x1d, 0xd8, 0xe1, 0x17, + 0xec, 0x21, 0x1d, 0xe6, + 0x21, 0x1d, 0xc4, 0x21, + 0x1d, 0xd8, 0x21, 0x1d, + 0xe8, 0x21, 0x1f, 0x66, + 0x20, 0x9d, 0x3b, 0xbc, + 0x43, 0x3d, 0xb8, 0x03, + 0x39, 0x94, 0x83, 0x39, + 0xcc, 0x58, 0xbc, 0x70, + 0x70, 0x07, 0x77, 0x78, + 0x07, 0x7a, 0x08, 0x07, + 0x7a, 0x48, 0x87, 0x77, + 0x70, 0x87, 0x19, 0xcb, + 0xe7, 0x0e, 0xef, 0x30, + 0x0f, 0xe1, 0xe0, 0x0e, + 0xe9, 0x40, 0x0f, 0xe9, + 0xa0, 0x0f, 0xe5, 0x30, + 0xc3, 0x01, 0x03, 0x73, + 0xa8, 0x07, 0x77, 0x18, + 0x87, 0x5f, 0x98, 0x87, + 0x70, 0x70, 0x87, 0x74, + 0xa0, 0x87, 0x74, 0xd0, + 0x87, 0x72, 0x98, 0x81, + 0x84, 0x41, 0x39, 0xe0, + 0xc3, 0x38, 0xb0, 0x43, + 0x3d, 0x90, 0x43, 0x39, + 0xcc, 0x40, 0xc4, 0xa0, + 0x1d, 0xca, 0xa1, 0x1d, + 0xe0, 0x41, 0x1e, 0xde, + 0xc1, 0x1c, 0x66, 0x24, + 0x63, 0x30, 0x0e, 0xe1, + 0xc0, 0x0e, 0xec, 0x30, + 0x0f, 0xe9, 0x40, 0x0f, + 0xe5, 0x30, 0x43, 0x21, + 0x83, 0x75, 0x18, 0x07, + 0x73, 0x48, 0x87, 0x5f, + 0xa0, 0x87, 0x7c, 0x80, + 0x87, 0x72, 0x98, 0xb1, + 0x94, 0x01, 0x3c, 0x8c, + 0xc3, 0x3c, 0x94, 0xc3, + 0x38, 0xd0, 0x43, 0x3a, + 0xbc, 0x83, 0x3b, 0xcc, + 0xc3, 0x8c, 0xc5, 0x0c, + 0x48, 0x21, 0x15, 0x42, + 0x61, 0x1e, 0xe6, 0x21, + 0x1d, 0xce, 0xc1, 0x1d, + 0x52, 0x81, 0x14, 0x00, + 0x79, 0x20, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, + 0x72, 0x1e, 0x48, 0x20, + 0x43, 0x88, 0x0c, 0x19, + 0x09, 0x72, 0x32, 0x48, + 0x20, 0x23, 0x81, 0x8c, + 0x91, 0x91, 0xd1, 0x44, + 0xa0, 0x10, 0x28, 0x64, + 0x3c, 0x31, 0x32, 0x42, + 0x8e, 0x90, 0x21, 0xa3, + 0xb8, 0x30, 0x60, 0x01, + 0xc6, 0x02, 0x06, 0x54, + 0x23, 0x29, 0x49, 0x72, + 0x34, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, + 0x2e, 0x63, 0x2f, 0x68, + 0x6f, 0x6d, 0x65, 0x2f, + 0x64, 0x61, 0x76, 0x69, + 0x64, 0x64, 0x35, 0x36, + 0x65, 0x30, 0x63, 0x30, + 0x39, 0x62, 0x30, 0x32, + 0x32, 0x33, 0x37, 0x61, + 0x61, 0x37, 0x38, 0x63, + 0x61, 0x62, 0x39, 0x39, + 0x64, 0x35, 0x36, 0x65, + 0x65, 0x65, 0x36, 0x63, + 0x63, 0x63, 0x6c, 0x61, + 0x6e, 0x67, 0x20, 0x76, + 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x20, 0x31, + 0x37, 0x2e, 0x30, 0x2e, + 0x36, 0x44, 0x77, 0x61, + 0x72, 0x66, 0x20, 0x56, + 0x65, 0x72, 0x73, 0x69, + 0x6f, 0x6e, 0x44, 0x65, + 0x62, 0x75, 0x67, 0x20, + 0x49, 0x6e, 0x66, 0x6f, + 0x20, 0x56, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, + 0x77, 0x63, 0x68, 0x61, + 0x72, 0x5f, 0x73, 0x69, + 0x7a, 0x65, 0x50, 0x49, + 0x43, 0x20, 0x4c, 0x65, + 0x76, 0x65, 0x6c, 0x50, + 0x49, 0x45, 0x20, 0x4c, + 0x65, 0x76, 0x65, 0x6c, + 0x75, 0x77, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x66, + 0x72, 0x61, 0x6d, 0x65, + 0x2d, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x65, 0x72, + 0x23, 0x08, 0x81, 0x30, + 0x82, 0x10, 0x0c, 0x23, + 0x08, 0x01, 0x31, 0x82, + 0x10, 0x14, 0x23, 0x08, + 0x81, 0x31, 0x82, 0x10, + 0x1c, 0x23, 0x08, 0x01, + 0x32, 0x94, 0x15, 0x74, + 0x14, 0x01, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x03, + 0x15, 0x40, 0x20, 0x04, + 0xc3, 0x0c, 0x03, 0x53, + 0x34, 0x33, 0x0c, 0x8e, + 0xf1, 0xcc, 0x30, 0x40, + 0x47, 0x34, 0xc3, 0x20, + 0x21, 0xce, 0x0c, 0x03, + 0x93, 0x38, 0x33, 0x0c, + 0x8c, 0xe2, 0xcc, 0x30, + 0x30, 0x8b, 0x33, 0x43, + 0x40, 0xc8, 0x48, 0x60, + 0x82, 0x72, 0x61, 0x63, + 0xb3, 0x6b, 0x73, 0x21, + 0x13, 0x3b, 0x73, 0x19, + 0xab, 0x1b, 0x25, 0x90, + 0x32, 0x62, 0x63, 0xb3, + 0x6b, 0x73, 0x69, 0x7b, + 0x23, 0xab, 0x63, 0x2b, + 0x73, 0x31, 0x63, 0x0b, + 0x3b, 0x9b, 0x1b, 0xe5, + 0xa0, 0x2a, 0xeb, 0xc2, + 0x32, 0x2d, 0x15, 0x36, + 0x36, 0xbb, 0x36, 0x97, + 0x34, 0xb2, 0x32, 0x37, + 0xba, 0x51, 0x82, 0x0d, + 0x00, 0x00, 0x00, 0x00, + 0xa9, 0x18, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, + 0x0b, 0x0a, 0x72, 0x28, + 0x87, 0x77, 0x80, 0x07, + 0x7a, 0x58, 0x70, 0x98, + 0x43, 0x3d, 0xb8, 0xc3, + 0x38, 0xb0, 0x43, 0x39, + 0xd0, 0xc3, 0x82, 0xe6, + 0x1c, 0xc6, 0xa1, 0x0d, + 0xe8, 0x41, 0x1e, 0xc2, + 0xc1, 0x1d, 0xe6, 0x21, + 0x1d, 0xe8, 0x21, 0x1d, + 0xde, 0xc1, 0x1d, 0x16, + 0x34, 0xe3, 0x60, 0x0e, + 0xe7, 0x50, 0x0f, 0xe1, + 0x20, 0x0f, 0xe4, 0x40, + 0x0f, 0xe1, 0x20, 0x0f, + 0xe7, 0x50, 0x0e, 0xf4, + 0xb0, 0x80, 0x81, 0x07, + 0x79, 0x28, 0x87, 0x70, + 0x60, 0x07, 0x76, 0x78, + 0x87, 0x71, 0x08, 0x07, + 0x7a, 0x28, 0x07, 0x72, + 0x58, 0x70, 0x9c, 0xc3, + 0x38, 0xb4, 0x01, 0x3b, + 0xa4, 0x83, 0x3d, 0x94, + 0xc3, 0x02, 0x6b, 0x1c, + 0xd8, 0x21, 0x1c, 0xdc, + 0xe1, 0x1c, 0xdc, 0x20, + 0x1c, 0xe4, 0x61, 0x1c, + 0xdc, 0x20, 0x1c, 0xe8, + 0x81, 0x1e, 0xc2, 0x61, + 0x1c, 0xd0, 0xa1, 0x1c, + 0xc8, 0x61, 0x1c, 0xc2, + 0x81, 0x1d, 0xd8, 0x61, + 0xc1, 0x01, 0x0f, 0xf4, + 0x20, 0x0f, 0xe1, 0x50, + 0x0f, 0xf4, 0x80, 0x0e, + 0x0b, 0x88, 0x75, 0x18, + 0x07, 0x73, 0x48, 0x87, + 0x05, 0xcf, 0x38, 0xbc, + 0x83, 0x3b, 0xd8, 0x43, + 0x39, 0xc8, 0xc3, 0x39, + 0x94, 0x83, 0x3b, 0x8c, + 0x43, 0x39, 0x8c, 0x03, + 0x3d, 0xc8, 0x03, 0x3b, + 0x00, 0x00, 0x00, 0x00, + 0xd1, 0x10, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x07, 0xcc, 0x3c, 0xa4, + 0x83, 0x3b, 0x9c, 0x03, + 0x3b, 0x94, 0x03, 0x3d, + 0xa0, 0x83, 0x3c, 0x94, + 0x43, 0x38, 0x90, 0xc3, + 0x01, 0x00, 0x00, 0x00, + 0x61, 0x20, 0x00, 0x00, + 0x4d, 0x00, 0x00, 0x00, + 0x13, 0x04, 0x41, 0x2c, + 0x10, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x94, 0x11, 0x00, 0x00, + 0xf1, 0x30, 0x00, 0x00, + 0x24, 0x00, 0x00, 0x00, + 0x22, 0x47, 0xc8, 0x90, + 0x51, 0x16, 0xc4, 0x05, + 0xc4, 0x40, 0x10, 0x04, + 0x6d, 0x61, 0x69, 0x6e, + 0x69, 0x6e, 0x74, 0x63, + 0x68, 0x61, 0x72, 0x61, + 0x72, 0x67, 0x63, 0x61, + 0x72, 0x67, 0x76, 0x00, + 0xab, 0xa8, 0x83, 0xea, + 0x00, 0x2a, 0x40, 0x03, + 0x01, 0x40, 0x00, 0x10, + 0x99, 0x00, 0x20, 0x0d, + 0x00, 0x00, 0x00, 0xf6, + 0x1c, 0x00, 0x19, 0x78, + 0x60, 0x00, 0x14, 0xc0, + 0x9e, 0x03, 0x20, 0x83, + 0x0f, 0x01, 0x0c, 0x60, + 0x91, 0x03, 0x3c, 0x00, + 0x00, 0x00, 0x64, 0x00, + 0x0a, 0x00, 0x00, 0x00, + 0x00, 0xb0, 0xc8, 0x01, + 0x1e, 0x00, 0x00, 0x80, + 0x32, 0x00, 0x05, 0x00, + 0x00, 0x00, 0x00, 0xd8, + 0x30, 0x8c, 0xc1, 0x18, + 0x98, 0xc1, 0x26, 0x42, + 0x00, 0xce, 0x00, 0xd8, + 0x00, 0x8c, 0x53, 0x04, + 0x31, 0x00, 0x03, 0x2a, + 0x18, 0x83, 0x00, 0x00, + 0x80, 0x75, 0x81, 0x31, + 0x4e, 0x11, 0xc4, 0x20, + 0x0c, 0xa8, 0xc0, 0x0c, + 0x04, 0x00, 0x00, 0x26, + 0x08, 0x40, 0x33, 0x41, + 0x00, 0x1c, 0x00, 0x00, + 0x33, 0x11, 0x41, 0x60, + 0x8c, 0xc2, 0x4c, 0x44, + 0x10, 0x18, 0xa3, 0x30, + 0x13, 0x01, 0x04, 0x06, + 0x29, 0x0c, 0x1b, 0x10, + 0x03, 0x31, 0x00, 0xc3, + 0x06, 0x84, 0x60, 0x0c, + 0xc0, 0x88, 0xc1, 0x01, + 0x80, 0x20, 0x18, 0x14, + 0xce, 0xf8, 0xff, 0xff, + 0xff, 0x0f, 0xe6, 0xff, + 0xff, 0xff, 0x3f, 0x94, + 0xff, 0xff, 0xff, 0xff, + 0x30, 0x63, 0x50, 0x04, + 0x8e, 0x18, 0x00, 0xc0, + 0xb0, 0x01, 0x11, 0x14, + 0x04, 0x30, 0x62, 0x70, + 0x00, 0x20, 0x08, 0x06, + 0x85, 0x23, 0xfe, 0xff, + 0xff, 0xff, 0x03, 0xf9, + 0xff, 0xff, 0xff, 0x0f, + 0xe5, 0xff, 0xff, 0xff, + 0x3f, 0xcc, 0x18, 0x14, + 0xc1, 0x26, 0x06, 0x00, + 0xb0, 0xc4, 0x8c, 0x41, + 0x31, 0x14, 0x62, 0x00, + 0x00, 0x01, 0x31, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x5b, 0x04, 0x20, 0x0c, + 0x00, 0x00, 0x00, 0x00, + 0x21, 0x31, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x0b, 0x86, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x71, 0x20, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x32, 0x0e, 0x10, 0x22, + 0x84, 0x00, 0x8a, 0x04, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; writer.append_bytes(&module_block); } else { @@ -1914,40 +2908,46 @@ const Bitcode = struct { fn write_symtab(writer: *Writer) void { // TODO: - const symtab_block align(4) = .{ - 0x65, 0x0c, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0xf0, - 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, - 0x00, 0x24, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + const symtab_block align(4) = [_]u8{ + 0x65, 0x0c, 0x00, 0x00, + 0x25, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0x28, + 0x01, 0x00, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x4c, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x00, 0x00, + 0x2d, 0x00, 0x00, 0x00, + 0x06, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x88, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, + 0x00, 0x24, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, 0xff, + 0x08, 0x2c, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, }; writer.append_bytes(&symtab_block); } @@ -1955,21 +2955,24 @@ const Bitcode = struct { fn write_strtab(writer: *Writer) void { // TODO: const strtab_block align(4) = .{ - 0x5d, 0x0c, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0x66, - 0x00, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, - 0x31, 0x37, 0x2e, 0x30, - 0x2e, 0x36, 0x78, 0x38, - 0x36, 0x5f, 0x36, 0x34, - 0x2d, 0x70, 0x63, 0x2d, - 0x6c, 0x69, 0x6e, 0x75, - 0x78, 0x2d, 0x67, 0x6e, - 0x75, 0x6c, 0x6c, 0x76, - 0x6d, 0x2d, 0x6c, 0x69, - 0x6e, 0x6b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x5d, 0x0c, 0x00, 0x00, + 0x10, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0x73, + 0x00, 0x00, 0x00, 0x00, + 0x6d, 0x61, 0x69, 0x6e, + 0x6c, 0x6c, 0x76, 0x6d, + 0x2e, 0x64, 0x62, 0x67, + 0x2e, 0x64, 0x65, 0x63, + 0x6c, 0x61, 0x72, 0x65, + 0x31, 0x37, 0x2e, 0x30, + 0x2e, 0x36, 0x78, 0x38, + 0x36, 0x5f, 0x36, 0x34, + 0x2d, 0x70, 0x63, 0x2d, + 0x6c, 0x69, 0x6e, 0x75, + 0x78, 0x2d, 0x67, 0x6e, + 0x75, 0x6d, 0x61, 0x69, + 0x6e, 0x2e, 0x63, 0x00, + 0x00, 0x00, 0x00, 0x00, }; writer.append_bytes(&strtab_block); } @@ -2000,6 +3003,8 @@ const Bitcode = struct { fn write_block_info(writer: *Writer) void { writer.enter_block_info_block(); + const start = writer.buffer.length * 4; + { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 3 }); @@ -2048,9 +3053,7 @@ const Bitcode = struct { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(ConstantCode.set_type)); - // TODO: compute - const type_indices_needed_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); const block_info_abbrev = writer.emit_block_info_abbrev(@intFromEnum(BlockId.constant), abbreviation); if (block_info_abbrev != @intFromEnum(ConstantAbbreviationId.set_type)) unreachable; @@ -2070,9 +3073,7 @@ const Bitcode = struct { abbreviation.add_literal(@intFromEnum(ConstantCode.cast)); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 4 }); - // TODO: compute - const type_indices_needed_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 8 }); @@ -2095,9 +3096,7 @@ const Bitcode = struct { abbreviation.add_literal(@intFromEnum(FunctionCode.load)); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 6 }); - // TODO: compute - const type_indices_needed_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 4 }); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 1 }); @@ -2155,9 +3154,7 @@ const Bitcode = struct { abbreviation.add_literal(@intFromEnum(FunctionCode.cast)); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 6 }); - // TODO: compute - const type_indices_needed_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 4 }); const block_info_abbrev = writer.emit_block_info_abbrev(@intFromEnum(BlockId.function), abbreviation); @@ -2169,9 +3166,7 @@ const Bitcode = struct { abbreviation.add_literal(@intFromEnum(FunctionCode.cast)); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 6 }); - // TODO: compute - const type_indices_needed_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 4 }); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 8 }); @@ -2191,6 +3186,7 @@ const Bitcode = struct { { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(FunctionCode.ret)); + abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 6 }); const block_info_abbrev = writer.emit_block_info_abbrev(@intFromEnum(BlockId.function), abbreviation); if (block_info_abbrev != @intFromEnum(FunctionAbbreviationId.ret_val)) unreachable; @@ -2209,9 +3205,7 @@ const Bitcode = struct { abbreviation.add_literal(@intFromEnum(FunctionCode.gep)); abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 1 }); - // TODO: compute - const dest_ty_bits = 0; - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = dest_ty_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); abbreviation.add_with_encoding(.{ .encoding = .array }); abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 6 }); @@ -2221,32 +3215,56 @@ const Bitcode = struct { } writer.exit_block(); + + const end = writer.buffer.length * 4; + const expected = debug_main_bitcode[start..end]; + const have = writer.get_byte_slice()[start..end]; + std.debug.print("Start: {}\n", .{start}); + std.testing.expectEqualSlices(u8, expected, have) catch unreachable; } + const DummyType = union(enum){ + pointer, + integer: u16, + function: struct{ + varargs: bool, + return_type: u64, + parameter_types: []const u64, + }, + metadata, + void, + }; + + const dummy_types = [_]DummyType{.pointer, .{ .integer = 32 }, .{ .function = .{ + .varargs = false, + .return_type = 1, + .parameter_types = &.{ 1, 0 }, + } }, .void, .metadata, .{ + .function = .{ + .varargs = false, + .return_type = 3, + .parameter_types = &.{ 4, 4, 4 }, + }, + } }; + fn write_type_table(writer: *Writer) void { writer.enter_subblock(.type, 4); var type_values = std.BoundedArray(u64, 64){}; // TODO: compute - const type_indices_needed_bits = 0; - const type_count = 0; - const opaque_pointer_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.opaque_pointer)); - // TODO: this could be wrong? abbreviation.add_literal(0); break :blk writer.emit_abbreviation(abbreviation); }; - _ = opaque_pointer_abbreviation; // autofix const function_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.function)); - // TODO: this could be wrong? abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 1 }); abbreviation.add_with_encoding(.{ .encoding = .array }); - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); break :blk writer.emit_abbreviation(abbreviation); }; @@ -2254,10 +3272,9 @@ const Bitcode = struct { const struct_anon_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.struct_anon)); - // TODO: this could be wrong? abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 1 }); abbreviation.add_with_encoding(.{ .encoding = .array }); - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); break :blk writer.emit_abbreviation(abbreviation); }; @@ -2265,7 +3282,6 @@ const Bitcode = struct { const struct_name_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.struct_name)); - // TODO: this could be wrong? abbreviation.add_with_encoding(.{ .encoding = .array }); abbreviation.add_with_encoding(.{ .encoding = .char6 }); @@ -2275,10 +3291,9 @@ const Bitcode = struct { const struct_named_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.struct_named)); - // TODO: this could be wrong? abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = 1 }); abbreviation.add_with_encoding(.{ .encoding = .array }); - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); break :blk writer.emit_abbreviation(abbreviation); }; @@ -2287,35 +3302,241 @@ const Bitcode = struct { const array_abbreviation = blk: { const abbreviation = writer.abbreviation_buffer.append(.{}); abbreviation.add_literal(@intFromEnum(TypeCode.array)); - // TODO: this could be wrong? abbreviation.add_with_encoding(.{ .encoding = .vbr, .value = 8 }); - abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = type_indices_needed_bits }); + abbreviation.add_with_encoding(.{ .encoding = .fixed, .value = writer.compute_bits_required_for_type_indices() }); break :blk writer.emit_abbreviation(abbreviation); }; _ = array_abbreviation; // autofix _ = struct_name_abbreviation; // autofix - _ = function_abbreviation; // autofix // - type_values.appendAssumeCapacity(type_count); + type_values.appendAssumeCapacity(writer.get_type_count()); writer.emit_record(u64, @intFromEnum(TypeCode.num_entry), type_values.constSlice(), 0); type_values.resize(0) catch unreachable; - // TODO: - // Now loop over types and emit records for them + assert(writer.get_type_count() == 5); + + const EmissionInfo = struct{ + abbreviation: u32 = 0, + code: u32 = 0, + }; + + for (dummy_types) |ty| { + const emission_info: EmissionInfo = switch (ty) { + .pointer => b: { + type_values.appendAssumeCapacity(address_space); + break :b .{ + .abbreviation = opaque_pointer_abbreviation, + .code = @intFromEnum(TypeCode.opaque_pointer), + }; + }, + .integer => b: { + type_values.appendAssumeCapacity(0); + break :b .{ + .code = @intFromEnum(TypeCode.integer), + }; + }, + .function => |f| b: { + type_values.appendAssumeCapacity(@intFromBool(f.varargs)); + type_values.appendAssumeCapacity(f.return_type); + for (f.parameter_types) |parameter_type_index| { + type_values.appendAssumeCapacity(parameter_type_index); + } + break :b .{ + .code = @intFromEnum(TypeCode.function), + .abbreviation = function_abbreviation, + }; + }, + .metadata => .{ + .code = @intFromEnum(TypeCode.metadata), + }, + .void => .{ + .code = @intFromEnum(TypeCode.void), + }, + }; + + writer.emit_record(u64, emission_info.code, type_values.constSlice(), emission_info.abbreviation); + type_values.resize(0) catch unreachable; + } writer.exit_block(); } + const DummyAttribute = union(enum) { + string: struct{ + key: []const u8, + value: []const u8, + }, + enumeration: AttributeKindCode, + int: struct{ + value: u64, + key: AttributeKindCode, + }, + // TODO + type: AttributeKindCode, + }; + + const AttributeGroup = struct{ + attributes: []const DummyAttribute, + }; + + const attribute_groups = [_]AttributeGroup{ + .{ + .attributes = &.{ + .{ .enumeration = .no_inline }, + .{ .enumeration = .no_unwind }, + .{ .enumeration = .optimize_none }, + .{ .enumeration = .stack_protect_strong }, + .{ .enumeration = .uw_table }, + .{ + .string = .{ + .key = "frame-pointer", + .value = "all", + }, + }, + .{ + .string = .{ + .key = "min-legal-vector-width", + .value = "0", + }, + }, + .{ + .string = .{ + .key = "no-trapping-math", + .value = "true", + }, + }, + .{ + .string = .{ + .key = "stack-protector-buffer-size", + .value = "8", + }, + }, + .{ + .string = .{ + .key = "target-cpu", + .value = "x86_64", + }, + }, + .{ + .string = .{ + .key = "target-features", + .value = "+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87", + }, + }, + .{ + .string = .{ + .key = "tune-cpu", + .value = "generic", + }, + }, + }, + }, + .{ + .attributes = &.{ + .{ .enumeration = .noundef }, + }, + }, + .{ + .attributes = &.{ + .{ .enumeration = .noundef }, + }, + }, + .{ + .attributes = &.{ + .{ .enumeration = .no_callback }, + .{ .enumeration = .nofree }, + .{ .enumeration = .nosync }, + .{ .enumeration = .no_unwind }, + .{ .enumeration = .speculatable }, + .{ .enumeration = .willreturn }, + .{ + .int = .{ + .key = .memory, + .value = 0, + }, + }, + }, + }, + }; + fn write_attribute_group_table(writer: *Writer) void { - _ = writer; // autofix - // TODO: + if (attribute_groups.len > 0) { + writer.enter_subblock(.parameter_attribute_group, 3); + var records = std.BoundedArray(u64, 4096){}; + + for (attribute_groups, 0..) |attribute_group, attribute_group_index| { + records.appendAssumeCapacity(attribute_group_index); + records.appendAssumeCapacity(switch (attribute_group_index) { + 0 => 0xffffffff, + else => attribute_group_index, + }); + + for (attribute_group.attributes) |attribute| { + switch (attribute) { + .enumeration => |e| { + records.appendAssumeCapacity(0); + records.appendAssumeCapacity(@intFromEnum(e)); + }, + .string => |s| { + records.appendAssumeCapacity(@as(u64, 3) + @intFromBool(s.value.len > 0)); + for (s.key) |b| { + records.appendAssumeCapacity(b); + } + records.appendAssumeCapacity(0); + if (s.value.len > 0) { + for (s.value) |b| { + records.appendAssumeCapacity(b); + } + records.appendAssumeCapacity(0); + } + }, + .int => |i| { + records.appendAssumeCapacity(1); + records.appendAssumeCapacity(@intFromEnum(i.key)); + records.appendAssumeCapacity(i.value); + }, + else => |t| @panic(@tagName(t)), + } + } + + writer.emit_record(u64, @intFromEnum(AttributeCode.group_entry), records.constSlice(), 0); + records.resize(0) catch unreachable; + } + + writer.exit_block(); + } } + const AttributeList = struct{ + attribute_groups: []const u32, + }; + + const attribute_lists = [_]AttributeList{ + .{ .attribute_groups = &.{1, 2, 3} }, + .{ .attribute_groups = &.{4} }, + }; + fn write_attribute_table(writer: *Writer) void { - _ = writer; // autofix - // TODO: + if (attribute_groups.len > 0) { + writer.enter_subblock(.parameter_attribute, 3); + + var records = std.BoundedArray(u64, 4096){}; + for (attribute_lists) |attribute_list| { + for (attribute_list.attribute_groups) |attribute_group_index| { + const attribute_group = attribute_groups[attribute_group_index - 1]; + if (attribute_group.attributes.len > 0) { + records.appendAssumeCapacity(attribute_group_index); + } + } + + writer.emit_record(u64, @intFromEnum(AttributeCode.entry), records.constSlice(), 0); + records.resize(0) catch unreachable; + } + + writer.exit_block(); + } } fn write_module_info(writer: *Writer) void { @@ -2364,7 +3585,34 @@ const Bitcode = struct { // TODO: global variables - // TODO: functions + for (dummy_functions) |function| { + const offset = writer.strtab_content.length; + writer.strtab_content.append_slice(function.name); + values.appendAssumeCapacity(offset); + values.appendAssumeCapacity(@intCast(function.name.len)); + values.appendAssumeCapacity(function.type); + values.appendAssumeCapacity(@intFromEnum(function.calling_convention)); + values.appendAssumeCapacity(@intFromBool(function.is_declaration)); + values.appendAssumeCapacity(@intFromEnum(function.linkage)); + values.appendAssumeCapacity(function.attribute_list_id); + values.appendAssumeCapacity(function.alignment); + values.appendAssumeCapacity(function.section); + values.appendAssumeCapacity(@intFromEnum(function.visibility)); + values.appendAssumeCapacity(@intFromBool(function.gc)); + values.appendAssumeCapacity(@intFromEnum(function.unnamed_address)); + // TODO: + values.appendAssumeCapacity(function.prologued_data); + values.appendAssumeCapacity(function.comdat); + values.appendAssumeCapacity(function.prefix_data); + values.appendAssumeCapacity(function.personality); + values.appendAssumeCapacity(@intFromBool(function.dso_local)); + values.appendAssumeCapacity(function.address_space); + values.appendAssumeCapacity(function.partition_offset); + values.appendAssumeCapacity(function.partition_len); + + writer.emit_record(@TypeOf(values.constSlice()[0]), @intFromEnum(ModuleCode.function), values.constSlice(), 0); + values.resize(0) catch unreachable; + } // TODO: global aliases @@ -2373,6 +3621,74 @@ const Bitcode = struct { writer.write_value_symbol_table_forward_declaration(); } + const DummyFunction = struct{ + name: []const u8, + type: u32, + calling_convention: LLVM.Value.Constant.Function.CallingConvention, + is_declaration: bool, + linkage: LLVM.BitcodeLinkage, + attribute_list_id: u32, + alignment: u32, + section: u32, + visibility: LLVM.GlobalVisibility, + gc: bool = false, + unnamed_address: LLVM.GlobalUnnamedAddress, + prologued_data: u32, + dll_storage_class: LLVM.DLLStorageClass, + comdat: u32, + prefix_data: u32, + personality: u32, + dso_local: bool, + address_space: u32, + partition_offset: u32, + partition_len: u32, + }; + + const dummy_functions = [_]DummyFunction{ + .{ + .name = "main", + .type = 2, + .calling_convention = .C, + .is_declaration = false, + .linkage = .external, + .attribute_list_id = 0, + .alignment = 0, + .section = 0, + .visibility = .default, + .unnamed_address = .none, + .prologued_data = 0, + .dll_storage_class = .default, + .comdat = 0, + .prefix_data = 0, + .personality = 0, + .dso_local = true, + .address_space = 0, + .partition_offset = 0, + .partition_len = 0, + }, + .{ + .name = "llvm.dbg.declare", + .type = 5, + .calling_convention = .C, + .is_declaration = true, + .linkage = .external, + .attribute_list_id = 1, + .alignment = 0, + .section = 0, + .visibility = .default, + .unnamed_address = .none, + .prologued_data = 0, + .dll_storage_class = .default, + .comdat = 0, + .prefix_data = 0, + .personality = 0, + .dso_local = false, + .address_space = 0, + .partition_offset = 0, + .partition_len = 0, + }, + }; + fn write_module_constants(writer: *Writer) void { _ = writer; // autofix // TODO: @@ -2560,14 +3876,14 @@ const Bitcode = struct { writer.exit_block(); } - const identification_block = .{ - 0x35, 0x14, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, - 0x62, 0x0c, 0x30, 0x24, - 0x4a, 0x59, 0xbe, 0x66, - 0xbd, 0xfb, 0xb4, 0xaf, - 0x0b, 0x51, 0x80, 0x4c, - 0x01, 0x00, 0x00, 0x00, + const identification_block = [_]u8{ + 0x35, 0x14, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, + 0x62, 0x0c, 0x30, 0x24, + 0x4a, 0x59, 0xbe, 0x66, + 0xbd, 0xfb, 0xb4, 0xaf, + 0x0b, 0x51, 0x80, 0x4c, + 0x01, 0x00, 0x00, 0x00, }; std.testing.expectEqualSlices(u8, &identification_block, writer.get_byte_slice()[4..]) catch unreachable; } @@ -2803,553 +4119,6 @@ fn write_bitcode() void { exit(0); } -const main_bitcode = [_]u8{ - 0x42, 0x43, 0xc0, 0xde, - 0x35, 0x14, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, - 0x62, 0x0c, 0x30, 0x24, - 0x4a, 0x59, 0xbe, 0x66, - 0xbd, 0xfb, 0xb4, 0xaf, - 0x0b, 0x51, 0x80, 0x4c, - 0x01, 0x00, 0x00, 0x00, - 0x21, 0x0c, 0x00, 0x00, - 0xe6, 0x01, 0x00, 0x00, - 0x0b, 0x02, 0x21, 0x00, - 0x02, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, - 0x07, 0x81, 0x23, 0x91, - 0x41, 0xc8, 0x04, 0x49, - 0x06, 0x10, 0x32, 0x39, - 0x92, 0x01, 0x84, 0x0c, - 0x25, 0x05, 0x08, 0x19, - 0x1e, 0x04, 0x8b, 0x62, - 0x80, 0x0c, 0x45, 0x02, - 0x42, 0x92, 0x0b, 0x42, - 0x64, 0x10, 0x32, 0x14, - 0x38, 0x08, 0x18, 0x4b, - 0x0a, 0x32, 0x32, 0x88, - 0x48, 0x70, 0xc4, 0x21, - 0x23, 0x44, 0x12, 0x87, - 0x8c, 0x10, 0x41, 0x92, - 0x02, 0x64, 0xc8, 0x08, - 0xb1, 0x14, 0x20, 0x43, - 0x46, 0x88, 0x20, 0xc9, - 0x01, 0x32, 0x32, 0x84, - 0x18, 0x2a, 0x28, 0x2a, - 0x90, 0x31, 0x7c, 0xb0, - 0x5c, 0x91, 0x20, 0xc3, - 0xc8, 0x00, 0x00, 0x00, - 0x89, 0x20, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, - 0x22, 0x66, 0x04, 0x10, - 0xb2, 0x42, 0x82, 0xc9, - 0x10, 0x52, 0x42, 0x82, - 0xc9, 0x90, 0x71, 0xc2, - 0x50, 0x48, 0x0a, 0x09, - 0x26, 0x43, 0xc6, 0x05, - 0x42, 0x32, 0x26, 0x08, - 0x0a, 0x9a, 0x23, 0x00, - 0x83, 0x32, 0x24, 0x18, - 0x08, 0x18, 0x01, 0x00, - 0x51, 0x18, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, - 0x1b, 0x58, 0x23, 0xf8, - 0xff, 0xff, 0xff, 0xff, - 0x01, 0x70, 0x00, 0x09, - 0x28, 0x03, 0x80, 0x0b, - 0xc2, 0x40, 0x20, 0xcc, - 0x41, 0x1e, 0xc2, 0xa1, - 0x1d, 0xca, 0xa1, 0x0d, - 0xe0, 0xe1, 0x1d, 0xd2, - 0xc1, 0x1d, 0xe8, 0xa1, - 0x1c, 0xe4, 0x01, 0x08, - 0x07, 0x76, 0x60, 0x07, - 0x80, 0x68, 0x87, 0x74, - 0x70, 0x87, 0x36, 0x60, - 0x87, 0x72, 0x38, 0x87, - 0x70, 0x60, 0x87, 0x36, - 0xb0, 0x87, 0x72, 0x18, - 0x07, 0x7a, 0x78, 0x07, - 0x79, 0x68, 0x83, 0x7b, - 0x48, 0x07, 0x72, 0xa0, - 0x07, 0x74, 0x00, 0xe0, - 0x00, 0x20, 0xdc, 0xe1, - 0x1d, 0xda, 0x80, 0x1e, - 0xe4, 0x21, 0x1c, 0xe0, - 0x01, 0x1e, 0xd2, 0xc1, - 0x1d, 0xce, 0xa1, 0x0d, - 0xda, 0x21, 0x1c, 0xe8, - 0x01, 0x1d, 0x00, 0x7a, - 0x90, 0x87, 0x7a, 0x28, - 0x07, 0x80, 0x98, 0x07, - 0x7a, 0x08, 0x87, 0x71, - 0x58, 0x87, 0x36, 0x80, - 0x07, 0x79, 0x78, 0x07, - 0x7a, 0x28, 0x87, 0x71, - 0xa0, 0x87, 0x77, 0x90, - 0x87, 0x36, 0x10, 0x87, - 0x7a, 0x30, 0x07, 0x73, - 0x28, 0x07, 0x79, 0x68, - 0x83, 0x79, 0x48, 0x07, - 0x7d, 0x28, 0x07, 0x00, - 0x0f, 0x00, 0x82, 0x1e, - 0xc2, 0x41, 0x1e, 0xce, - 0xa1, 0x1c, 0xe8, 0xa1, - 0x0d, 0xc6, 0x01, 0x1e, - 0xea, 0x01, 0xc0, 0x07, - 0x3c, 0xb0, 0x83, 0x36, - 0xb0, 0x03, 0x3a, 0x00, - 0x08, 0x7a, 0x08, 0x07, - 0x79, 0x38, 0x87, 0x72, - 0xa0, 0x87, 0x36, 0x30, - 0x87, 0x72, 0x08, 0x07, - 0x7a, 0xa8, 0x07, 0x79, - 0x28, 0x87, 0x79, 0x00, - 0xd6, 0x60, 0x1c, 0xda, - 0xe1, 0x1d, 0xec, 0x81, - 0x0d, 0xd6, 0x60, 0x1c, - 0xf0, 0x01, 0x0f, 0xd8, - 0x60, 0x0d, 0xcc, 0x01, - 0x1f, 0xe6, 0x41, 0x1e, - 0xd8, 0x60, 0x0d, 0xda, - 0xa1, 0x1d, 0xf0, 0x81, - 0x0d, 0xd6, 0x60, 0x1e, - 0xe6, 0xa1, 0x1c, 0xd8, - 0x60, 0x0d, 0xe6, 0x61, - 0x1e, 0xca, 0x41, 0x0e, - 0xd8, 0x60, 0x0d, 0xf0, - 0x01, 0x0f, 0xee, 0x00, - 0x20, 0xe8, 0xa1, 0x1e, - 0xdc, 0xa1, 0x1c, 0xda, - 0x60, 0x1c, 0xe0, 0xa1, - 0x1e, 0x80, 0x73, 0x28, - 0x07, 0x77, 0x28, 0x07, - 0x79, 0x48, 0x87, 0x71, - 0x00, 0x36, 0x10, 0x42, - 0x00, 0x90, 0xc2, 0x06, - 0x62, 0x10, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x00, - 0x49, 0x18, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, - 0x13, 0x86, 0x40, 0x18, - 0x00, 0x00, 0x00, 0x00, - 0x13, 0x26, 0x7c, 0xc0, - 0x03, 0x3b, 0xf8, 0x05, - 0x3b, 0xa0, 0x83, 0x36, - 0x80, 0x87, 0x71, 0x68, - 0x03, 0x76, 0x48, 0x07, - 0x77, 0xa8, 0x07, 0x7c, - 0x68, 0x83, 0x73, 0x70, - 0x87, 0x7a, 0xd8, 0x60, - 0x0a, 0xe5, 0xd0, 0x06, - 0xed, 0xa0, 0x07, 0xe5, - 0xd0, 0x06, 0xf0, 0x20, - 0x07, 0x77, 0x00, 0x07, - 0x7a, 0x30, 0x07, 0x72, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x6d, 0x00, 0x0f, - 0x72, 0x70, 0x07, 0x71, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x7a, 0x30, 0x07, - 0x72, 0xd0, 0x06, 0xf0, - 0x20, 0x07, 0x77, 0x20, - 0x07, 0x7a, 0x60, 0x07, - 0x74, 0xa0, 0x07, 0x76, - 0x40, 0x07, 0x6d, 0x90, - 0x0e, 0x76, 0x40, 0x07, - 0x7a, 0x60, 0x07, 0x74, - 0xd0, 0x06, 0xe6, 0x80, - 0x07, 0x70, 0xa0, 0x07, - 0x71, 0x20, 0x07, 0x78, - 0xd0, 0x06, 0xee, 0x80, - 0x07, 0x7a, 0x10, 0x07, - 0x76, 0xa0, 0x07, 0x73, - 0x20, 0x07, 0x7a, 0x60, - 0x07, 0x74, 0xd0, 0x06, - 0xb3, 0x10, 0x07, 0x72, - 0x80, 0x07, 0x1a, 0x21, - 0x4c, 0x0e, 0x13, 0x36, - 0xdb, 0xde, 0x6e, 0xb1, - 0xd3, 0xee, 0xf5, 0x90, - 0x0a, 0x20, 0x04, 0x00, - 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x02, - 0x90, 0xd8, 0x20, 0x50, - 0x54, 0x3d, 0x00, 0x00, - 0x20, 0x0b, 0x04, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x32, 0x1e, 0x98, 0x0c, - 0x19, 0x11, 0x4c, 0x90, - 0x8c, 0x09, 0x26, 0x47, - 0xc6, 0x04, 0x43, 0x4a, - 0x09, 0x14, 0x42, 0x41, - 0x14, 0x41, 0x39, 0x00, - 0xb1, 0x18, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, - 0x33, 0x08, 0x80, 0x1c, - 0xc4, 0xe1, 0x1c, 0x66, - 0x14, 0x01, 0x3d, 0x88, - 0x43, 0x38, 0x84, 0xc3, - 0x8c, 0x42, 0x80, 0x07, - 0x79, 0x78, 0x07, 0x73, - 0x98, 0x71, 0x0c, 0xe6, - 0x00, 0x0f, 0xed, 0x10, - 0x0e, 0xf4, 0x80, 0x0e, - 0x33, 0x0c, 0x42, 0x1e, - 0xc2, 0xc1, 0x1d, 0xce, - 0xa1, 0x1c, 0x66, 0x30, - 0x05, 0x3d, 0x88, 0x43, - 0x38, 0x84, 0x83, 0x1b, - 0xcc, 0x03, 0x3d, 0xc8, - 0x43, 0x3d, 0x8c, 0x03, - 0x3d, 0xcc, 0x78, 0x8c, - 0x74, 0x70, 0x07, 0x7b, - 0x08, 0x07, 0x79, 0x48, - 0x87, 0x70, 0x70, 0x07, - 0x7a, 0x70, 0x03, 0x76, - 0x78, 0x87, 0x70, 0x20, - 0x87, 0x19, 0xcc, 0x11, - 0x0e, 0xec, 0x90, 0x0e, - 0xe1, 0x30, 0x0f, 0x6e, - 0x30, 0x0f, 0xe3, 0xf0, - 0x0e, 0xf0, 0x50, 0x0e, - 0x33, 0x10, 0xc4, 0x1d, - 0xde, 0x21, 0x1c, 0xd8, - 0x21, 0x1d, 0xc2, 0x61, - 0x1e, 0x66, 0x30, 0x89, - 0x3b, 0xbc, 0x83, 0x3b, - 0xd0, 0x43, 0x39, 0xb4, - 0x03, 0x3c, 0xbc, 0x83, - 0x3c, 0x84, 0x03, 0x3b, - 0xcc, 0xf0, 0x14, 0x76, - 0x60, 0x07, 0x7b, 0x68, - 0x07, 0x37, 0x68, 0x87, - 0x72, 0x68, 0x07, 0x37, - 0x80, 0x87, 0x70, 0x90, - 0x87, 0x70, 0x60, 0x07, - 0x76, 0x28, 0x07, 0x76, - 0xf8, 0x05, 0x76, 0x78, - 0x87, 0x77, 0x80, 0x87, - 0x5f, 0x08, 0x87, 0x71, - 0x18, 0x87, 0x72, 0x98, - 0x87, 0x79, 0x98, 0x81, - 0x2c, 0xee, 0xf0, 0x0e, - 0xee, 0xe0, 0x0e, 0xf5, - 0xc0, 0x0e, 0xec, 0x30, - 0x03, 0x62, 0xc8, 0xa1, - 0x1c, 0xe4, 0xa1, 0x1c, - 0xcc, 0xa1, 0x1c, 0xe4, - 0xa1, 0x1c, 0xdc, 0x61, - 0x1c, 0xca, 0x21, 0x1c, - 0xc4, 0x81, 0x1d, 0xca, - 0x61, 0x06, 0xd6, 0x90, - 0x43, 0x39, 0xc8, 0x43, - 0x39, 0x98, 0x43, 0x39, - 0xc8, 0x43, 0x39, 0xb8, - 0xc3, 0x38, 0x94, 0x43, - 0x38, 0x88, 0x03, 0x3b, - 0x94, 0xc3, 0x2f, 0xbc, - 0x83, 0x3c, 0xfc, 0x82, - 0x3b, 0xd4, 0x03, 0x3b, - 0xb0, 0xc3, 0x0c, 0xc7, - 0x69, 0x87, 0x70, 0x58, - 0x87, 0x72, 0x70, 0x83, - 0x74, 0x68, 0x07, 0x78, - 0x60, 0x87, 0x74, 0x18, - 0x87, 0x74, 0xa0, 0x87, - 0x19, 0xce, 0x53, 0x0f, - 0xee, 0x00, 0x0f, 0xf2, - 0x50, 0x0e, 0xe4, 0x90, - 0x0e, 0xe3, 0x40, 0x0f, - 0xe1, 0x20, 0x0e, 0xec, - 0x50, 0x0e, 0x33, 0x20, - 0x28, 0x1d, 0xdc, 0xc1, - 0x1e, 0xc2, 0x41, 0x1e, - 0xd2, 0x21, 0x1c, 0xdc, - 0x81, 0x1e, 0xdc, 0xe0, - 0x1c, 0xe4, 0xe1, 0x1d, - 0xea, 0x01, 0x1e, 0x66, - 0x18, 0x51, 0x38, 0xb0, - 0x43, 0x3a, 0x9c, 0x83, - 0x3b, 0xcc, 0x50, 0x24, - 0x76, 0x60, 0x07, 0x7b, - 0x68, 0x07, 0x37, 0x60, - 0x87, 0x77, 0x78, 0x07, - 0x78, 0x98, 0x51, 0x4c, - 0xf4, 0x90, 0x0f, 0xf0, - 0x50, 0x0e, 0x33, 0x1e, - 0x6a, 0x1e, 0xca, 0x61, - 0x1c, 0xe8, 0x21, 0x1d, - 0xde, 0xc1, 0x1d, 0x7e, - 0x01, 0x1e, 0xe4, 0xa1, - 0x1c, 0xcc, 0x21, 0x1d, - 0xf0, 0x61, 0x06, 0x54, - 0x85, 0x83, 0x38, 0xcc, - 0xc3, 0x3b, 0xb0, 0x43, - 0x3d, 0xd0, 0x43, 0x39, - 0xfc, 0xc2, 0x3c, 0xe4, - 0x43, 0x3b, 0x88, 0xc3, - 0x3b, 0xb0, 0xc3, 0x8c, - 0xc5, 0x0a, 0x87, 0x79, - 0x98, 0x87, 0x77, 0x18, - 0x87, 0x74, 0x08, 0x07, - 0x7a, 0x28, 0x07, 0x72, - 0x98, 0x81, 0x5c, 0xe3, - 0x10, 0x0e, 0xec, 0xc0, - 0x0e, 0xe5, 0x50, 0x0e, - 0xf3, 0x30, 0x23, 0xc1, - 0xd2, 0x41, 0x1e, 0xe4, - 0xe1, 0x17, 0xd8, 0xe1, - 0x1d, 0xde, 0x01, 0x1e, - 0x66, 0x48, 0x19, 0x3b, - 0xb0, 0x83, 0x3d, 0xb4, - 0x83, 0x1b, 0x84, 0xc3, - 0x38, 0x8c, 0x43, 0x39, - 0xcc, 0xc3, 0x3c, 0xb8, - 0xc1, 0x39, 0xc8, 0xc3, - 0x3b, 0xd4, 0x03, 0x3c, - 0xcc, 0x48, 0xb4, 0x71, - 0x08, 0x07, 0x76, 0x60, - 0x07, 0x71, 0x08, 0x87, - 0x71, 0x58, 0x87, 0x19, - 0xdb, 0xc6, 0x0e, 0xec, - 0x60, 0x0f, 0xed, 0xe0, - 0x06, 0xf0, 0x20, 0x0f, - 0xe5, 0x30, 0x0f, 0xe5, - 0x20, 0x0f, 0xf6, 0x50, - 0x0e, 0x6e, 0x10, 0x0e, - 0xe3, 0x30, 0x0e, 0xe5, - 0x30, 0x0f, 0xf3, 0xe0, - 0x06, 0xe9, 0xe0, 0x0e, - 0xe4, 0x50, 0x0e, 0xf8, - 0x30, 0x23, 0xe2, 0xec, - 0x61, 0x1c, 0xc2, 0x81, - 0x1d, 0xd8, 0xe1, 0x17, - 0xec, 0x21, 0x1d, 0xe6, - 0x21, 0x1d, 0xc4, 0x21, - 0x1d, 0xd8, 0x21, 0x1d, - 0xe8, 0x21, 0x1f, 0x66, - 0x20, 0x9d, 0x3b, 0xbc, - 0x43, 0x3d, 0xb8, 0x03, - 0x39, 0x94, 0x83, 0x39, - 0xcc, 0x58, 0xbc, 0x70, - 0x70, 0x07, 0x77, 0x78, - 0x07, 0x7a, 0x08, 0x07, - 0x7a, 0x48, 0x87, 0x77, - 0x70, 0x87, 0x19, 0xcb, - 0xe7, 0x0e, 0xef, 0x30, - 0x0f, 0xe1, 0xe0, 0x0e, - 0xe9, 0x40, 0x0f, 0xe9, - 0xa0, 0x0f, 0xe5, 0x30, - 0xc3, 0x01, 0x03, 0x73, - 0xa8, 0x07, 0x77, 0x18, - 0x87, 0x5f, 0x98, 0x87, - 0x70, 0x70, 0x87, 0x74, - 0xa0, 0x87, 0x74, 0xd0, - 0x87, 0x72, 0x98, 0x81, - 0x84, 0x41, 0x39, 0xe0, - 0xc3, 0x38, 0xb0, 0x43, - 0x3d, 0x90, 0x43, 0x39, - 0xcc, 0x40, 0xc4, 0xa0, - 0x1d, 0xca, 0xa1, 0x1d, - 0xe0, 0x41, 0x1e, 0xde, - 0xc1, 0x1c, 0x66, 0x24, - 0x63, 0x30, 0x0e, 0xe1, - 0xc0, 0x0e, 0xec, 0x30, - 0x0f, 0xe9, 0x40, 0x0f, - 0xe5, 0x30, 0x43, 0x21, - 0x83, 0x75, 0x18, 0x07, - 0x73, 0x48, 0x87, 0x5f, - 0xa0, 0x87, 0x7c, 0x80, - 0x87, 0x72, 0x98, 0xb1, - 0x94, 0x01, 0x3c, 0x8c, - 0xc3, 0x3c, 0x94, 0xc3, - 0x38, 0xd0, 0x43, 0x3a, - 0xbc, 0x83, 0x3b, 0xcc, - 0xc3, 0x8c, 0xc5, 0x0c, - 0x48, 0x21, 0x15, 0x42, - 0x61, 0x1e, 0xe6, 0x21, - 0x1d, 0xce, 0xc1, 0x1d, - 0x52, 0x81, 0x14, 0x00, - 0x79, 0x20, 0x00, 0x00, - 0x31, 0x00, 0x00, 0x00, - 0x72, 0x1e, 0x48, 0x20, - 0x43, 0x88, 0x0c, 0x19, - 0x09, 0x72, 0x32, 0x48, - 0x20, 0x23, 0x81, 0x8c, - 0x91, 0x91, 0xd1, 0x44, - 0xa0, 0x10, 0x28, 0x64, - 0x3c, 0x31, 0x32, 0x42, - 0x8e, 0x90, 0x21, 0xa3, - 0x68, 0x20, 0xac, 0x00, - 0x94, 0x92, 0x24, 0x47, - 0x03, 0x00, 0x00, 0x00, - 0x63, 0x6c, 0x61, 0x6e, - 0x67, 0x20, 0x76, 0x65, - 0x72, 0x73, 0x69, 0x6f, - 0x6e, 0x20, 0x31, 0x37, - 0x2e, 0x30, 0x2e, 0x36, - 0x77, 0x63, 0x68, 0x61, - 0x72, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x50, 0x49, - 0x43, 0x20, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x50, - 0x49, 0x45, 0x20, 0x4c, - 0x65, 0x76, 0x65, 0x6c, - 0x75, 0x77, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x66, - 0x72, 0x61, 0x6d, 0x65, - 0x2d, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x65, 0x72, - 0x23, 0x08, 0x41, 0x30, - 0x82, 0x10, 0x08, 0x23, - 0x08, 0xc1, 0x30, 0x82, - 0x10, 0x10, 0x23, 0x08, - 0x41, 0x31, 0x43, 0x10, - 0xcc, 0x30, 0x1c, 0x02, - 0x32, 0xc3, 0x90, 0x0c, - 0xca, 0x0c, 0xc3, 0x42, - 0x28, 0x33, 0x0c, 0x4b, - 0xa1, 0xcc, 0x30, 0x2c, - 0x86, 0x22, 0x23, 0x81, - 0x09, 0x4a, 0x85, 0x8d, - 0xcd, 0xae, 0xcd, 0x25, - 0x8d, 0xac, 0xcc, 0x8d, - 0x6e, 0x94, 0x60, 0xc9, - 0x88, 0x8d, 0xcd, 0xae, - 0xcd, 0xa5, 0xed, 0x8d, - 0xac, 0x8e, 0xad, 0xcc, - 0xc5, 0x8c, 0x2d, 0xec, - 0x6c, 0x6e, 0x94, 0x82, - 0x69, 0x9c, 0x07, 0x02, - 0xa9, 0x18, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, - 0x0b, 0x0a, 0x72, 0x28, - 0x87, 0x77, 0x80, 0x07, - 0x7a, 0x58, 0x70, 0x98, - 0x43, 0x3d, 0xb8, 0xc3, - 0x38, 0xb0, 0x43, 0x39, - 0xd0, 0xc3, 0x82, 0xe6, - 0x1c, 0xc6, 0xa1, 0x0d, - 0xe8, 0x41, 0x1e, 0xc2, - 0xc1, 0x1d, 0xe6, 0x21, - 0x1d, 0xe8, 0x21, 0x1d, - 0xde, 0xc1, 0x1d, 0x16, - 0x34, 0xe3, 0x60, 0x0e, - 0xe7, 0x50, 0x0f, 0xe1, - 0x20, 0x0f, 0xe4, 0x40, - 0x0f, 0xe1, 0x20, 0x0f, - 0xe7, 0x50, 0x0e, 0xf4, - 0xb0, 0x80, 0x81, 0x07, - 0x79, 0x28, 0x87, 0x70, - 0x60, 0x07, 0x76, 0x78, - 0x87, 0x71, 0x08, 0x07, - 0x7a, 0x28, 0x07, 0x72, - 0x58, 0x70, 0x9c, 0xc3, - 0x38, 0xb4, 0x01, 0x3b, - 0xa4, 0x83, 0x3d, 0x94, - 0xc3, 0x02, 0x6b, 0x1c, - 0xd8, 0x21, 0x1c, 0xdc, - 0xe1, 0x1c, 0xdc, 0x20, - 0x1c, 0xe4, 0x61, 0x1c, - 0xdc, 0x20, 0x1c, 0xe8, - 0x81, 0x1e, 0xc2, 0x61, - 0x1c, 0xd0, 0xa1, 0x1c, - 0xc8, 0x61, 0x1c, 0xc2, - 0x81, 0x1d, 0xd8, 0x61, - 0xc1, 0x01, 0x0f, 0xf4, - 0x20, 0x0f, 0xe1, 0x50, - 0x0f, 0xf4, 0x80, 0x0e, - 0x0b, 0x88, 0x75, 0x18, - 0x07, 0x73, 0x48, 0x87, - 0x05, 0xcf, 0x38, 0xbc, - 0x83, 0x3b, 0xd8, 0x43, - 0x39, 0xc8, 0xc3, 0x39, - 0x94, 0x83, 0x3b, 0x8c, - 0x43, 0x39, 0x8c, 0x03, - 0x3d, 0xc8, 0x03, 0x3b, - 0x00, 0x00, 0x00, 0x00, - 0xd1, 0x10, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x07, 0xcc, 0x3c, 0xa4, - 0x83, 0x3b, 0x9c, 0x03, - 0x3b, 0x94, 0x03, 0x3d, - 0xa0, 0x83, 0x3c, 0x94, - 0x43, 0x38, 0x90, 0xc3, - 0x01, 0x00, 0x00, 0x00, - 0x61, 0x20, 0x00, 0x00, - 0x0e, 0x00, 0x00, 0x00, - 0x13, 0x04, 0x41, 0x2c, - 0x10, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x94, 0x11, 0x00, 0x00, - 0x33, 0x11, 0x41, 0x10, - 0x8c, 0xc2, 0x4c, 0x44, - 0x10, 0x04, 0xa3, 0x30, - 0x13, 0x01, 0x04, 0x01, - 0x29, 0x0c, 0x1b, 0x10, - 0x03, 0x31, 0x00, 0xc3, - 0x06, 0x84, 0x60, 0x0c, - 0xc0, 0xb0, 0x01, 0x11, - 0x14, 0x04, 0xb0, 0x04, - 0x00, 0x00, 0x00, 0x00, - 0x71, 0x20, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, - 0x32, 0x0e, 0x10, 0x22, - 0x84, 0x00, 0xda, 0x03, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x65, 0x0c, 0x00, 0x00, - 0x1f, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0xf0, - 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, - 0x4c, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x0a, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, - 0x1d, 0x00, 0x00, 0x00, - 0x09, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x70, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, - 0xff, 0xff, 0xff, 0xff, - 0x00, 0x24, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, - 0x5d, 0x0c, 0x00, 0x00, - 0x0d, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0x66, - 0x00, 0x00, 0x00, 0x00, - 0x6d, 0x61, 0x69, 0x6e, - 0x31, 0x37, 0x2e, 0x30, - 0x2e, 0x36, 0x78, 0x38, - 0x36, 0x5f, 0x36, 0x34, - 0x2d, 0x70, 0x63, 0x2d, - 0x6c, 0x69, 0x6e, 0x75, - 0x78, 0x2d, 0x67, 0x6e, - 0x75, 0x6c, 0x6c, 0x76, - 0x6d, 0x2d, 0x6c, 0x69, - 0x6e, 0x6b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, -}; - const CallingConvention = enum { c, custom, @@ -4235,6 +5004,20 @@ pub const LLVM = struct { common = 10, }; + pub const BitcodeLinkage = enum(c_uint) { + external = 0, + appending = 2, + internal = 3, + external_weak = 7, + common = 8, + private = 9, + available_external = 12, + weak_any = 16, + weak_odr = 17, + link_once_any = 18, + link_once_odr = 19, + }; + pub const ThreadLocalMode = enum(c_uint) { not_thread_local = 0, }; @@ -4907,6 +5690,24 @@ pub const LLVM = struct { pub const MemoryBuffer = opaque {}; + pub const GlobalVisibility = enum(u8) { + default = 0, + hidden = 1, + protected = 2, + }; + + pub const GlobalUnnamedAddress = enum(u8) { + none = 0, + local = 1, + global = 2, + }; + + pub const DLLStorageClass = enum(u8) { + default = 0, + import = 1, + @"export" = 2, + }; + pub const Value = opaque { const setName = bindings.NativityLLVMValueSetName; const getType = bindings.NativityLLVMValueGetType; @@ -5303,6 +6104,14 @@ pub const LLVM = struct { /// Preserve X2-X15, X19-X29, SP, Z0-Z31, P0-P15. AArch64_SME_ABI_Support_Routines_PreserveMost_From_X2 = 103, + /// Used on AMDGPUs to give the middle-end more control over argument + /// placement. + AMDGPU_CS_Chain = 104, + + /// Used on AMDGPUs to give the middle-end more control over argument + /// placement. Preserves active lane values for input VGPRs. + AMDGPU_CS_ChainPreserve = 105, + /// The highest possible ID. Must be some 2^k - 1. MaxID = 1023, };