detached 1491ef7

purego: add Objective-C runtime bindings (#11)

commit
1491ef70dbf7295267f2db9ac6dc112232844eb2
author
TotallyGamerJet · · 2022-07-24 15:27 UTC
committer
GitHub · · 2022-07-24 15:27 UTC
parent
0a71637
signature
GPG Unverified4AEE18F83AFDEB23 The key is unknown
16 files · +6673 -24
M README.md +9 -0
@@ -2,3 +2,12 @@
22 [![Go Reference](https://pkg.go.dev/badge/github.com/ebitengine/purego?GOOS=darwin.svg)](https://pkg.go.dev/github.com/ebitengine/purego?GOOS=darwin)
33
44 A library for calling C functions from Go without Cgo.
5+
6+### External Code
7+
8+Purego uses code that originates from the Go runtime. These files are under the BSD-3
9+License that can be found [in the Go Source](https://github.com/golang/go/blob/master/LICENSE).
10+This is a list of the copied files:
11+
12+* `zcallback_darwin_*.s` from package `runtime`
13+* `internal/abi/abi_*.h` from package `runtime/cgo`⏎̸
M dlfcn.go +5 -17
@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 //go:build darwin
55 // +build darwin
@@ -9,35 +9,23 @@ package purego
99 import (
1010 "runtime"
1111 "unsafe"
12+
13+ "github.com/ebitengine/purego/internal/strings"
1214 )
1315
1416 const RTLD_GLOBAL = 0x8
1517
1618 const RTLD_DEFAULT = ^uintptr(1)
1719
18-// hasSuffix tests whether the string s ends with suffix.
19-func hasSuffix(s, suffix string) bool {
20- return len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix
21-}
22-
23-func cString(name string) *byte {
24- if hasSuffix(name, "\x00") {
25- return &(*(*[]byte)(unsafe.Pointer(&name)))[0]
26- }
27- var b = make([]byte, len(name)+1)
28- copy(b, name)
29- return &b[0]
30-}
31-
3220 func Dlopen(name string, mode int) uintptr {
33- bs := cString(name)
21+ bs := strings.CString(name)
3422 ret, _, _ := SyscallN(dlopenABI0, uintptr(unsafe.Pointer(bs)), uintptr(mode), 0)
3523 runtime.KeepAlive(bs)
3624 return ret
3725 }
3826
3927 func Dlsym(handle uintptr, name string) uintptr {
40- bs := cString(name)
28+ bs := strings.CString(name)
4129 ret, _, _ := SyscallN(dlsymABI0, handle, uintptr(unsafe.Pointer(bs)), 0)
4230 runtime.KeepAlive(bs)
4331 return ret
M dlfcn_darwin.go +1 -1
@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 package purego
55
M dlfcn_stubs.s +1 -1
@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 //go:build darwin
55 // +build darwin
M go_runtime.go +1 -1
@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 //go:build darwin
55 // +build darwin
A internal/abi/abi_amd64.h +99 -0
@@ -0,0 +1,99 @@
1+// Copyright 2021 The Go Authors. All rights reserved.
2+// Use of this source code is governed by a BSD-style
3+// license that can be found in the LICENSE file.
4+
5+// Macros for transitioning from the host ABI to Go ABI0.
6+//
7+// These save the frame pointer, so in general, functions that use
8+// these should have zero frame size to suppress the automatic frame
9+// pointer, though it's harmless to not do this.
10+
11+#ifdef GOOS_windows
12+
13+// REGS_HOST_TO_ABI0_STACK is the stack bytes used by
14+// PUSH_REGS_HOST_TO_ABI0.
15+#define REGS_HOST_TO_ABI0_STACK (28*8 + 8)
16+
17+// PUSH_REGS_HOST_TO_ABI0 prepares for transitioning from
18+// the host ABI to Go ABI0 code. It saves all registers that are
19+// callee-save in the host ABI and caller-save in Go ABI0 and prepares
20+// for entry to Go.
21+//
22+// Save DI SI BP BX R12 R13 R14 R15 X6-X15 registers and the DF flag.
23+// Clear the DF flag for the Go ABI.
24+// MXCSR matches the Go ABI, so we don't have to set that,
25+// and Go doesn't modify it, so we don't have to save it.
26+#define PUSH_REGS_HOST_TO_ABI0() \
27+ PUSHFQ \
28+ CLD \
29+ ADJSP $(REGS_HOST_TO_ABI0_STACK - 8) \
30+ MOVQ DI, (0*0)(SP) \
31+ MOVQ SI, (1*8)(SP) \
32+ MOVQ BP, (2*8)(SP) \
33+ MOVQ BX, (3*8)(SP) \
34+ MOVQ R12, (4*8)(SP) \
35+ MOVQ R13, (5*8)(SP) \
36+ MOVQ R14, (6*8)(SP) \
37+ MOVQ R15, (7*8)(SP) \
38+ MOVUPS X6, (8*8)(SP) \
39+ MOVUPS X7, (10*8)(SP) \
40+ MOVUPS X8, (12*8)(SP) \
41+ MOVUPS X9, (14*8)(SP) \
42+ MOVUPS X10, (16*8)(SP) \
43+ MOVUPS X11, (18*8)(SP) \
44+ MOVUPS X12, (20*8)(SP) \
45+ MOVUPS X13, (22*8)(SP) \
46+ MOVUPS X14, (24*8)(SP) \
47+ MOVUPS X15, (26*8)(SP)
48+
49+#define POP_REGS_HOST_TO_ABI0() \
50+ MOVQ (0*0)(SP), DI \
51+ MOVQ (1*8)(SP), SI \
52+ MOVQ (2*8)(SP), BP \
53+ MOVQ (3*8)(SP), BX \
54+ MOVQ (4*8)(SP), R12 \
55+ MOVQ (5*8)(SP), R13 \
56+ MOVQ (6*8)(SP), R14 \
57+ MOVQ (7*8)(SP), R15 \
58+ MOVUPS (8*8)(SP), X6 \
59+ MOVUPS (10*8)(SP), X7 \
60+ MOVUPS (12*8)(SP), X8 \
61+ MOVUPS (14*8)(SP), X9 \
62+ MOVUPS (16*8)(SP), X10 \
63+ MOVUPS (18*8)(SP), X11 \
64+ MOVUPS (20*8)(SP), X12 \
65+ MOVUPS (22*8)(SP), X13 \
66+ MOVUPS (24*8)(SP), X14 \
67+ MOVUPS (26*8)(SP), X15 \
68+ ADJSP $-(REGS_HOST_TO_ABI0_STACK - 8) \
69+ POPFQ
70+
71+#else
72+// SysV ABI
73+
74+#define REGS_HOST_TO_ABI0_STACK (6*8)
75+
76+// SysV MXCSR matches the Go ABI, so we don't have to set that,
77+// and Go doesn't modify it, so we don't have to save it.
78+// Both SysV and Go require DF to be cleared, so that's already clear.
79+// The SysV and Go frame pointer conventions are compatible.
80+#define PUSH_REGS_HOST_TO_ABI0() \
81+ ADJSP $(REGS_HOST_TO_ABI0_STACK) \
82+ MOVQ BP, (5*8)(SP) \
83+ LEAQ (5*8)(SP), BP \
84+ MOVQ BX, (0*8)(SP) \
85+ MOVQ R12, (1*8)(SP) \
86+ MOVQ R13, (2*8)(SP) \
87+ MOVQ R14, (3*8)(SP) \
88+ MOVQ R15, (4*8)(SP)
89+
90+#define POP_REGS_HOST_TO_ABI0() \
91+ MOVQ (0*8)(SP), BX \
92+ MOVQ (1*8)(SP), R12 \
93+ MOVQ (2*8)(SP), R13 \
94+ MOVQ (3*8)(SP), R14 \
95+ MOVQ (4*8)(SP), R15 \
96+ MOVQ (5*8)(SP), BP \
97+ ADJSP $-(REGS_HOST_TO_ABI0_STACK)
98+
99+#endif
A internal/abi/abi_arm64.h +39 -0
@@ -0,0 +1,39 @@
1+// Copyright 2021 The Go Authors. All rights reserved.
2+// Use of this source code is governed by a BSD-style
3+// license that can be found in the LICENSE file.
4+
5+// Macros for transitioning from the host ABI to Go ABI0.
6+//
7+// These macros save and restore the callee-saved registers
8+// from the stack, but they don't adjust stack pointer, so
9+// the user should prepare stack space in advance.
10+// SAVE_R19_TO_R28(offset) saves R19 ~ R28 to the stack space
11+// of ((offset)+0*8)(RSP) ~ ((offset)+9*8)(RSP).
12+//
13+// SAVE_F8_TO_F15(offset) saves F8 ~ F15 to the stack space
14+// of ((offset)+0*8)(RSP) ~ ((offset)+7*8)(RSP).
15+//
16+// R29 is not saved because Go will save and restore it.
17+
18+#define SAVE_R19_TO_R28(offset) \
19+ STP (R19, R20), ((offset)+0*8)(RSP) \
20+ STP (R21, R22), ((offset)+2*8)(RSP) \
21+ STP (R23, R24), ((offset)+4*8)(RSP) \
22+ STP (R25, R26), ((offset)+6*8)(RSP) \
23+ STP (R27, g), ((offset)+8*8)(RSP)
24+#define RESTORE_R19_TO_R28(offset) \
25+ LDP ((offset)+0*8)(RSP), (R19, R20) \
26+ LDP ((offset)+2*8)(RSP), (R21, R22) \
27+ LDP ((offset)+4*8)(RSP), (R23, R24) \
28+ LDP ((offset)+6*8)(RSP), (R25, R26) \
29+ LDP ((offset)+8*8)(RSP), (R27, g) /* R28 */
30+#define SAVE_F8_TO_F15(offset) \
31+ FSTPD (F8, F9), ((offset)+0*8)(RSP) \
32+ FSTPD (F10, F11), ((offset)+2*8)(RSP) \
33+ FSTPD (F12, F13), ((offset)+4*8)(RSP) \
34+ FSTPD (F14, F15), ((offset)+6*8)(RSP)
35+#define RESTORE_F8_TO_F15(offset) \
36+ FLDPD ((offset)+0*8)(RSP), (F8, F9) \
37+ FLDPD ((offset)+2*8)(RSP), (F10, F11) \
38+ FLDPD ((offset)+4*8)(RSP), (F12, F13) \
39+ FLDPD ((offset)+6*8)(RSP), (F14, F15)
A internal/strings/strings.go +21 -0
@@ -0,0 +1,21 @@
1+// SPDX-License-Identifier: Apache-2.0
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
3+
4+package strings
5+
6+import "unsafe"
7+
8+// hasSuffix tests whether the string s ends with suffix.
9+func hasSuffix(s, suffix string) bool {
10+ return len(s) >= len(suffix) && s[len(s)-len(suffix):] == suffix
11+}
12+
13+// CString converts a go string to *byte that can be passed to C code.
14+func CString(name string) *byte {
15+ if hasSuffix(name, "\x00") {
16+ return &(*(*[]byte)(unsafe.Pointer(&name)))[0]
17+ }
18+ var b = make([]byte, len(name)+1)
19+ copy(b, name)
20+ return &b[0]
21+}
A objc/objc_runtime_darwin.go +190 -0
@@ -0,0 +1,190 @@
1+// SPDX-License-Identifier: Apache-2.0
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
3+
4+// Package objc is a low-level pure Go objective-c runtime. This package is easy to use incorrectly, so it is best
5+// to use a wrapper that provides the functionality you need in a safer way.
6+package objc
7+
8+import (
9+ "fmt"
10+ "reflect"
11+ "runtime"
12+ "unsafe"
13+
14+ "github.com/ebitengine/purego"
15+ "github.com/ebitengine/purego/internal/strings"
16+)
17+
18+//TODO: support try/catch?
19+//https://stackoverflow.com/questions/7062599/example-of-how-objective-cs-try-catch-implementation-is-executed-at-runtime
20+
21+var (
22+ objc = purego.Dlopen("/usr/lib/libobjc.A.dylib", purego.RTLD_GLOBAL)
23+
24+ objc_msgSend = purego.Dlsym(objc, "objc_msgSend")
25+ objc_msgSendSuper2 = purego.Dlsym(objc, "objc_msgSendSuper2")
26+ objc_getClass = purego.Dlsym(objc, "objc_getClass")
27+ objc_allocateClassPair = purego.Dlsym(objc, "objc_allocateClassPair")
28+ objc_registerClassPair = purego.Dlsym(objc, "objc_registerClassPair")
29+ sel_registerName = purego.Dlsym(objc, "sel_registerName")
30+ class_getSuperclass = purego.Dlsym(objc, "class_getSuperclass")
31+ class_addMethod = purego.Dlsym(objc, "class_addMethod")
32+ object_getClass = purego.Dlsym(objc, "object_getClass")
33+)
34+
35+// ID is an opaque pointer to some Objective-C object
36+type ID uintptr
37+
38+// Class returns the class of the object.
39+func (id ID) Class() Class {
40+ ret, _, _ := purego.SyscallN(object_getClass, uintptr(id))
41+ return Class(ret)
42+}
43+
44+// Send is a convenience method for sending messages to objects.
45+func (id ID) Send(sel SEL, args ...interface{}) ID {
46+ tmp := createArgs(id, sel, args...)
47+ ret, _, _ := purego.SyscallN(objc_msgSend, tmp...)
48+ return ID(ret)
49+}
50+
51+// objc_super data structure is generated by the Objective-C compiler when it encounters the super keyword
52+// as the receiver of a message. It specifies the class definition of the particular superclass that should
53+// be messaged.
54+type objc_super struct {
55+ receiver ID
56+ superClass Class
57+}
58+
59+// SendSuper is a convenience method for sending message to object's super
60+func (id ID) SendSuper(sel SEL, args ...interface{}) ID {
61+ var super = &objc_super{
62+ receiver: id,
63+ superClass: id.Class(),
64+ }
65+ tmp := createArgs(0, sel, args...)
66+ tmp[0] = uintptr(unsafe.Pointer(super)) // if createArgs splits the stack the pointer would be wrong
67+ ret, _, _ := purego.SyscallN(objc_msgSendSuper2, tmp...)
68+ return ID(ret)
69+}
70+
71+func createArgs(cls ID, sel SEL, args ...interface{}) (out []uintptr) {
72+ out = make([]uintptr, 2, len(args)+2)
73+ out[0] = uintptr(cls)
74+ out[1] = uintptr(sel)
75+ for _, a := range args {
76+ switch v := a.(type) {
77+ case ID:
78+ out = append(out, uintptr(v))
79+ case Class:
80+ out = append(out, uintptr(v))
81+ case SEL:
82+ out = append(out, uintptr(v))
83+ case _IMP:
84+ out = append(out, uintptr(v))
85+ case bool:
86+ if v {
87+ out = append(out, uintptr(1))
88+ } else {
89+ out = append(out, uintptr(0))
90+ }
91+ case unsafe.Pointer:
92+ out = append(out, uintptr(v))
93+ case uintptr:
94+ out = append(out, v)
95+ case int:
96+ out = append(out, uintptr(v))
97+ case uint:
98+ out = append(out, uintptr(v))
99+ default:
100+ panic(fmt.Sprintf("objc: unknown type %T", v))
101+ }
102+ }
103+ return out
104+}
105+
106+// SEL is an opaque type that represents a method selector
107+type SEL uintptr
108+
109+// RegisterName registers a method with the Objective-C runtime system, maps the method name to a selector,
110+// and returns the selector value.
111+func RegisterName(name string) SEL {
112+ n := strings.CString(name)
113+ ret, _, _ := purego.SyscallN(sel_registerName, uintptr(unsafe.Pointer(n)))
114+ runtime.KeepAlive(n)
115+ return SEL(ret)
116+}
117+
118+// Class is an opaque type that represents an Objective-C class.
119+type Class uintptr
120+
121+// GetClass returns the Class object for the named class, or nil if the class is not registered with the Objective-C runtime.
122+func GetClass(name string) Class {
123+ n := strings.CString(name)
124+ ret, _, _ := purego.SyscallN(objc_getClass, uintptr(unsafe.Pointer(n)))
125+ runtime.KeepAlive(n)
126+ return Class(ret)
127+}
128+
129+// AllocateClassPair creates a new class and metaclass. Then returns the new class, or Nil if the class could not be created
130+func AllocateClassPair(super Class, name string, extraBytes uintptr) Class {
131+ n := strings.CString(name)
132+ ret, _, _ := purego.SyscallN(objc_allocateClassPair, uintptr(super), uintptr(unsafe.Pointer(n)), extraBytes)
133+ runtime.KeepAlive(n)
134+ return Class(ret)
135+}
136+
137+// SuperClass returns the superclass of a class.
138+// You should usually use NSObject‘s superclass method instead of this function.
139+func (c Class) SuperClass() Class {
140+ ret, _, _ := purego.SyscallN(class_getSuperclass, uintptr(c))
141+ return Class(ret)
142+}
143+
144+// AddMethod adds a new method to a class with a given name and implementation.
145+// The types argument is a string containing the mapping of parameters and return type.
146+// Since the function must take at least two arguments—self and _cmd, the second and third
147+// characters must be “@:” (the first character is the return type).
148+func (c Class) AddMethod(name SEL, imp _IMP, types string) bool {
149+ t := strings.CString(types)
150+ ret, _, _ := purego.SyscallN(class_addMethod, uintptr(c), uintptr(name), uintptr(imp), uintptr(unsafe.Pointer(t)))
151+ runtime.KeepAlive(t)
152+ return byte(ret) != 0
153+}
154+
155+// Register registers a class that was allocated using objc_allocateClassPair.
156+// It can now be used to make objects by sending it either alloc and init or new.
157+func (c Class) Register() {
158+ purego.SyscallN(objc_registerClassPair, uintptr(c))
159+}
160+
161+// _IMP is unexported so that the only way to make this type is by providing a Go function and casting
162+// it with the IMP function
163+type _IMP uintptr
164+
165+// IMP takes a Go function that takes (id, SEL) as its first two arguments. It returns an _IMP function
166+// pointer that can be called by Objective-C code. The function pointer is never deallocated.
167+func IMP(fn interface{}) _IMP {
168+ // this is only here so that it is easier to port C code to Go.
169+ // this is not guaranteed to be here forever so make sure to port your callbacks to Go
170+ // If you have a C function pointer cast it to a uintptr before passing it
171+ // to this function.
172+ if x, ok := fn.(uintptr); ok {
173+ return _IMP(x)
174+ }
175+ val := reflect.ValueOf(fn)
176+ if val.Kind() != reflect.Func {
177+ panic("objc: not a function")
178+ }
179+ // IMP is stricter than a normal callback
180+ // id (*IMP)(id, SEL, ...)
181+ switch {
182+ case val.Type().NumIn() < 2:
183+ fallthrough
184+ case val.Type().In(0).Kind() != reflect.Uintptr:
185+ fallthrough
186+ case val.Type().In(1).Kind() != reflect.Uintptr:
187+ panic("objc: IMP must take a (id, SEL) as its first two arguments")
188+ }
189+ return _IMP(purego.NewCallback(fn))
190+}
M sys_darwin_amd64.s +65 -1
@@ -1,8 +1,10 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 #include "textflag.h"
5+#include "internal/abi/abi_amd64.h"
56 #include "go_asm.h"
7+#include "funcdata.h"
68
79 // syscall9X calls a function in libc on behalf of the syscall package.
810 // syscall9X takes a pointer to a struct like:
@@ -69,3 +71,65 @@ TEXT syscall9X(SB), NOSPLIT, $0
6971 MOVQ BP, SP
7072 POPQ BP
7173 RET
74+
75+// runtime·cgocallback expects a call to the ABIInternal function
76+// However, the tag <ABIInternal> is only available in the runtime :(
77+// This is a small wrapper function that moves the parameter from AX to the stack
78+// where the Go function can find it. It then calls callbackWrap
79+TEXT callbackWrapInternal<>(SB), $0-0
80+ MOVQ AX, 0(SP)
81+ CALL ·callbackWrap(SB)
82+ RET
83+
84+TEXT callbackasm1(SB), NOSPLIT, $0
85+ // remove return address from stack, we are not returning to callbackasm, but to its caller.
86+ MOVQ 0(SP), AX
87+ ADDQ $8, SP
88+
89+ // make space for first six arguments below the frame
90+ // TODO: check to make sure that arguments 7 and above are right after these six
91+ ADJSP $6*8, SP
92+ MOVQ DI, 0(SP)
93+ MOVQ SI, 8(SP)
94+ MOVQ DX, 16(SP)
95+ MOVQ CX, 24(SP)
96+ MOVQ R8, 32(SP)
97+ MOVQ R9, 40(SP)
98+ LEAQ (SP), R8 // R8 = address of args vector
99+
100+ // determine index into runtime·cbs table
101+ MOVQ $callbackasm(SB), DX
102+ SUBQ DX, AX
103+ MOVQ $0, DX
104+ MOVQ $5, CX // divide by 5 because each call instruction in ·callbacks is 5 bytes long
105+ DIVL CX
106+ SUBQ $1, AX // subtract 1 because return PC is to the next slot
107+
108+ // Switch from the host ABI to the Go ABI.
109+ PUSH_REGS_HOST_TO_ABI0()
110+
111+ // Create a struct callbackArgs on our stack to be passed as
112+ // the "frame" to cgocallback and on to callbackWrap.
113+ // $24 to make enough room for the arguments to runtime.cgocallback
114+ SUBQ $(24+callbackArgs__size), SP
115+ MOVQ AX, (24+callbackArgs_index)(SP) // callback index
116+ MOVQ R8, (24+callbackArgs_args)(SP) // address of args vector
117+ MOVQ $0, (24+callbackArgs_result)(SP) // result
118+ LEAQ 24(SP), AX // take the address of callbackArgs
119+
120+ // Call cgocallback, which will call callbackWrap(frame).
121+ MOVQ $0, 16(SP) // context
122+ MOVQ AX, 8(SP) // frame (address of callbackArgs)
123+ MOVQ $callbackWrapInternal<>(SB), BX
124+ MOVQ BX, 0(SP) // PC of function value to call (callbackWrap)
125+ CALL runtime·cgocallback(SB) // runtime.cgocallback(fn, frame, ctxt uintptr)
126+
127+ // Get callback result.
128+ MOVQ (24+callbackArgs_result)(SP), AX
129+ ADDQ $(24+callbackArgs__size), SP // remove callbackArgs struct
130+
131+ POP_REGS_HOST_TO_ABI0()
132+
133+ ADJSP $-6*8, SP // remove arguments
134+
135+ RET
M sys_darwin_arm64.s +73 -1
@@ -1,8 +1,10 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 #include "textflag.h"
55 #include "go_asm.h"
6+#include "funcdata.h"
7+#include "internal/abi/abi_arm64.h"
68
79 // syscall9X calls a function in libc on behalf of the syscall package.
810 // syscall9X takes a pointer to a struct like:
@@ -60,3 +62,73 @@ TEXT syscall9X(SB), NOSPLIT, $0
6062 MOVD R0, syscall9Args_r1(R2) // save r1
6163 MOVD R1, syscall9Args_r2(R2) // save r2
6264 RET
65+
66+// runtime·cgocallback expects a call to the ABIInternal function
67+// However, the tag <ABIInternal> is only available in the runtime :(
68+// This is a small wrapper function that moves the parameter from R0 to the stack
69+// where the Go function can find it. It then branches without link.
70+TEXT callbackWrapInternal<>(SB), NOSPLIT, $0-0
71+ MOVD R0, 8(RSP)
72+ B ·callbackWrap(SB)
73+ RET
74+
75+TEXT callbackasm1(SB), NOSPLIT, $208-0
76+ NO_LOCAL_POINTERS
77+
78+ // On entry, the trampoline in zcallback_windows_arm64.s left
79+ // the callback index in R12 (which is volatile in the C ABI).
80+
81+ // Save callback register arguments R0-R7.
82+ // We do this at the top of the frame so they're contiguous with stack arguments.
83+ // The 7*8 setting up R14 looks like a bug but is not: the eighth word
84+ // is the space the assembler reserved for our caller's frame pointer,
85+ // but we are not called from Go so that space is ours to use,
86+ // and we must to be contiguous with the stack arguments.
87+ MOVD $arg0-(7*8)(SP), R14
88+ STP (R0, R1), (0*8)(R14)
89+ STP (R2, R3), (2*8)(R14)
90+ STP (R4, R5), (4*8)(R14)
91+ STP (R6, R7), (6*8)(R14)
92+
93+ // Create a struct callbackArgs on our stack.
94+ MOVD $cbargs-(18*8+callbackArgs__size)(SP), R13
95+ MOVD R12, callbackArgs_index(R13) // callback index
96+ MOVD R14, R0
97+ MOVD R0, callbackArgs_args(R13) // address of args vector
98+ MOVD $0, R0
99+ MOVD R0, callbackArgs_result(R13) // result
100+
101+ // Move parameters into registers
102+ MOVD $callbackWrapInternal<>(SB), R0 // fn unsafe.Pointer
103+ MOVD R13, R1 // frame (&callbackArgs{...})
104+ MOVD $0, R3 // ctxt uintptr
105+
106+ // We still need to save all callee save register as before, and then
107+ // push 3 args for fn (R0, R1, R3), skipping R2.
108+ // Also note that at procedure entry in gc world, 8(RSP) will be the
109+ // first arg.
110+ SUB $(8*24), RSP
111+ STP (R0, R1), (8*1)(RSP)
112+ MOVD R3, (8*3)(RSP)
113+
114+ // Push C callee-save registers R19-R28.
115+ // LR, FP already saved.
116+ SAVE_R19_TO_R28(8*4)
117+ SAVE_F8_TO_F15(8*14)
118+ STP (R29, R30), (8*22)(RSP)
119+
120+ // Initialize Go ABI environment
121+ BL runtime·load_g(SB)
122+ BL runtime·cgocallback(SB)
123+
124+ RESTORE_R19_TO_R28(8*4)
125+ RESTORE_F8_TO_F15(8*14)
126+ LDP (8*22)(RSP), (R29, R30)
127+
128+ ADD $(8*24), RSP
129+
130+ // Get callback result.
131+ MOVD $cbargs-(18*8+callbackArgs__size)(SP), R13
132+ MOVD callbackArgs_result(R13), R0
133+
134+ RET
M syscall.go +1 -1
@@ -1,5 +1,5 @@
11 // SPDX-License-Identifier: Apache-2.0
2-// SPDX-FileCopyrightText: 2022 The Ebiten Authors
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
33
44 //go:build darwin || windows
55 // +build darwin windows
M syscall_darwin.go +126 -1
@@ -1,6 +1,14 @@
1+// SPDX-License-Identifier: Apache-2.0
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
3+
14 package purego
25
3-import "unsafe"
6+import (
7+ "reflect"
8+ "runtime"
9+ "sync"
10+ "unsafe"
11+)
412
513 func callc(fn uintptr, args unsafe.Pointer) {
614 runtime_entersyscall()
@@ -18,3 +26,120 @@ func syscall_syscall9X(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2,
1826 callc(syscall9XABI0, unsafe.Pointer(&args))
1927 return args.r1, args.r2, args.err
2028 }
29+
30+// NewCallback converts a Go function to a function pointer conforming to the C calling convention
31+// This is useful when interoperating with C code requiring callbacks. The argument is expected to be a
32+// function with zero or one uintptr-sized result. The function must not have arguments with size larger than the size
33+// of uintptr. Only a limited number of callbacks may be created in a single Go process, and any memory allocated
34+// for these callbacks is never released. At least 2000 callbacks can always be created. Although this function
35+// provides similar functionality to windows.NewCallback it is distinct.
36+func NewCallback(fn interface{}) uintptr {
37+ return compileCallback(fn)
38+}
39+
40+// maxCb is the maximum number of callbacks
41+// only increase this if you have added more to the callbackasm function
42+const maxCB = 2000
43+
44+var cbs struct {
45+ lock sync.Mutex
46+ numFn int // the number of functions currently in cbs.funcs
47+ funcs [maxCB]reflect.Value // the saved callbacks
48+}
49+
50+type callbackArgs struct {
51+ index uintptr
52+ // args points to the argument block.
53+ //
54+ // For cdecl and stdcall, all arguments are on the stack.
55+ //
56+ // For fastcall, the trampoline spills register arguments to
57+ // the reserved spill slots below the stack arguments,
58+ // resulting in a layout equivalent to stdcall.
59+ //
60+ // For arm, the trampoline stores the register arguments just
61+ // below the stack arguments, so again we can treat it as one
62+ // big stack arguments frame.
63+ args unsafe.Pointer
64+ // Below are out-args from callbackWrap
65+ result uintptr
66+}
67+
68+func compileCallback(fn interface{}) uintptr {
69+ val := reflect.ValueOf(fn)
70+ if val.Kind() != reflect.Func {
71+ panic("purego: type is not a function")
72+ }
73+ ty := val.Type()
74+ for i := 0; i < ty.NumIn(); i++ {
75+ in := ty.In(i)
76+ switch in.Kind() {
77+ case reflect.Struct, reflect.Float32, reflect.Float64,
78+ reflect.Interface, reflect.Func, reflect.Slice,
79+ reflect.Chan, reflect.Complex64, reflect.Complex128,
80+ reflect.String, reflect.Map, reflect.Invalid:
81+ panic("purego: unsupported argument type: " + in.Kind().String())
82+ }
83+ }
84+ if ty.NumOut() > 1 || ty.NumOut() == 1 && ty.Out(0).Size() != ptrSize {
85+ panic("purego: callbacks can only have one pointer-sized return")
86+ }
87+ cbs.lock.Lock()
88+ defer cbs.lock.Unlock()
89+ if cbs.numFn >= maxCB {
90+ panic("purego: the maximum number of callbacks has been reached")
91+ }
92+ cbs.funcs[cbs.numFn] = val
93+ cbs.numFn++
94+ return callbackasmAddr(cbs.numFn - 1)
95+}
96+
97+const ptrSize = unsafe.Sizeof((*int)(nil))
98+
99+const callbackMaxFrame = 64 * ptrSize
100+
101+// callbackasmABI0 is implemented in zcallback_GOOS_GOARCH.s
102+var callbackasmABI0 uintptr
103+
104+// callbackWrap is called by assembly code which determines which Go function to call.
105+// This function takes the arguments and passes them to the Go function and returns the result.
106+func callbackWrap(a *callbackArgs) {
107+ cbs.lock.Lock()
108+ fn := cbs.funcs[a.index]
109+ cbs.lock.Unlock()
110+ fnType := fn.Type()
111+ args := make([]reflect.Value, fnType.NumIn())
112+ frame := (*[callbackMaxFrame]uintptr)(a.args)
113+ for i := range args {
114+ //TODO: support float32 and float64
115+ args[i] = reflect.NewAt(fnType.In(i), unsafe.Pointer(&frame[i])).Elem()
116+ }
117+ ret := fn.Call(args)
118+ if len(ret) > 0 {
119+ a.result = uintptr(ret[0].Uint())
120+ }
121+}
122+
123+// callbackasmAddr returns address of runtime.callbackasm
124+// function adjusted by i.
125+// On x86 and amd64, runtime.callbackasm is a series of CALL instructions,
126+// and we want callback to arrive at
127+// correspondent call instruction instead of start of
128+// runtime.callbackasm.
129+// On ARM, runtime.callbackasm is a series of mov and branch instructions.
130+// R12 is loaded with the callback index. Each entry is two instructions,
131+// hence 8 bytes.
132+func callbackasmAddr(i int) uintptr {
133+ var entrySize int
134+ switch runtime.GOARCH {
135+ default:
136+ panic("purego: unsupported architecture")
137+ case "386", "amd64":
138+ entrySize = 5
139+ case "arm", "arm64":
140+ // On ARM and ARM64, each entry is a MOV instruction
141+ // followed by a branch instruction
142+ entrySize = 8
143+ }
144+ return callbackasmABI0 + uintptr(i*entrySize)
145+}
M syscall_windows.go +14 -0
@@ -1,3 +1,6 @@
1+// SPDX-License-Identifier: Apache-2.0
2+// SPDX-FileCopyrightText: 2022 The Ebitengine Authors
3+
14 package purego
25
36 import (
@@ -9,3 +12,14 @@ func syscall_syscall9X(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2,
912 r1, r2, errno := syscall.Syscall9(fn, 9, a1, a2, a3, a4, a5, a6, a7, a8, a9)
1013 return r1, r2, uintptr(errno)
1114 }
15+
16+// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.
17+// This is useful when interoperating with Windows code requiring callbacks. The argument is expected to be a
18+// function with one uintptr-sized result. The function must not have arguments with size larger than the
19+// size of uintptr. Only a limited number of callbacks may be created in a single Go process, and any memory
20+// allocated for these callbacks is never released. Between NewCallback and NewCallbackCDecl, at least 1024
21+// callbacks can always be created. Although this function is similiar to the darwin version it may act
22+// differently.
23+func NewCallback(fn interface{}) uintptr {
24+ return syscall.NewCallback(fn)
25+}
A zcallback_darwin_amd64.s +2014 -0 large diff (2014 lines changed): collapsed
A zcallback_darwin_arm64.s +4014 -0
@@ -0,0 +1,4014 @@
1+// Code generated by wincallback.go using 'go generate'. DO NOT EDIT.
2+
3+// External code calls into callbackasm at an offset corresponding
4+// to the callback index. Callbackasm is a table of MOV and B instructions.
5+// The MOV instruction loads R12 with the callback index, and the
6+// B instruction branches to callbackasm1.
7+// callbackasm1 takes the callback index from R12 and
8+// indexes into an array that stores information about each callback.
9+// It then calls the Go implementation for that callback.
10+#include "textflag.h"
11+
12+GLOBL ·callbackasmABI0(SB), NOPTR|RODATA, $8
13+DATA ·callbackasmABI0(SB)/8, $callbackasm(SB)
14+TEXT callbackasm(SB), NOSPLIT|NOFRAME, $0
15+ MOVD $0, R12
16+ B callbackasm1(SB)
17+ MOVD $1, R12
18+ B callbackasm1(SB)
19+ MOVD $2, R12
20+ B callbackasm1(SB)
21+ MOVD $3, R12
22+ B callbackasm1(SB)
23+ MOVD $4, R12
24+ B callbackasm1(SB)
25+ MOVD $5, R12
26+ B callbackasm1(SB)
27+ MOVD $6, R12
28+ B callbackasm1(SB)
29+ MOVD $7, R12
30+ B callbackasm1(SB)
31+ MOVD $8, R12
32+ B callbackasm1(SB)
33+ MOVD $9, R12
34+ B callbackasm1(SB)
35+ MOVD $10, R12
36+ B callbackasm1(SB)
37+ MOVD $11, R12
38+ B callbackasm1(SB)
39+ MOVD $12, R12
40+ B callbackasm1(SB)
41+ MOVD $13, R12
42+ B callbackasm1(SB)
43+ MOVD $14, R12
44+ B callbackasm1(SB)
45+ MOVD $15, R12
46+ B callbackasm1(SB)
47+ MOVD $16, R12
48+ B callbackasm1(SB)
49+ MOVD $17, R12
50+ B callbackasm1(SB)
51+ MOVD $18, R12
52+ B callbackasm1(SB)
53+ MOVD $19, R12
54+ B callbackasm1(SB)
55+ MOVD $20, R12
56+ B callbackasm1(SB)
57+ MOVD $21, R12
58+ B callbackasm1(SB)
59+ MOVD $22, R12
60+ B callbackasm1(SB)
61+ MOVD $23, R12
62+ B callbackasm1(SB)
63+ MOVD $24, R12
64+ B callbackasm1(SB)
65+ MOVD $25, R12
66+ B callbackasm1(SB)
67+ MOVD $26, R12
68+ B callbackasm1(SB)
69+ MOVD $27, R12
70+ B callbackasm1(SB)
71+ MOVD $28, R12
72+ B callbackasm1(SB)
73+ MOVD $29, R12
74+ B callbackasm1(SB)
75+ MOVD $30, R12
76+ B callbackasm1(SB)
77+ MOVD $31, R12
78+ B callbackasm1(SB)
79+ MOVD $32, R12
80+ B callbackasm1(SB)
81+ MOVD $33, R12
82+ B callbackasm1(SB)
83+ MOVD $34, R12
84+ B callbackasm1(SB)
85+ MOVD $35, R12
86+ B callbackasm1(SB)
87+ MOVD $36, R12
88+ B callbackasm1(SB)
89+ MOVD $37, R12
90+ B callbackasm1(SB)
91+ MOVD $38, R12
92+ B callbackasm1(SB)
93+ MOVD $39, R12
94+ B callbackasm1(SB)
95+ MOVD $40, R12
96+ B callbackasm1(SB)
97+ MOVD $41, R12
98+ B callbackasm1(SB)
99+ MOVD $42, R12
100+ B callbackasm1(SB)
101+ MOVD $43, R12
102+ B callbackasm1(SB)
103+ MOVD $44, R12
104+ B callbackasm1(SB)
105+ MOVD $45, R12
106+ B callbackasm1(SB)
107+ MOVD $46, R12
108+ B callbackasm1(SB)
109+ MOVD $47, R12
110+ B callbackasm1(SB)
111+ MOVD $48, R12
112+ B callbackasm1(SB)
113+ MOVD $49, R12
114+ B callbackasm1(SB)
115+ MOVD $50, R12
116+ B callbackasm1(SB)
117+ MOVD $51, R12
118+ B callbackasm1(SB)
119+ MOVD $52, R12
120+ B callbackasm1(SB)
121+ MOVD $53, R12
122+ B callbackasm1(SB)
123+ MOVD $54, R12
124+ B callbackasm1(SB)
125+ MOVD $55, R12
126+ B callbackasm1(SB)
127+ MOVD $56, R12
128+ B callbackasm1(SB)
129+ MOVD $57, R12
130+ B callbackasm1(SB)
131+ MOVD $58, R12
132+ B callbackasm1(SB)
133+ MOVD $59, R12
134+ B callbackasm1(SB)
135+ MOVD $60, R12
136+ B callbackasm1(SB)
137+ MOVD $61, R12
138+ B callbackasm1(SB)
139+ MOVD $62, R12
140+ B callbackasm1(SB)
141+ MOVD $63, R12
142+ B callbackasm1(SB)
143+ MOVD $64, R12
144+ B callbackasm1(SB)
145+ MOVD $65, R12
146+ B callbackasm1(SB)
147+ MOVD $66, R12
148+ B callbackasm1(SB)
149+ MOVD $67, R12
150+ B callbackasm1(SB)
151+ MOVD $68, R12
152+ B callbackasm1(SB)
153+ MOVD $69, R12
154+ B callbackasm1(SB)
155+ MOVD $70, R12
156+ B callbackasm1(SB)
157+ MOVD $71, R12
158+ B callbackasm1(SB)
159+ MOVD $72, R12
160+ B callbackasm1(SB)
161+ MOVD $73, R12
162+ B callbackasm1(SB)
163+ MOVD $74, R12
164+ B callbackasm1(SB)
165+ MOVD $75, R12
166+ B callbackasm1(SB)
167+ MOVD $76, R12
168+ B callbackasm1(SB)
169+ MOVD $77, R12
170+ B callbackasm1(SB)
171+ MOVD $78, R12
172+ B callbackasm1(SB)
173+ MOVD $79, R12
174+ B callbackasm1(SB)
175+ MOVD $80, R12
176+ B callbackasm1(SB)
177+ MOVD $81, R12
178+ B callbackasm1(SB)
179+ MOVD $82, R12
180+ B callbackasm1(SB)
181+ MOVD $83, R12
182+ B callbackasm1(SB)
183+ MOVD $84, R12
184+ B callbackasm1(SB)
185+ MOVD $85, R12
186+ B callbackasm1(SB)
187+ MOVD $86, R12
188+ B callbackasm1(SB)
189+ MOVD $87, R12
190+ B callbackasm1(SB)
191+ MOVD $88, R12
192+ B callbackasm1(SB)
193+ MOVD $89, R12
194+ B callbackasm1(SB)
195+ MOVD $90, R12
196+ B callbackasm1(SB)
197+ MOVD $91, R12
198+ B callbackasm1(SB)
199+ MOVD $92, R12
200+ B callbackasm1(SB)
201+ MOVD $93, R12
202+ B callbackasm1(SB)
203+ MOVD $94, R12
204+ B callbackasm1(SB)
205+ MOVD $95, R12
206+ B callbackasm1(SB)
207+ MOVD $96, R12
208+ B callbackasm1(SB)
209+ MOVD $97, R12
210+ B callbackasm1(SB)
211+ MOVD $98, R12
212+ B callbackasm1(SB)
213+ MOVD $99, R12
214+ B callbackasm1(SB)
215+ MOVD $100, R12
216+ B callbackasm1(SB)
217+ MOVD $101, R12
218+ B callbackasm1(SB)
219+ MOVD $102, R12
220+ B callbackasm1(SB)
221+ MOVD $103, R12
222+ B callbackasm1(SB)
223+ MOVD $104, R12
224+ B callbackasm1(SB)
225+ MOVD $105, R12
226+ B callbackasm1(SB)
227+ MOVD $106, R12
228+ B callbackasm1(SB)
229+ MOVD $107, R12
230+ B callbackasm1(SB)
231+ MOVD $108, R12
232+ B callbackasm1(SB)
233+ MOVD $109, R12
234+ B callbackasm1(SB)
235+ MOVD $110, R12
236+ B callbackasm1(SB)
237+ MOVD $111, R12
238+ B callbackasm1(SB)
239+ MOVD $112, R12
240+ B callbackasm1(SB)
241+ MOVD $113, R12
242+ B callbackasm1(SB)
243+ MOVD $114, R12
244+ B callbackasm1(SB)
245+ MOVD $115, R12
246+ B callbackasm1(SB)
247+ MOVD $116, R12
248+ B callbackasm1(SB)
249+ MOVD $117, R12
250+ B callbackasm1(SB)
251+ MOVD $118, R12
252+ B callbackasm1(SB)
253+ MOVD $119, R12
254+ B callbackasm1(SB)
255+ MOVD $120, R12
256+ B callbackasm1(SB)
257+ MOVD $121, R12
258+ B callbackasm1(SB)
259+ MOVD $122, R12
260+ B callbackasm1(SB)
261+ MOVD $123, R12
262+ B callbackasm1(SB)
263+ MOVD $124, R12
264+ B callbackasm1(SB)
265+ MOVD $125, R12
266+ B callbackasm1(SB)
267+ MOVD $126, R12
268+ B callbackasm1(SB)
269+ MOVD $127, R12
270+ B callbackasm1(SB)
271+ MOVD $128, R12
272+ B callbackasm1(SB)
273+ MOVD $129, R12
274+ B callbackasm1(SB)
275+ MOVD $130, R12
276+ B callbackasm1(SB)
277+ MOVD $131, R12
278+ B callbackasm1(SB)
279+ MOVD $132, R12
280+ B callbackasm1(SB)
281+ MOVD $133, R12
282+ B callbackasm1(SB)
283+ MOVD $134, R12
284+ B callbackasm1(SB)
285+ MOVD $135, R12
286+ B callbackasm1(SB)
287+ MOVD $136, R12
288+ B callbackasm1(SB)
289+ MOVD $137, R12
290+ B callbackasm1(SB)
291+ MOVD $138, R12
292+ B callbackasm1(SB)
293+ MOVD $139, R12
294+ B callbackasm1(SB)
295+ MOVD $140, R12
296+ B callbackasm1(SB)
297+ MOVD $141, R12
298+ B callbackasm1(SB)
299+ MOVD $142, R12
300+ B callbackasm1(SB)
301+ MOVD $143, R12
302+ B callbackasm1(SB)
303+ MOVD $144, R12
304+ B callbackasm1(SB)
305+ MOVD $145, R12
306+ B callbackasm1(SB)
307+ MOVD $146, R12
308+ B callbackasm1(SB)
309+ MOVD $147, R12
310+ B callbackasm1(SB)
311+ MOVD $148, R12
312+ B callbackasm1(SB)
313+ MOVD $149, R12
314+ B callbackasm1(SB)
315+ MOVD $150, R12
316+ B callbackasm1(SB)
317+ MOVD $151, R12
318+ B callbackasm1(SB)
319+ MOVD $152, R12
320+ B callbackasm1(SB)
321+ MOVD $153, R12
322+ B callbackasm1(SB)
323+ MOVD $154, R12
324+ B callbackasm1(SB)
325+ MOVD $155, R12
326+ B callbackasm1(SB)
327+ MOVD $156, R12
328+ B callbackasm1(SB)
329+ MOVD $157, R12
330+ B callbackasm1(SB)
331+ MOVD $158, R12
332+ B callbackasm1(SB)
333+ MOVD $159, R12
334+ B callbackasm1(SB)
335+ MOVD $160, R12
336+ B callbackasm1(SB)
337+ MOVD $161, R12
338+ B callbackasm1(SB)
339+ MOVD $162, R12
340+ B callbackasm1(SB)
341+ MOVD $163, R12
342+ B callbackasm1(SB)
343+ MOVD $164, R12
344+ B callbackasm1(SB)
345+ MOVD $165, R12
346+ B callbackasm1(SB)
347+ MOVD $166, R12
348+ B callbackasm1(SB)
349+ MOVD $167, R12
350+ B callbackasm1(SB)
351+ MOVD $168, R12
352+ B callbackasm1(SB)
353+ MOVD $169, R12
354+ B callbackasm1(SB)
355+ MOVD $170, R12
356+ B callbackasm1(SB)
357+ MOVD $171, R12
358+ B callbackasm1(SB)
359+ MOVD $172, R12
360+ B callbackasm1(SB)
361+ MOVD $173, R12
362+ B callbackasm1(SB)
363+ MOVD $174, R12
364+ B callbackasm1(SB)
365+ MOVD $175, R12
366+ B callbackasm1(SB)
367+ MOVD $176, R12
368+ B callbackasm1(SB)
369+ MOVD $177, R12
370+ B callbackasm1(SB)
371+ MOVD $178, R12
372+ B callbackasm1(SB)
373+ MOVD $179, R12
374+ B callbackasm1(SB)
375+ MOVD $180, R12
376+ B callbackasm1(SB)
377+ MOVD $181, R12
378+ B callbackasm1(SB)
379+ MOVD $182, R12
380+ B callbackasm1(SB)
381+ MOVD $183, R12
382+ B callbackasm1(SB)
383+ MOVD $184, R12
384+ B callbackasm1(SB)
385+ MOVD $185, R12
386+ B callbackasm1(SB)
387+ MOVD $186, R12
388+ B callbackasm1(SB)
389+ MOVD $187, R12
390+ B callbackasm1(SB)
391+ MOVD $188, R12
392+ B callbackasm1(SB)
393+ MOVD $189, R12
394+ B callbackasm1(SB)
395+ MOVD $190, R12
396+ B callbackasm1(SB)
397+ MOVD $191, R12
398+ B callbackasm1(SB)
399+ MOVD $192, R12
400+ B callbackasm1(SB)
401+ MOVD $193, R12
402+ B callbackasm1(SB)
403+ MOVD $194, R12
404+ B callbackasm1(SB)
405+ MOVD $195, R12
406+ B callbackasm1(SB)
407+ MOVD $196, R12
408+ B callbackasm1(SB)
409+ MOVD $197, R12
410+ B callbackasm1(SB)
411+ MOVD $198, R12
412+ B callbackasm1(SB)
413+ MOVD $199, R12
414+ B callbackasm1(SB)
415+ MOVD $200, R12
416+ B callbackasm1(SB)
417+ MOVD $201, R12
418+ B callbackasm1(SB)
419+ MOVD $202, R12
420+ B callbackasm1(SB)
421+ MOVD $203, R12
422+ B callbackasm1(SB)
423+ MOVD $204, R12
424+ B callbackasm1(SB)
425+ MOVD $205, R12
426+ B callbackasm1(SB)
427+ MOVD $206, R12
428+ B callbackasm1(SB)
429+ MOVD $207, R12
430+ B callbackasm1(SB)
431+ MOVD $208, R12
432+ B callbackasm1(SB)
433+ MOVD $209, R12
434+ B callbackasm1(SB)
435+ MOVD $210, R12
436+ B callbackasm1(SB)
437+ MOVD $211, R12
438+ B callbackasm1(SB)
439+ MOVD $212, R12
440+ B callbackasm1(SB)
441+ MOVD $213, R12
442+ B callbackasm1(SB)
443+ MOVD $214, R12
444+ B callbackasm1(SB)
445+ MOVD $215, R12
446+ B callbackasm1(SB)
447+ MOVD $216, R12
448+ B callbackasm1(SB)
449+ MOVD $217, R12
450+ B callbackasm1(SB)
451+ MOVD $218, R12
452+ B callbackasm1(SB)
453+ MOVD $219, R12
454+ B callbackasm1(SB)
455+ MOVD $220, R12
456+ B callbackasm1(SB)
457+ MOVD $221, R12
458+ B callbackasm1(SB)
459+ MOVD $222, R12
460+ B callbackasm1(SB)
461+ MOVD $223, R12
462+ B callbackasm1(SB)
463+ MOVD $224, R12
464+ B callbackasm1(SB)
465+ MOVD $225, R12
466+ B callbackasm1(SB)
467+ MOVD $226, R12
468+ B callbackasm1(SB)
469+ MOVD $227, R12
470+ B callbackasm1(SB)
471+ MOVD $228, R12
472+ B callbackasm1(SB)
473+ MOVD $229, R12
474+ B callbackasm1(SB)
475+ MOVD $230, R12
476+ B callbackasm1(SB)
477+ MOVD $231, R12
478+ B callbackasm1(SB)
479+ MOVD $232, R12
480+ B callbackasm1(SB)
481+ MOVD $233, R12
482+ B callbackasm1(SB)
483+ MOVD $234, R12
484+ B callbackasm1(SB)
485+ MOVD $235, R12
486+ B callbackasm1(SB)
487+ MOVD $236, R12
488+ B callbackasm1(SB)
489+ MOVD $237, R12
490+ B callbackasm1(SB)
491+ MOVD $238, R12
492+ B callbackasm1(SB)
493+ MOVD $239, R12
494+ B callbackasm1(SB)
495+ MOVD $240, R12
496+ B callbackasm1(SB)
497+ MOVD $241, R12
498+ B callbackasm1(SB)
499+ MOVD $242, R12
500+ B callbackasm1(SB)
501+ MOVD $243, R12
502+ B callbackasm1(SB)
503+ MOVD $244, R12
504+ B callbackasm1(SB)
505+ MOVD $245, R12
506+ B callbackasm1(SB)
507+ MOVD $246, R12
508+ B callbackasm1(SB)
509+ MOVD $247, R12
510+ B callbackasm1(SB)
511+ MOVD $248, R12
512+ B callbackasm1(SB)
513+ MOVD $249, R12
514+ B callbackasm1(SB)
515+ MOVD $250, R12
516+ B callbackasm1(SB)
517+ MOVD $251, R12
518+ B callbackasm1(SB)
519+ MOVD $252, R12
520+ B callbackasm1(SB)
521+ MOVD $253, R12
522+ B callbackasm1(SB)
523+ MOVD $254, R12
524+ B callbackasm1(SB)
525+ MOVD $255, R12
526+ B callbackasm1(SB)
527+ MOVD $256, R12
528+ B callbackasm1(SB)
529+ MOVD $257, R12
530+ B callbackasm1(SB)
531+ MOVD $258, R12
532+ B callbackasm1(SB)
533+ MOVD $259, R12
534+ B callbackasm1(SB)
535+ MOVD $260, R12
536+ B callbackasm1(SB)
537+ MOVD $261, R12
538+ B callbackasm1(SB)
539+ MOVD $262, R12
540+ B callbackasm1(SB)
541+ MOVD $263, R12
542+ B callbackasm1(SB)
543+ MOVD $264, R12
544+ B callbackasm1(SB)
545+ MOVD $265, R12
546+ B callbackasm1(SB)
547+ MOVD $266, R12
548+ B callbackasm1(SB)
549+ MOVD $267, R12
550+ B callbackasm1(SB)
551+ MOVD $268, R12
552+ B callbackasm1(SB)
553+ MOVD $269, R12
554+ B callbackasm1(SB)
555+ MOVD $270, R12
556+ B callbackasm1(SB)
557+ MOVD $271, R12
558+ B callbackasm1(SB)
559+ MOVD $272, R12
560+ B callbackasm1(SB)
561+ MOVD $273, R12
562+ B callbackasm1(SB)
563+ MOVD $274, R12
564+ B callbackasm1(SB)
565+ MOVD $275, R12
566+ B callbackasm1(SB)
567+ MOVD $276, R12
568+ B callbackasm1(SB)
569+ MOVD $277, R12
570+ B callbackasm1(SB)
571+ MOVD $278, R12
572+ B callbackasm1(SB)
573+ MOVD $279, R12
574+ B callbackasm1(SB)
575+ MOVD $280, R12
576+ B callbackasm1(SB)
577+ MOVD $281, R12
578+ B callbackasm1(SB)
579+ MOVD $282, R12
580+ B callbackasm1(SB)
581+ MOVD $283, R12
582+ B callbackasm1(SB)
583+ MOVD $284, R12
584+ B callbackasm1(SB)
585+ MOVD $285, R12
586+ B callbackasm1(SB)
587+ MOVD $286, R12
588+ B callbackasm1(SB)
589+ MOVD $287, R12
590+ B callbackasm1(SB)
591+ MOVD $288, R12
592+ B callbackasm1(SB)
593+ MOVD $289, R12
594+ B callbackasm1(SB)
595+ MOVD $290, R12
596+ B callbackasm1(SB)
597+ MOVD $291, R12
598+ B callbackasm1(SB)
599+ MOVD $292, R12
600+ B callbackasm1(SB)
601+ MOVD $293, R12
602+ B callbackasm1(SB)
603+ MOVD $294, R12
604+ B callbackasm1(SB)
605+ MOVD $295, R12
606+ B callbackasm1(SB)
607+ MOVD $296, R12
608+ B callbackasm1(SB)
609+ MOVD $297, R12
610+ B callbackasm1(SB)
611+ MOVD $298, R12
612+ B callbackasm1(SB)
613+ MOVD $299, R12
614+ B callbackasm1(SB)
615+ MOVD $300, R12
616+ B callbackasm1(SB)
617+ MOVD $301, R12
618+ B callbackasm1(SB)
619+ MOVD $302, R12
620+ B callbackasm1(SB)
621+ MOVD $303, R12
622+ B callbackasm1(SB)
623+ MOVD $304, R12
624+ B callbackasm1(SB)
625+ MOVD $305, R12
626+ B callbackasm1(SB)
627+ MOVD $306, R12
628+ B callbackasm1(SB)
629+ MOVD $307, R12
630+ B callbackasm1(SB)
631+ MOVD $308, R12
632+ B callbackasm1(SB)
633+ MOVD $309, R12
634+ B callbackasm1(SB)
635+ MOVD $310, R12
636+ B callbackasm1(SB)
637+ MOVD $311, R12
638+ B callbackasm1(SB)
639+ MOVD $312, R12
640+ B callbackasm1(SB)
641+ MOVD $313, R12
642+ B callbackasm1(SB)
643+ MOVD $314, R12
644+ B callbackasm1(SB)
645+ MOVD $315, R12
646+ B callbackasm1(SB)
647+ MOVD $316, R12
648+ B callbackasm1(SB)
649+ MOVD $317, R12
650+ B callbackasm1(SB)
651+ MOVD $318, R12
652+ B callbackasm1(SB)
653+ MOVD $319, R12
654+ B callbackasm1(SB)
655+ MOVD $320, R12
656+ B callbackasm1(SB)
657+ MOVD $321, R12
658+ B callbackasm1(SB)
659+ MOVD $322, R12
660+ B callbackasm1(SB)
661+ MOVD $323, R12
662+ B callbackasm1(SB)
663+ MOVD $324, R12
664+ B callbackasm1(SB)
665+ MOVD $325, R12
666+ B callbackasm1(SB)
667+ MOVD $326, R12
668+ B callbackasm1(SB)
669+ MOVD $327, R12
670+ B callbackasm1(SB)
671+ MOVD $328, R12
672+ B callbackasm1(SB)
673+ MOVD $329, R12
674+ B callbackasm1(SB)
675+ MOVD $330, R12
676+ B callbackasm1(SB)
677+ MOVD $331, R12
678+ B callbackasm1(SB)
679+ MOVD $332, R12
680+ B callbackasm1(SB)
681+ MOVD $333, R12
682+ B callbackasm1(SB)
683+ MOVD $334, R12
684+ B callbackasm1(SB)
685+ MOVD $335, R12
686+ B callbackasm1(SB)
687+ MOVD $336, R12
688+ B callbackasm1(SB)
689+ MOVD $337, R12
690+ B callbackasm1(SB)
691+ MOVD $338, R12
692+ B callbackasm1(SB)
693+ MOVD $339, R12
694+ B callbackasm1(SB)
695+ MOVD $340, R12
696+ B callbackasm1(SB)
697+ MOVD $341, R12
698+ B callbackasm1(SB)
699+ MOVD $342, R12
700+ B callbackasm1(SB)
701+ MOVD $343, R12
702+ B callbackasm1(SB)
703+ MOVD $344, R12
704+ B callbackasm1(SB)
705+ MOVD $345, R12
706+ B callbackasm1(SB)
707+ MOVD $346, R12
708+ B callbackasm1(SB)
709+ MOVD $347, R12
710+ B callbackasm1(SB)
711+ MOVD $348, R12
712+ B callbackasm1(SB)
713+ MOVD $349, R12
714+ B callbackasm1(SB)
715+ MOVD $350, R12
716+ B callbackasm1(SB)
717+ MOVD $351, R12
718+ B callbackasm1(SB)
719+ MOVD $352, R12
720+ B callbackasm1(SB)
721+ MOVD $353, R12
722+ B callbackasm1(SB)
723+ MOVD $354, R12
724+ B callbackasm1(SB)
725+ MOVD $355, R12
726+ B callbackasm1(SB)
727+ MOVD $356, R12
728+ B callbackasm1(SB)
729+ MOVD $357, R12
730+ B callbackasm1(SB)
731+ MOVD $358, R12
732+ B callbackasm1(SB)
733+ MOVD $359, R12
734+ B callbackasm1(SB)
735+ MOVD $360, R12
736+ B callbackasm1(SB)
737+ MOVD $361, R12
738+ B callbackasm1(SB)
739+ MOVD $362, R12
740+ B callbackasm1(SB)
741+ MOVD $363, R12
742+ B callbackasm1(SB)
743+ MOVD $364, R12
744+ B callbackasm1(SB)
745+ MOVD $365, R12
746+ B callbackasm1(SB)
747+ MOVD $366, R12
748+ B callbackasm1(SB)
749+ MOVD $367, R12
750+ B callbackasm1(SB)
751+ MOVD $368, R12
752+ B callbackasm1(SB)
753+ MOVD $369, R12
754+ B callbackasm1(SB)
755+ MOVD $370, R12
756+ B callbackasm1(SB)
757+ MOVD $371, R12
758+ B callbackasm1(SB)
759+ MOVD $372, R12
760+ B callbackasm1(SB)
761+ MOVD $373, R12
762+ B callbackasm1(SB)
763+ MOVD $374, R12
764+ B callbackasm1(SB)
765+ MOVD $375, R12
766+ B callbackasm1(SB)
767+ MOVD $376, R12
768+ B callbackasm1(SB)
769+ MOVD $377, R12
770+ B callbackasm1(SB)
771+ MOVD $378, R12
772+ B callbackasm1(SB)
773+ MOVD $379, R12
774+ B callbackasm1(SB)
775+ MOVD $380, R12
776+ B callbackasm1(SB)
777+ MOVD $381, R12
778+ B callbackasm1(SB)
779+ MOVD $382, R12
780+ B callbackasm1(SB)
781+ MOVD $383, R12
782+ B callbackasm1(SB)
783+ MOVD $384, R12
784+ B callbackasm1(SB)
785+ MOVD $385, R12
786+ B callbackasm1(SB)
787+ MOVD $386, R12
788+ B callbackasm1(SB)
789+ MOVD $387, R12
790+ B callbackasm1(SB)
791+ MOVD $388, R12
792+ B callbackasm1(SB)
793+ MOVD $389, R12
794+ B callbackasm1(SB)
795+ MOVD $390, R12
796+ B callbackasm1(SB)
797+ MOVD $391, R12
798+ B callbackasm1(SB)
799+ MOVD $392, R12
800+ B callbackasm1(SB)
801+ MOVD $393, R12
802+ B callbackasm1(SB)
803+ MOVD $394, R12
804+ B callbackasm1(SB)
805+ MOVD $395, R12
806+ B callbackasm1(SB)
807+ MOVD $396, R12
808+ B callbackasm1(SB)
809+ MOVD $397, R12
810+ B callbackasm1(SB)
811+ MOVD $398, R12
812+ B callbackasm1(SB)
813+ MOVD $399, R12
814+ B callbackasm1(SB)
815+ MOVD $400, R12
816+ B callbackasm1(SB)
817+ MOVD $401, R12
818+ B callbackasm1(SB)
819+ MOVD $402, R12
820+ B callbackasm1(SB)
821+ MOVD $403, R12
822+ B callbackasm1(SB)
823+ MOVD $404, R12
824+ B callbackasm1(SB)
825+ MOVD $405, R12
826+ B callbackasm1(SB)
827+ MOVD $406, R12
828+ B callbackasm1(SB)
829+ MOVD $407, R12
830+ B callbackasm1(SB)
831+ MOVD $408, R12
832+ B callbackasm1(SB)
833+ MOVD $409, R12
834+ B callbackasm1(SB)
835+ MOVD $410, R12
836+ B callbackasm1(SB)
837+ MOVD $411, R12
838+ B callbackasm1(SB)
839+ MOVD $412, R12
840+ B callbackasm1(SB)
841+ MOVD $413, R12
842+ B callbackasm1(SB)
843+ MOVD $414, R12
844+ B callbackasm1(SB)
845+ MOVD $415, R12
846+ B callbackasm1(SB)
847+ MOVD $416, R12
848+ B callbackasm1(SB)
849+ MOVD $417, R12
850+ B callbackasm1(SB)
851+ MOVD $418, R12
852+ B callbackasm1(SB)
853+ MOVD $419, R12
854+ B callbackasm1(SB)
855+ MOVD $420, R12
856+ B callbackasm1(SB)
857+ MOVD $421, R12
858+ B callbackasm1(SB)
859+ MOVD $422, R12
860+ B callbackasm1(SB)
861+ MOVD $423, R12
862+ B callbackasm1(SB)
863+ MOVD $424, R12
864+ B callbackasm1(SB)
865+ MOVD $425, R12
866+ B callbackasm1(SB)
867+ MOVD $426, R12
868+ B callbackasm1(SB)
869+ MOVD $427, R12
870+ B callbackasm1(SB)
871+ MOVD $428, R12
872+ B callbackasm1(SB)
873+ MOVD $429, R12
874+ B callbackasm1(SB)
875+ MOVD $430, R12
876+ B callbackasm1(SB)
877+ MOVD $431, R12
878+ B callbackasm1(SB)
879+ MOVD $432, R12
880+ B callbackasm1(SB)
881+ MOVD $433, R12
882+ B callbackasm1(SB)
883+ MOVD $434, R12
884+ B callbackasm1(SB)
885+ MOVD $435, R12
886+ B callbackasm1(SB)
887+ MOVD $436, R12
888+ B callbackasm1(SB)
889+ MOVD $437, R12
890+ B callbackasm1(SB)
891+ MOVD $438, R12
892+ B callbackasm1(SB)
893+ MOVD $439, R12
894+ B callbackasm1(SB)
895+ MOVD $440, R12
896+ B callbackasm1(SB)
897+ MOVD $441, R12
898+ B callbackasm1(SB)
899+ MOVD $442, R12
900+ B callbackasm1(SB)
901+ MOVD $443, R12
902+ B callbackasm1(SB)
903+ MOVD $444, R12
904+ B callbackasm1(SB)
905+ MOVD $445, R12
906+ B callbackasm1(SB)
907+ MOVD $446, R12
908+ B callbackasm1(SB)
909+ MOVD $447, R12
910+ B callbackasm1(SB)
911+ MOVD $448, R12
912+ B callbackasm1(SB)
913+ MOVD $449, R12
914+ B callbackasm1(SB)
915+ MOVD $450, R12
916+ B callbackasm1(SB)
917+ MOVD $451, R12
918+ B callbackasm1(SB)
919+ MOVD $452, R12
920+ B callbackasm1(SB)
921+ MOVD $453, R12
922+ B callbackasm1(SB)
923+ MOVD $454, R12
924+ B callbackasm1(SB)
925+ MOVD $455, R12
926+ B callbackasm1(SB)
927+ MOVD $456, R12
928+ B callbackasm1(SB)
929+ MOVD $457, R12
930+ B callbackasm1(SB)
931+ MOVD $458, R12
932+ B callbackasm1(SB)
933+ MOVD $459, R12
934+ B callbackasm1(SB)
935+ MOVD $460, R12
936+ B callbackasm1(SB)
937+ MOVD $461, R12
938+ B callbackasm1(SB)
939+ MOVD $462, R12
940+ B callbackasm1(SB)
941+ MOVD $463, R12
942+ B callbackasm1(SB)
943+ MOVD $464, R12
944+ B callbackasm1(SB)
945+ MOVD $465, R12
946+ B callbackasm1(SB)
947+ MOVD $466, R12
948+ B callbackasm1(SB)
949+ MOVD $467, R12
950+ B callbackasm1(SB)
951+ MOVD $468, R12
952+ B callbackasm1(SB)
953+ MOVD $469, R12
954+ B callbackasm1(SB)
955+ MOVD $470, R12
956+ B callbackasm1(SB)
957+ MOVD $471, R12
958+ B callbackasm1(SB)
959+ MOVD $472, R12
960+ B callbackasm1(SB)
961+ MOVD $473, R12
962+ B callbackasm1(SB)
963+ MOVD $474, R12
964+ B callbackasm1(SB)
965+ MOVD $475, R12
966+ B callbackasm1(SB)
967+ MOVD $476, R12
968+ B callbackasm1(SB)
969+ MOVD $477, R12
970+ B callbackasm1(SB)
971+ MOVD $478, R12
972+ B callbackasm1(SB)
973+ MOVD $479, R12
974+ B callbackasm1(SB)
975+ MOVD $480, R12
976+ B callbackasm1(SB)
977+ MOVD $481, R12
978+ B callbackasm1(SB)
979+ MOVD $482, R12
980+ B callbackasm1(SB)
981+ MOVD $483, R12
982+ B callbackasm1(SB)
983+ MOVD $484, R12
984+ B callbackasm1(SB)
985+ MOVD $485, R12
986+ B callbackasm1(SB)
987+ MOVD $486, R12
988+ B callbackasm1(SB)
989+ MOVD $487, R12
990+ B callbackasm1(SB)
991+ MOVD $488, R12
992+ B callbackasm1(SB)
993+ MOVD $489, R12
994+ B callbackasm1(SB)
995+ MOVD $490, R12
996+ B callbackasm1(SB)
997+ MOVD $491, R12
998+ B callbackasm1(SB)
999+ MOVD $492, R12
1000+ B callbackasm1(SB)
1001+ MOVD $493, R12
1002+ B callbackasm1(SB)
1003+ MOVD $494, R12
1004+ B callbackasm1(SB)
1005+ MOVD $495, R12
1006+ B callbackasm1(SB)
1007+ MOVD $496, R12
1008+ B callbackasm1(SB)
1009+ MOVD $497, R12
1010+ B callbackasm1(SB)
1011+ MOVD $498, R12
1012+ B callbackasm1(SB)
1013+ MOVD $499, R12
1014+ B callbackasm1(SB)
1015+ MOVD $500, R12
1016+ B callbackasm1(SB)
1017+ MOVD $501, R12
1018+ B callbackasm1(SB)
1019+ MOVD $502, R12
1020+ B callbackasm1(SB)
1021+ MOVD $503, R12
1022+ B callbackasm1(SB)
1023+ MOVD $504, R12
1024+ B callbackasm1(SB)
1025+ MOVD $505, R12
1026+ B callbackasm1(SB)
1027+ MOVD $506, R12
1028+ B callbackasm1(SB)
1029+ MOVD $507, R12
1030+ B callbackasm1(SB)
1031+ MOVD $508, R12
1032+ B callbackasm1(SB)
1033+ MOVD $509, R12
1034+ B callbackasm1(SB)
1035+ MOVD $510, R12
1036+ B callbackasm1(SB)
1037+ MOVD $511, R12
1038+ B callbackasm1(SB)
1039+ MOVD $512, R12
1040+ B callbackasm1(SB)
1041+ MOVD $513, R12
1042+ B callbackasm1(SB)
1043+ MOVD $514, R12
1044+ B callbackasm1(SB)
1045+ MOVD $515, R12
1046+ B callbackasm1(SB)
1047+ MOVD $516, R12
1048+ B callbackasm1(SB)
1049+ MOVD $517, R12
1050+ B callbackasm1(SB)
1051+ MOVD $518, R12
1052+ B callbackasm1(SB)
1053+ MOVD $519, R12
1054+ B callbackasm1(SB)
1055+ MOVD $520, R12
1056+ B callbackasm1(SB)
1057+ MOVD $521, R12
1058+ B callbackasm1(SB)
1059+ MOVD $522, R12
1060+ B callbackasm1(SB)
1061+ MOVD $523, R12
1062+ B callbackasm1(SB)
1063+ MOVD $524, R12
1064+ B callbackasm1(SB)
1065+ MOVD $525, R12
1066+ B callbackasm1(SB)
1067+ MOVD $526, R12
1068+ B callbackasm1(SB)
1069+ MOVD $527, R12
1070+ B callbackasm1(SB)
1071+ MOVD $528, R12
1072+ B callbackasm1(SB)
1073+ MOVD $529, R12
1074+ B callbackasm1(SB)
1075+ MOVD $530, R12
1076+ B callbackasm1(SB)
1077+ MOVD $531, R12
1078+ B callbackasm1(SB)
1079+ MOVD $532, R12
1080+ B callbackasm1(SB)
1081+ MOVD $533, R12
1082+ B callbackasm1(SB)
1083+ MOVD $534, R12
1084+ B callbackasm1(SB)
1085+ MOVD $535, R12
1086+ B callbackasm1(SB)
1087+ MOVD $536, R12
1088+ B callbackasm1(SB)
1089+ MOVD $537, R12
1090+ B callbackasm1(SB)
1091+ MOVD $538, R12
1092+ B callbackasm1(SB)
1093+ MOVD $539, R12
1094+ B callbackasm1(SB)
1095+ MOVD $540, R12
1096+ B callbackasm1(SB)
1097+ MOVD $541, R12
1098+ B callbackasm1(SB)
1099+ MOVD $542, R12
1100+ B callbackasm1(SB)
1101+ MOVD $543, R12
1102+ B callbackasm1(SB)
1103+ MOVD $544, R12
1104+ B callbackasm1(SB)
1105+ MOVD $545, R12
1106+ B callbackasm1(SB)
1107+ MOVD $546, R12
1108+ B callbackasm1(SB)
1109+ MOVD $547, R12
1110+ B callbackasm1(SB)
1111+ MOVD $548, R12
1112+ B callbackasm1(SB)
1113+ MOVD $549, R12
1114+ B callbackasm1(SB)
1115+ MOVD $550, R12
1116+ B callbackasm1(SB)
1117+ MOVD $551, R12
1118+ B callbackasm1(SB)
1119+ MOVD $552, R12
1120+ B callbackasm1(SB)
1121+ MOVD $553, R12
1122+ B callbackasm1(SB)
1123+ MOVD $554, R12
1124+ B callbackasm1(SB)
1125+ MOVD $555, R12
1126+ B callbackasm1(SB)
1127+ MOVD $556, R12
1128+ B callbackasm1(SB)
1129+ MOVD $557, R12
1130+ B callbackasm1(SB)
1131+ MOVD $558, R12
1132+ B callbackasm1(SB)
1133+ MOVD $559, R12
1134+ B callbackasm1(SB)
1135+ MOVD $560, R12
1136+ B callbackasm1(SB)
1137+ MOVD $561, R12
1138+ B callbackasm1(SB)
1139+ MOVD $562, R12
1140+ B callbackasm1(SB)
1141+ MOVD $563, R12
1142+ B callbackasm1(SB)
1143+ MOVD $564, R12
1144+ B callbackasm1(SB)
1145+ MOVD $565, R12
1146+ B callbackasm1(SB)
1147+ MOVD $566, R12
1148+ B callbackasm1(SB)
1149+ MOVD $567, R12
1150+ B callbackasm1(SB)
1151+ MOVD $568, R12
1152+ B callbackasm1(SB)
1153+ MOVD $569, R12
1154+ B callbackasm1(SB)
1155+ MOVD $570, R12
1156+ B callbackasm1(SB)
1157+ MOVD $571, R12
1158+ B callbackasm1(SB)
1159+ MOVD $572, R12
1160+ B callbackasm1(SB)
1161+ MOVD $573, R12
1162+ B callbackasm1(SB)
1163+ MOVD $574, R12
1164+ B callbackasm1(SB)
1165+ MOVD $575, R12
1166+ B callbackasm1(SB)
1167+ MOVD $576, R12
1168+ B callbackasm1(SB)
1169+ MOVD $577, R12
1170+ B callbackasm1(SB)
1171+ MOVD $578, R12
1172+ B callbackasm1(SB)
1173+ MOVD $579, R12
1174+ B callbackasm1(SB)
1175+ MOVD $580, R12
1176+ B callbackasm1(SB)
1177+ MOVD $581, R12
1178+ B callbackasm1(SB)
1179+ MOVD $582, R12
1180+ B callbackasm1(SB)
1181+ MOVD $583, R12
1182+ B callbackasm1(SB)
1183+ MOVD $584, R12
1184+ B callbackasm1(SB)
1185+ MOVD $585, R12
1186+ B callbackasm1(SB)
1187+ MOVD $586, R12
1188+ B callbackasm1(SB)
1189+ MOVD $587, R12
1190+ B callbackasm1(SB)
1191+ MOVD $588, R12
1192+ B callbackasm1(SB)
1193+ MOVD $589, R12
1194+ B callbackasm1(SB)
1195+ MOVD $590, R12
1196+ B callbackasm1(SB)
1197+ MOVD $591, R12
1198+ B callbackasm1(SB)
1199+ MOVD $592, R12
1200+ B callbackasm1(SB)
1201+ MOVD $593, R12
1202+ B callbackasm1(SB)
1203+ MOVD $594, R12
1204+ B callbackasm1(SB)
1205+ MOVD $595, R12
1206+ B callbackasm1(SB)
1207+ MOVD $596, R12
1208+ B callbackasm1(SB)
1209+ MOVD $597, R12
1210+ B callbackasm1(SB)
1211+ MOVD $598, R12
1212+ B callbackasm1(SB)
1213+ MOVD $599, R12
1214+ B callbackasm1(SB)
1215+ MOVD $600, R12
1216+ B callbackasm1(SB)
1217+ MOVD $601, R12
1218+ B callbackasm1(SB)
1219+ MOVD $602, R12
1220+ B callbackasm1(SB)
1221+ MOVD $603, R12
1222+ B callbackasm1(SB)
1223+ MOVD $604, R12
1224+ B callbackasm1(SB)
1225+ MOVD $605, R12
1226+ B callbackasm1(SB)
1227+ MOVD $606, R12
1228+ B callbackasm1(SB)
1229+ MOVD $607, R12
1230+ B callbackasm1(SB)
1231+ MOVD $608, R12
1232+ B callbackasm1(SB)
1233+ MOVD $609, R12
1234+ B callbackasm1(SB)
1235+ MOVD $610, R12
1236+ B callbackasm1(SB)
1237+ MOVD $611, R12
1238+ B callbackasm1(SB)
1239+ MOVD $612, R12
1240+ B callbackasm1(SB)
1241+ MOVD $613, R12
1242+ B callbackasm1(SB)
1243+ MOVD $614, R12
1244+ B callbackasm1(SB)
1245+ MOVD $615, R12
1246+ B callbackasm1(SB)
1247+ MOVD $616, R12
1248+ B callbackasm1(SB)
1249+ MOVD $617, R12
1250+ B callbackasm1(SB)
1251+ MOVD $618, R12
1252+ B callbackasm1(SB)
1253+ MOVD $619, R12
1254+ B callbackasm1(SB)
1255+ MOVD $620, R12
1256+ B callbackasm1(SB)
1257+ MOVD $621, R12
1258+ B callbackasm1(SB)
1259+ MOVD $622, R12
1260+ B callbackasm1(SB)
1261+ MOVD $623, R12
1262+ B callbackasm1(SB)
1263+ MOVD $624, R12
1264+ B callbackasm1(SB)
1265+ MOVD $625, R12
1266+ B callbackasm1(SB)
1267+ MOVD $626, R12
1268+ B callbackasm1(SB)
1269+ MOVD $627, R12
1270+ B callbackasm1(SB)
1271+ MOVD $628, R12
1272+ B callbackasm1(SB)
1273+ MOVD $629, R12
1274+ B callbackasm1(SB)
1275+ MOVD $630, R12
1276+ B callbackasm1(SB)
1277+ MOVD $631, R12
1278+ B callbackasm1(SB)
1279+ MOVD $632, R12
1280+ B callbackasm1(SB)
1281+ MOVD $633, R12
1282+ B callbackasm1(SB)
1283+ MOVD $634, R12
1284+ B callbackasm1(SB)
1285+ MOVD $635, R12
1286+ B callbackasm1(SB)
1287+ MOVD $636, R12
1288+ B callbackasm1(SB)
1289+ MOVD $637, R12
1290+ B callbackasm1(SB)
1291+ MOVD $638, R12
1292+ B callbackasm1(SB)
1293+ MOVD $639, R12
1294+ B callbackasm1(SB)
1295+ MOVD $640, R12
1296+ B callbackasm1(SB)
1297+ MOVD $641, R12
1298+ B callbackasm1(SB)
1299+ MOVD $642, R12
1300+ B callbackasm1(SB)
1301+ MOVD $643, R12
1302+ B callbackasm1(SB)
1303+ MOVD $644, R12
1304+ B callbackasm1(SB)
1305+ MOVD $645, R12
1306+ B callbackasm1(SB)
1307+ MOVD $646, R12
1308+ B callbackasm1(SB)
1309+ MOVD $647, R12
1310+ B callbackasm1(SB)
1311+ MOVD $648, R12
1312+ B callbackasm1(SB)
1313+ MOVD $649, R12
1314+ B callbackasm1(SB)
1315+ MOVD $650, R12
1316+ B callbackasm1(SB)
1317+ MOVD $651, R12
1318+ B callbackasm1(SB)
1319+ MOVD $652, R12
1320+ B callbackasm1(SB)
1321+ MOVD $653, R12
1322+ B callbackasm1(SB)
1323+ MOVD $654, R12
1324+ B callbackasm1(SB)
1325+ MOVD $655, R12
1326+ B callbackasm1(SB)
1327+ MOVD $656, R12
1328+ B callbackasm1(SB)
1329+ MOVD $657, R12
1330+ B callbackasm1(SB)
1331+ MOVD $658, R12
1332+ B callbackasm1(SB)
1333+ MOVD $659, R12
1334+ B callbackasm1(SB)
1335+ MOVD $660, R12
1336+ B callbackasm1(SB)
1337+ MOVD $661, R12
1338+ B callbackasm1(SB)
1339+ MOVD $662, R12
1340+ B callbackasm1(SB)
1341+ MOVD $663, R12
1342+ B callbackasm1(SB)
1343+ MOVD $664, R12
1344+ B callbackasm1(SB)
1345+ MOVD $665, R12
1346+ B callbackasm1(SB)
1347+ MOVD $666, R12
1348+ B callbackasm1(SB)
1349+ MOVD $667, R12
1350+ B callbackasm1(SB)
1351+ MOVD $668, R12
1352+ B callbackasm1(SB)
1353+ MOVD $669, R12
1354+ B callbackasm1(SB)
1355+ MOVD $670, R12
1356+ B callbackasm1(SB)
1357+ MOVD $671, R12
1358+ B callbackasm1(SB)
1359+ MOVD $672, R12
1360+ B callbackasm1(SB)
1361+ MOVD $673, R12
1362+ B callbackasm1(SB)
1363+ MOVD $674, R12
1364+ B callbackasm1(SB)
1365+ MOVD $675, R12
1366+ B callbackasm1(SB)
1367+ MOVD $676, R12
1368+ B callbackasm1(SB)
1369+ MOVD $677, R12
1370+ B callbackasm1(SB)
1371+ MOVD $678, R12
1372+ B callbackasm1(SB)
1373+ MOVD $679, R12
1374+ B callbackasm1(SB)
1375+ MOVD $680, R12
1376+ B callbackasm1(SB)
1377+ MOVD $681, R12
1378+ B callbackasm1(SB)
1379+ MOVD $682, R12
1380+ B callbackasm1(SB)
1381+ MOVD $683, R12
1382+ B callbackasm1(SB)
1383+ MOVD $684, R12
1384+ B callbackasm1(SB)
1385+ MOVD $685, R12
1386+ B callbackasm1(SB)
1387+ MOVD $686, R12
1388+ B callbackasm1(SB)
1389+ MOVD $687, R12
1390+ B callbackasm1(SB)
1391+ MOVD $688, R12
1392+ B callbackasm1(SB)
1393+ MOVD $689, R12
1394+ B callbackasm1(SB)
1395+ MOVD $690, R12
1396+ B callbackasm1(SB)
1397+ MOVD $691, R12
1398+ B callbackasm1(SB)
1399+ MOVD $692, R12
1400+ B callbackasm1(SB)
1401+ MOVD $693, R12
1402+ B callbackasm1(SB)
1403+ MOVD $694, R12
1404+ B callbackasm1(SB)
1405+ MOVD $695, R12
1406+ B callbackasm1(SB)
1407+ MOVD $696, R12
1408+ B callbackasm1(SB)
1409+ MOVD $697, R12
1410+ B callbackasm1(SB)
1411+ MOVD $698, R12
1412+ B callbackasm1(SB)
1413+ MOVD $699, R12
1414+ B callbackasm1(SB)
1415+ MOVD $700, R12
1416+ B callbackasm1(SB)
1417+ MOVD $701, R12
1418+ B callbackasm1(SB)
1419+ MOVD $702, R12
1420+ B callbackasm1(SB)
1421+ MOVD $703, R12
1422+ B callbackasm1(SB)
1423+ MOVD $704, R12
1424+ B callbackasm1(SB)
1425+ MOVD $705, R12
1426+ B callbackasm1(SB)
1427+ MOVD $706, R12
1428+ B callbackasm1(SB)
1429+ MOVD $707, R12
1430+ B callbackasm1(SB)
1431+ MOVD $708, R12
1432+ B callbackasm1(SB)
1433+ MOVD $709, R12
1434+ B callbackasm1(SB)
1435+ MOVD $710, R12
1436+ B callbackasm1(SB)
1437+ MOVD $711, R12
1438+ B callbackasm1(SB)
1439+ MOVD $712, R12
1440+ B callbackasm1(SB)
1441+ MOVD $713, R12
1442+ B callbackasm1(SB)
1443+ MOVD $714, R12
1444+ B callbackasm1(SB)
1445+ MOVD $715, R12
1446+ B callbackasm1(SB)
1447+ MOVD $716, R12
1448+ B callbackasm1(SB)
1449+ MOVD $717, R12
1450+ B callbackasm1(SB)
1451+ MOVD $718, R12
1452+ B callbackasm1(SB)
1453+ MOVD $719, R12
1454+ B callbackasm1(SB)
1455+ MOVD $720, R12
1456+ B callbackasm1(SB)
1457+ MOVD $721, R12
1458+ B callbackasm1(SB)
1459+ MOVD $722, R12
1460+ B callbackasm1(SB)
1461+ MOVD $723, R12
1462+ B callbackasm1(SB)
1463+ MOVD $724, R12
1464+ B callbackasm1(SB)
1465+ MOVD $725, R12
1466+ B callbackasm1(SB)
1467+ MOVD $726, R12
1468+ B callbackasm1(SB)
1469+ MOVD $727, R12
1470+ B callbackasm1(SB)
1471+ MOVD $728, R12
1472+ B callbackasm1(SB)
1473+ MOVD $729, R12
1474+ B callbackasm1(SB)
1475+ MOVD $730, R12
1476+ B callbackasm1(SB)
1477+ MOVD $731, R12
1478+ B callbackasm1(SB)
1479+ MOVD $732, R12
1480+ B callbackasm1(SB)
1481+ MOVD $733, R12
1482+ B callbackasm1(SB)
1483+ MOVD $734, R12
1484+ B callbackasm1(SB)
1485+ MOVD $735, R12
1486+ B callbackasm1(SB)
1487+ MOVD $736, R12
1488+ B callbackasm1(SB)
1489+ MOVD $737, R12
1490+ B callbackasm1(SB)
1491+ MOVD $738, R12
1492+ B callbackasm1(SB)
1493+ MOVD $739, R12
1494+ B callbackasm1(SB)
1495+ MOVD $740, R12
1496+ B callbackasm1(SB)
1497+ MOVD $741, R12
1498+ B callbackasm1(SB)
1499+ MOVD $742, R12
1500+ B callbackasm1(SB)
1501+ MOVD $743, R12
1502+ B callbackasm1(SB)
1503+ MOVD $744, R12
1504+ B callbackasm1(SB)
1505+ MOVD $745, R12
1506+ B callbackasm1(SB)
1507+ MOVD $746, R12
1508+ B callbackasm1(SB)
1509+ MOVD $747, R12
1510+ B callbackasm1(SB)
1511+ MOVD $748, R12
1512+ B callbackasm1(SB)
1513+ MOVD $749, R12
1514+ B callbackasm1(SB)
1515+ MOVD $750, R12
1516+ B callbackasm1(SB)
1517+ MOVD $751, R12
1518+ B callbackasm1(SB)
1519+ MOVD $752, R12
1520+ B callbackasm1(SB)
1521+ MOVD $753, R12
1522+ B callbackasm1(SB)
1523+ MOVD $754, R12
1524+ B callbackasm1(SB)
1525+ MOVD $755, R12
1526+ B callbackasm1(SB)
1527+ MOVD $756, R12
1528+ B callbackasm1(SB)
1529+ MOVD $757, R12
1530+ B callbackasm1(SB)
1531+ MOVD $758, R12
1532+ B callbackasm1(SB)
1533+ MOVD $759, R12
1534+ B callbackasm1(SB)
1535+ MOVD $760, R12
1536+ B callbackasm1(SB)
1537+ MOVD $761, R12
1538+ B callbackasm1(SB)
1539+ MOVD $762, R12
1540+ B callbackasm1(SB)
1541+ MOVD $763, R12
1542+ B callbackasm1(SB)
1543+ MOVD $764, R12
1544+ B callbackasm1(SB)
1545+ MOVD $765, R12
1546+ B callbackasm1(SB)
1547+ MOVD $766, R12
1548+ B callbackasm1(SB)
1549+ MOVD $767, R12
1550+ B callbackasm1(SB)
1551+ MOVD $768, R12
1552+ B callbackasm1(SB)
1553+ MOVD $769, R12
1554+ B callbackasm1(SB)
1555+ MOVD $770, R12
1556+ B callbackasm1(SB)
1557+ MOVD $771, R12
1558+ B callbackasm1(SB)
1559+ MOVD $772, R12
1560+ B callbackasm1(SB)
1561+ MOVD $773, R12
1562+ B callbackasm1(SB)
1563+ MOVD $774, R12
1564+ B callbackasm1(SB)
1565+ MOVD $775, R12
1566+ B callbackasm1(SB)
1567+ MOVD $776, R12
1568+ B callbackasm1(SB)
1569+ MOVD $777, R12
1570+ B callbackasm1(SB)
1571+ MOVD $778, R12
1572+ B callbackasm1(SB)
1573+ MOVD $779, R12
1574+ B callbackasm1(SB)
1575+ MOVD $780, R12
1576+ B callbackasm1(SB)
1577+ MOVD $781, R12
1578+ B callbackasm1(SB)
1579+ MOVD $782, R12
1580+ B callbackasm1(SB)
1581+ MOVD $783, R12
1582+ B callbackasm1(SB)
1583+ MOVD $784, R12
1584+ B callbackasm1(SB)
1585+ MOVD $785, R12
1586+ B callbackasm1(SB)
1587+ MOVD $786, R12
1588+ B callbackasm1(SB)
1589+ MOVD $787, R12
1590+ B callbackasm1(SB)
1591+ MOVD $788, R12
1592+ B callbackasm1(SB)
1593+ MOVD $789, R12
1594+ B callbackasm1(SB)
1595+ MOVD $790, R12
1596+ B callbackasm1(SB)
1597+ MOVD $791, R12
1598+ B callbackasm1(SB)
1599+ MOVD $792, R12
1600+ B callbackasm1(SB)
1601+ MOVD $793, R12
1602+ B callbackasm1(SB)
1603+ MOVD $794, R12
1604+ B callbackasm1(SB)
1605+ MOVD $795, R12
1606+ B callbackasm1(SB)
1607+ MOVD $796, R12
1608+ B callbackasm1(SB)
1609+ MOVD $797, R12
1610+ B callbackasm1(SB)
1611+ MOVD $798, R12
1612+ B callbackasm1(SB)
1613+ MOVD $799, R12
1614+ B callbackasm1(SB)
1615+ MOVD $800, R12
1616+ B callbackasm1(SB)
1617+ MOVD $801, R12
1618+ B callbackasm1(SB)
1619+ MOVD $802, R12
1620+ B callbackasm1(SB)
1621+ MOVD $803, R12
1622+ B callbackasm1(SB)
1623+ MOVD $804, R12
1624+ B callbackasm1(SB)
1625+ MOVD $805, R12
1626+ B callbackasm1(SB)
1627+ MOVD $806, R12
1628+ B callbackasm1(SB)
1629+ MOVD $807, R12
1630+ B callbackasm1(SB)
1631+ MOVD $808, R12
1632+ B callbackasm1(SB)
1633+ MOVD $809, R12
1634+ B callbackasm1(SB)
1635+ MOVD $810, R12
1636+ B callbackasm1(SB)
1637+ MOVD $811, R12
1638+ B callbackasm1(SB)
1639+ MOVD $812, R12
1640+ B callbackasm1(SB)
1641+ MOVD $813, R12
1642+ B callbackasm1(SB)
1643+ MOVD $814, R12
1644+ B callbackasm1(SB)
1645+ MOVD $815, R12
1646+ B callbackasm1(SB)
1647+ MOVD $816, R12
1648+ B callbackasm1(SB)
1649+ MOVD $817, R12
1650+ B callbackasm1(SB)
1651+ MOVD $818, R12
1652+ B callbackasm1(SB)
1653+ MOVD $819, R12
1654+ B callbackasm1(SB)
1655+ MOVD $820, R12
1656+ B callbackasm1(SB)
1657+ MOVD $821, R12
1658+ B callbackasm1(SB)
1659+ MOVD $822, R12
1660+ B callbackasm1(SB)
1661+ MOVD $823, R12
1662+ B callbackasm1(SB)
1663+ MOVD $824, R12
1664+ B callbackasm1(SB)
1665+ MOVD $825, R12
1666+ B callbackasm1(SB)
1667+ MOVD $826, R12
1668+ B callbackasm1(SB)
1669+ MOVD $827, R12
1670+ B callbackasm1(SB)
1671+ MOVD $828, R12
1672+ B callbackasm1(SB)
1673+ MOVD $829, R12
1674+ B callbackasm1(SB)
1675+ MOVD $830, R12
1676+ B callbackasm1(SB)
1677+ MOVD $831, R12
1678+ B callbackasm1(SB)
1679+ MOVD $832, R12
1680+ B callbackasm1(SB)
1681+ MOVD $833, R12
1682+ B callbackasm1(SB)
1683+ MOVD $834, R12
1684+ B callbackasm1(SB)
1685+ MOVD $835, R12
1686+ B callbackasm1(SB)
1687+ MOVD $836, R12
1688+ B callbackasm1(SB)
1689+ MOVD $837, R12
1690+ B callbackasm1(SB)
1691+ MOVD $838, R12
1692+ B callbackasm1(SB)
1693+ MOVD $839, R12
1694+ B callbackasm1(SB)
1695+ MOVD $840, R12
1696+ B callbackasm1(SB)
1697+ MOVD $841, R12
1698+ B callbackasm1(SB)
1699+ MOVD $842, R12
1700+ B callbackasm1(SB)
1701+ MOVD $843, R12
1702+ B callbackasm1(SB)
1703+ MOVD $844, R12
1704+ B callbackasm1(SB)
1705+ MOVD $845, R12
1706+ B callbackasm1(SB)
1707+ MOVD $846, R12
1708+ B callbackasm1(SB)
1709+ MOVD $847, R12
1710+ B callbackasm1(SB)
1711+ MOVD $848, R12
1712+ B callbackasm1(SB)
1713+ MOVD $849, R12
1714+ B callbackasm1(SB)
1715+ MOVD $850, R12
1716+ B callbackasm1(SB)
1717+ MOVD $851, R12
1718+ B callbackasm1(SB)
1719+ MOVD $852, R12
1720+ B callbackasm1(SB)
1721+ MOVD $853, R12
1722+ B callbackasm1(SB)
1723+ MOVD $854, R12
1724+ B callbackasm1(SB)
1725+ MOVD $855, R12
1726+ B callbackasm1(SB)
1727+ MOVD $856, R12
1728+ B callbackasm1(SB)
1729+ MOVD $857, R12
1730+ B callbackasm1(SB)
1731+ MOVD $858, R12
1732+ B callbackasm1(SB)
1733+ MOVD $859, R12
1734+ B callbackasm1(SB)
1735+ MOVD $860, R12
1736+ B callbackasm1(SB)
1737+ MOVD $861, R12
1738+ B callbackasm1(SB)
1739+ MOVD $862, R12
1740+ B callbackasm1(SB)
1741+ MOVD $863, R12
1742+ B callbackasm1(SB)
1743+ MOVD $864, R12
1744+ B callbackasm1(SB)
1745+ MOVD $865, R12
1746+ B callbackasm1(SB)
1747+ MOVD $866, R12
1748+ B callbackasm1(SB)
1749+ MOVD $867, R12
1750+ B callbackasm1(SB)
1751+ MOVD $868, R12
1752+ B callbackasm1(SB)
1753+ MOVD $869, R12
1754+ B callbackasm1(SB)
1755+ MOVD $870, R12
1756+ B callbackasm1(SB)
1757+ MOVD $871, R12
1758+ B callbackasm1(SB)
1759+ MOVD $872, R12
1760+ B callbackasm1(SB)
1761+ MOVD $873, R12
1762+ B callbackasm1(SB)
1763+ MOVD $874, R12
1764+ B callbackasm1(SB)
1765+ MOVD $875, R12
1766+ B callbackasm1(SB)
1767+ MOVD $876, R12
1768+ B callbackasm1(SB)
1769+ MOVD $877, R12
1770+ B callbackasm1(SB)
1771+ MOVD $878, R12
1772+ B callbackasm1(SB)
1773+ MOVD $879, R12
1774+ B callbackasm1(SB)
1775+ MOVD $880, R12
1776+ B callbackasm1(SB)
1777+ MOVD $881, R12
1778+ B callbackasm1(SB)
1779+ MOVD $882, R12
1780+ B callbackasm1(SB)
1781+ MOVD $883, R12
1782+ B callbackasm1(SB)
1783+ MOVD $884, R12
1784+ B callbackasm1(SB)
1785+ MOVD $885, R12
1786+ B callbackasm1(SB)
1787+ MOVD $886, R12
1788+ B callbackasm1(SB)
1789+ MOVD $887, R12
1790+ B callbackasm1(SB)
1791+ MOVD $888, R12
1792+ B callbackasm1(SB)
1793+ MOVD $889, R12
1794+ B callbackasm1(SB)
1795+ MOVD $890, R12
1796+ B callbackasm1(SB)
1797+ MOVD $891, R12
1798+ B callbackasm1(SB)
1799+ MOVD $892, R12
1800+ B callbackasm1(SB)
1801+ MOVD $893, R12
1802+ B callbackasm1(SB)
1803+ MOVD $894, R12
1804+ B callbackasm1(SB)
1805+ MOVD $895, R12
1806+ B callbackasm1(SB)
1807+ MOVD $896, R12
1808+ B callbackasm1(SB)
1809+ MOVD $897, R12
1810+ B callbackasm1(SB)
1811+ MOVD $898, R12
1812+ B callbackasm1(SB)
1813+ MOVD $899, R12
1814+ B callbackasm1(SB)
1815+ MOVD $900, R12
1816+ B callbackasm1(SB)
1817+ MOVD $901, R12
1818+ B callbackasm1(SB)
1819+ MOVD $902, R12
1820+ B callbackasm1(SB)
1821+ MOVD $903, R12
1822+ B callbackasm1(SB)
1823+ MOVD $904, R12
1824+ B callbackasm1(SB)
1825+ MOVD $905, R12
1826+ B callbackasm1(SB)
1827+ MOVD $906, R12
1828+ B callbackasm1(SB)
1829+ MOVD $907, R12
1830+ B callbackasm1(SB)
1831+ MOVD $908, R12
1832+ B callbackasm1(SB)
1833+ MOVD $909, R12
1834+ B callbackasm1(SB)
1835+ MOVD $910, R12
1836+ B callbackasm1(SB)
1837+ MOVD $911, R12
1838+ B callbackasm1(SB)
1839+ MOVD $912, R12
1840+ B callbackasm1(SB)
1841+ MOVD $913, R12
1842+ B callbackasm1(SB)
1843+ MOVD $914, R12
1844+ B callbackasm1(SB)
1845+ MOVD $915, R12
1846+ B callbackasm1(SB)
1847+ MOVD $916, R12
1848+ B callbackasm1(SB)
1849+ MOVD $917, R12
1850+ B callbackasm1(SB)
1851+ MOVD $918, R12
1852+ B callbackasm1(SB)
1853+ MOVD $919, R12
1854+ B callbackasm1(SB)
1855+ MOVD $920, R12
1856+ B callbackasm1(SB)
1857+ MOVD $921, R12
1858+ B callbackasm1(SB)
1859+ MOVD $922, R12
1860+ B callbackasm1(SB)
1861+ MOVD $923, R12
1862+ B callbackasm1(SB)
1863+ MOVD $924, R12
1864+ B callbackasm1(SB)
1865+ MOVD $925, R12
1866+ B callbackasm1(SB)
1867+ MOVD $926, R12
1868+ B callbackasm1(SB)
1869+ MOVD $927, R12
1870+ B callbackasm1(SB)
1871+ MOVD $928, R12
1872+ B callbackasm1(SB)
1873+ MOVD $929, R12
1874+ B callbackasm1(SB)
1875+ MOVD $930, R12
1876+ B callbackasm1(SB)
1877+ MOVD $931, R12
1878+ B callbackasm1(SB)
1879+ MOVD $932, R12
1880+ B callbackasm1(SB)
1881+ MOVD $933, R12
1882+ B callbackasm1(SB)
1883+ MOVD $934, R12
1884+ B callbackasm1(SB)
1885+ MOVD $935, R12
1886+ B callbackasm1(SB)
1887+ MOVD $936, R12
1888+ B callbackasm1(SB)
1889+ MOVD $937, R12
1890+ B callbackasm1(SB)
1891+ MOVD $938, R12
1892+ B callbackasm1(SB)
1893+ MOVD $939, R12
1894+ B callbackasm1(SB)
1895+ MOVD $940, R12
1896+ B callbackasm1(SB)
1897+ MOVD $941, R12
1898+ B callbackasm1(SB)
1899+ MOVD $942, R12
1900+ B callbackasm1(SB)
1901+ MOVD $943, R12
1902+ B callbackasm1(SB)
1903+ MOVD $944, R12
1904+ B callbackasm1(SB)
1905+ MOVD $945, R12
1906+ B callbackasm1(SB)
1907+ MOVD $946, R12
1908+ B callbackasm1(SB)
1909+ MOVD $947, R12
1910+ B callbackasm1(SB)
1911+ MOVD $948, R12
1912+ B callbackasm1(SB)
1913+ MOVD $949, R12
1914+ B callbackasm1(SB)
1915+ MOVD $950, R12
1916+ B callbackasm1(SB)
1917+ MOVD $951, R12
1918+ B callbackasm1(SB)
1919+ MOVD $952, R12
1920+ B callbackasm1(SB)
1921+ MOVD $953, R12
1922+ B callbackasm1(SB)
1923+ MOVD $954, R12
1924+ B callbackasm1(SB)
1925+ MOVD $955, R12
1926+ B callbackasm1(SB)
1927+ MOVD $956, R12
1928+ B callbackasm1(SB)
1929+ MOVD $957, R12
1930+ B callbackasm1(SB)
1931+ MOVD $958, R12
1932+ B callbackasm1(SB)
1933+ MOVD $959, R12
1934+ B callbackasm1(SB)
1935+ MOVD $960, R12
1936+ B callbackasm1(SB)
1937+ MOVD $961, R12
1938+ B callbackasm1(SB)
1939+ MOVD $962, R12
1940+ B callbackasm1(SB)
1941+ MOVD $963, R12
1942+ B callbackasm1(SB)
1943+ MOVD $964, R12
1944+ B callbackasm1(SB)
1945+ MOVD $965, R12
1946+ B callbackasm1(SB)
1947+ MOVD $966, R12
1948+ B callbackasm1(SB)
1949+ MOVD $967, R12
1950+ B callbackasm1(SB)
1951+ MOVD $968, R12
1952+ B callbackasm1(SB)
1953+ MOVD $969, R12
1954+ B callbackasm1(SB)
1955+ MOVD $970, R12
1956+ B callbackasm1(SB)
1957+ MOVD $971, R12
1958+ B callbackasm1(SB)
1959+ MOVD $972, R12
1960+ B callbackasm1(SB)
1961+ MOVD $973, R12
1962+ B callbackasm1(SB)
1963+ MOVD $974, R12
1964+ B callbackasm1(SB)
1965+ MOVD $975, R12
1966+ B callbackasm1(SB)
1967+ MOVD $976, R12
1968+ B callbackasm1(SB)
1969+ MOVD $977, R12
1970+ B callbackasm1(SB)
1971+ MOVD $978, R12
1972+ B callbackasm1(SB)
1973+ MOVD $979, R12
1974+ B callbackasm1(SB)
1975+ MOVD $980, R12
1976+ B callbackasm1(SB)
1977+ MOVD $981, R12
1978+ B callbackasm1(SB)
1979+ MOVD $982, R12
1980+ B callbackasm1(SB)
1981+ MOVD $983, R12
1982+ B callbackasm1(SB)
1983+ MOVD $984, R12
1984+ B callbackasm1(SB)
1985+ MOVD $985, R12
1986+ B callbackasm1(SB)
1987+ MOVD $986, R12
1988+ B callbackasm1(SB)
1989+ MOVD $987, R12
1990+ B callbackasm1(SB)
1991+ MOVD $988, R12
1992+ B callbackasm1(SB)
1993+ MOVD $989, R12
1994+ B callbackasm1(SB)
1995+ MOVD $990, R12
1996+ B callbackasm1(SB)
1997+ MOVD $991, R12
1998+ B callbackasm1(SB)
1999+ MOVD $992, R12
2000+ B callbackasm1(SB)
2001+ MOVD $993, R12
2002+ B callbackasm1(SB)
2003+ MOVD $994, R12
2004+ B callbackasm1(SB)
2005+ MOVD $995, R12
2006+ B callbackasm1(SB)
2007+ MOVD $996, R12
2008+ B callbackasm1(SB)
2009+ MOVD $997, R12
2010+ B callbackasm1(SB)
2011+ MOVD $998, R12
2012+ B callbackasm1(SB)
2013+ MOVD $999, R12
2014+ B callbackasm1(SB)
2015+ MOVD $1000, R12
2016+ B callbackasm1(SB)
2017+ MOVD $1001, R12
2018+ B callbackasm1(SB)
2019+ MOVD $1002, R12
2020+ B callbackasm1(SB)
2021+ MOVD $1003, R12
2022+ B callbackasm1(SB)
2023+ MOVD $1004, R12
2024+ B callbackasm1(SB)
2025+ MOVD $1005, R12
2026+ B callbackasm1(SB)
2027+ MOVD $1006, R12
2028+ B callbackasm1(SB)
2029+ MOVD $1007, R12
2030+ B callbackasm1(SB)
2031+ MOVD $1008, R12
2032+ B callbackasm1(SB)
2033+ MOVD $1009, R12
2034+ B callbackasm1(SB)
2035+ MOVD $1010, R12
2036+ B callbackasm1(SB)
2037+ MOVD $1011, R12
2038+ B callbackasm1(SB)
2039+ MOVD $1012, R12
2040+ B callbackasm1(SB)
2041+ MOVD $1013, R12
2042+ B callbackasm1(SB)
2043+ MOVD $1014, R12
2044+ B callbackasm1(SB)
2045+ MOVD $1015, R12
2046+ B callbackasm1(SB)
2047+ MOVD $1016, R12
2048+ B callbackasm1(SB)
2049+ MOVD $1017, R12
2050+ B callbackasm1(SB)
2051+ MOVD $1018, R12
2052+ B callbackasm1(SB)
2053+ MOVD $1019, R12
2054+ B callbackasm1(SB)
2055+ MOVD $1020, R12
2056+ B callbackasm1(SB)
2057+ MOVD $1021, R12
2058+ B callbackasm1(SB)
2059+ MOVD $1022, R12
2060+ B callbackasm1(SB)
2061+ MOVD $1023, R12
2062+ B callbackasm1(SB)
2063+ MOVD $1024, R12
2064+ B callbackasm1(SB)
2065+ MOVD $1025, R12
2066+ B callbackasm1(SB)
2067+ MOVD $1026, R12
2068+ B callbackasm1(SB)
2069+ MOVD $1027, R12
2070+ B callbackasm1(SB)
2071+ MOVD $1028, R12
2072+ B callbackasm1(SB)
2073+ MOVD $1029, R12
2074+ B callbackasm1(SB)
2075+ MOVD $1030, R12
2076+ B callbackasm1(SB)
2077+ MOVD $1031, R12
2078+ B callbackasm1(SB)
2079+ MOVD $1032, R12
2080+ B callbackasm1(SB)
2081+ MOVD $1033, R12
2082+ B callbackasm1(SB)
2083+ MOVD $1034, R12
2084+ B callbackasm1(SB)
2085+ MOVD $1035, R12
2086+ B callbackasm1(SB)
2087+ MOVD $1036, R12
2088+ B callbackasm1(SB)
2089+ MOVD $1037, R12
2090+ B callbackasm1(SB)
2091+ MOVD $1038, R12
2092+ B callbackasm1(SB)
2093+ MOVD $1039, R12
2094+ B callbackasm1(SB)
2095+ MOVD $1040, R12
2096+ B callbackasm1(SB)
2097+ MOVD $1041, R12
2098+ B callbackasm1(SB)
2099+ MOVD $1042, R12
2100+ B callbackasm1(SB)
2101+ MOVD $1043, R12
2102+ B callbackasm1(SB)
2103+ MOVD $1044, R12
2104+ B callbackasm1(SB)
2105+ MOVD $1045, R12
2106+ B callbackasm1(SB)
2107+ MOVD $1046, R12
2108+ B callbackasm1(SB)
2109+ MOVD $1047, R12
2110+ B callbackasm1(SB)
2111+ MOVD $1048, R12
2112+ B callbackasm1(SB)
2113+ MOVD $1049, R12
2114+ B callbackasm1(SB)
2115+ MOVD $1050, R12
2116+ B callbackasm1(SB)
2117+ MOVD $1051, R12
2118+ B callbackasm1(SB)
2119+ MOVD $1052, R12
2120+ B callbackasm1(SB)
2121+ MOVD $1053, R12
2122+ B callbackasm1(SB)
2123+ MOVD $1054, R12
2124+ B callbackasm1(SB)
2125+ MOVD $1055, R12
2126+ B callbackasm1(SB)
2127+ MOVD $1056, R12
2128+ B callbackasm1(SB)
2129+ MOVD $1057, R12
2130+ B callbackasm1(SB)
2131+ MOVD $1058, R12
2132+ B callbackasm1(SB)
2133+ MOVD $1059, R12
2134+ B callbackasm1(SB)
2135+ MOVD $1060, R12
2136+ B callbackasm1(SB)
2137+ MOVD $1061, R12
2138+ B callbackasm1(SB)
2139+ MOVD $1062, R12
2140+ B callbackasm1(SB)
2141+ MOVD $1063, R12
2142+ B callbackasm1(SB)
2143+ MOVD $1064, R12
2144+ B callbackasm1(SB)
2145+ MOVD $1065, R12
2146+ B callbackasm1(SB)
2147+ MOVD $1066, R12
2148+ B callbackasm1(SB)
2149+ MOVD $1067, R12
2150+ B callbackasm1(SB)
2151+ MOVD $1068, R12
2152+ B callbackasm1(SB)
2153+ MOVD $1069, R12
2154+ B callbackasm1(SB)
2155+ MOVD $1070, R12
2156+ B callbackasm1(SB)
2157+ MOVD $1071, R12
2158+ B callbackasm1(SB)
2159+ MOVD $1072, R12
2160+ B callbackasm1(SB)
2161+ MOVD $1073, R12
2162+ B callbackasm1(SB)
2163+ MOVD $1074, R12
2164+ B callbackasm1(SB)
2165+ MOVD $1075, R12
2166+ B callbackasm1(SB)
2167+ MOVD $1076, R12
2168+ B callbackasm1(SB)
2169+ MOVD $1077, R12
2170+ B callbackasm1(SB)
2171+ MOVD $1078, R12
2172+ B callbackasm1(SB)
2173+ MOVD $1079, R12
2174+ B callbackasm1(SB)
2175+ MOVD $1080, R12
2176+ B callbackasm1(SB)
2177+ MOVD $1081, R12
2178+ B callbackasm1(SB)
2179+ MOVD $1082, R12
2180+ B callbackasm1(SB)
2181+ MOVD $1083, R12
2182+ B callbackasm1(SB)
2183+ MOVD $1084, R12
2184+ B callbackasm1(SB)
2185+ MOVD $1085, R12
2186+ B callbackasm1(SB)
2187+ MOVD $1086, R12
2188+ B callbackasm1(SB)
2189+ MOVD $1087, R12
2190+ B callbackasm1(SB)
2191+ MOVD $1088, R12
2192+ B callbackasm1(SB)
2193+ MOVD $1089, R12
2194+ B callbackasm1(SB)
2195+ MOVD $1090, R12
2196+ B callbackasm1(SB)
2197+ MOVD $1091, R12
2198+ B callbackasm1(SB)
2199+ MOVD $1092, R12
2200+ B callbackasm1(SB)
2201+ MOVD $1093, R12
2202+ B callbackasm1(SB)
2203+ MOVD $1094, R12
2204+ B callbackasm1(SB)
2205+ MOVD $1095, R12
2206+ B callbackasm1(SB)
2207+ MOVD $1096, R12
2208+ B callbackasm1(SB)
2209+ MOVD $1097, R12
2210+ B callbackasm1(SB)
2211+ MOVD $1098, R12
2212+ B callbackasm1(SB)
2213+ MOVD $1099, R12
2214+ B callbackasm1(SB)
2215+ MOVD $1100, R12
2216+ B callbackasm1(SB)
2217+ MOVD $1101, R12
2218+ B callbackasm1(SB)
2219+ MOVD $1102, R12
2220+ B callbackasm1(SB)
2221+ MOVD $1103, R12
2222+ B callbackasm1(SB)
2223+ MOVD $1104, R12
2224+ B callbackasm1(SB)
2225+ MOVD $1105, R12
2226+ B callbackasm1(SB)
2227+ MOVD $1106, R12
2228+ B callbackasm1(SB)
2229+ MOVD $1107, R12
2230+ B callbackasm1(SB)
2231+ MOVD $1108, R12
2232+ B callbackasm1(SB)
2233+ MOVD $1109, R12
2234+ B callbackasm1(SB)
2235+ MOVD $1110, R12
2236+ B callbackasm1(SB)
2237+ MOVD $1111, R12
2238+ B callbackasm1(SB)
2239+ MOVD $1112, R12
2240+ B callbackasm1(SB)
2241+ MOVD $1113, R12
2242+ B callbackasm1(SB)
2243+ MOVD $1114, R12
2244+ B callbackasm1(SB)
2245+ MOVD $1115, R12
2246+ B callbackasm1(SB)
2247+ MOVD $1116, R12
2248+ B callbackasm1(SB)
2249+ MOVD $1117, R12
2250+ B callbackasm1(SB)
2251+ MOVD $1118, R12
2252+ B callbackasm1(SB)
2253+ MOVD $1119, R12
2254+ B callbackasm1(SB)
2255+ MOVD $1120, R12
2256+ B callbackasm1(SB)
2257+ MOVD $1121, R12
2258+ B callbackasm1(SB)
2259+ MOVD $1122, R12
2260+ B callbackasm1(SB)
2261+ MOVD $1123, R12
2262+ B callbackasm1(SB)
2263+ MOVD $1124, R12
2264+ B callbackasm1(SB)
2265+ MOVD $1125, R12
2266+ B callbackasm1(SB)
2267+ MOVD $1126, R12
2268+ B callbackasm1(SB)
2269+ MOVD $1127, R12
2270+ B callbackasm1(SB)
2271+ MOVD $1128, R12
2272+ B callbackasm1(SB)
2273+ MOVD $1129, R12
2274+ B callbackasm1(SB)
2275+ MOVD $1130, R12
2276+ B callbackasm1(SB)
2277+ MOVD $1131, R12
2278+ B callbackasm1(SB)
2279+ MOVD $1132, R12
2280+ B callbackasm1(SB)
2281+ MOVD $1133, R12
2282+ B callbackasm1(SB)
2283+ MOVD $1134, R12
2284+ B callbackasm1(SB)
2285+ MOVD $1135, R12
2286+ B callbackasm1(SB)
2287+ MOVD $1136, R12
2288+ B callbackasm1(SB)
2289+ MOVD $1137, R12
2290+ B callbackasm1(SB)
2291+ MOVD $1138, R12
2292+ B callbackasm1(SB)
2293+ MOVD $1139, R12
2294+ B callbackasm1(SB)
2295+ MOVD $1140, R12
2296+ B callbackasm1(SB)
2297+ MOVD $1141, R12
2298+ B callbackasm1(SB)
2299+ MOVD $1142, R12
2300+ B callbackasm1(SB)
2301+ MOVD $1143, R12
2302+ B callbackasm1(SB)
2303+ MOVD $1144, R12
2304+ B callbackasm1(SB)
2305+ MOVD $1145, R12
2306+ B callbackasm1(SB)
2307+ MOVD $1146, R12
2308+ B callbackasm1(SB)
2309+ MOVD $1147, R12
2310+ B callbackasm1(SB)
2311+ MOVD $1148, R12
2312+ B callbackasm1(SB)
2313+ MOVD $1149, R12
2314+ B callbackasm1(SB)
2315+ MOVD $1150, R12
2316+ B callbackasm1(SB)
2317+ MOVD $1151, R12
2318+ B callbackasm1(SB)
2319+ MOVD $1152, R12
2320+ B callbackasm1(SB)
2321+ MOVD $1153, R12
2322+ B callbackasm1(SB)
2323+ MOVD $1154, R12
2324+ B callbackasm1(SB)
2325+ MOVD $1155, R12
2326+ B callbackasm1(SB)
2327+ MOVD $1156, R12
2328+ B callbackasm1(SB)
2329+ MOVD $1157, R12
2330+ B callbackasm1(SB)
2331+ MOVD $1158, R12
2332+ B callbackasm1(SB)
2333+ MOVD $1159, R12
2334+ B callbackasm1(SB)
2335+ MOVD $1160, R12
2336+ B callbackasm1(SB)
2337+ MOVD $1161, R12
2338+ B callbackasm1(SB)
2339+ MOVD $1162, R12
2340+ B callbackasm1(SB)
2341+ MOVD $1163, R12
2342+ B callbackasm1(SB)
2343+ MOVD $1164, R12
2344+ B callbackasm1(SB)
2345+ MOVD $1165, R12
2346+ B callbackasm1(SB)
2347+ MOVD $1166, R12
2348+ B callbackasm1(SB)
2349+ MOVD $1167, R12
2350+ B callbackasm1(SB)
2351+ MOVD $1168, R12
2352+ B callbackasm1(SB)
2353+ MOVD $1169, R12
2354+ B callbackasm1(SB)
2355+ MOVD $1170, R12
2356+ B callbackasm1(SB)
2357+ MOVD $1171, R12
2358+ B callbackasm1(SB)
2359+ MOVD $1172, R12
2360+ B callbackasm1(SB)
2361+ MOVD $1173, R12
2362+ B callbackasm1(SB)
2363+ MOVD $1174, R12
2364+ B callbackasm1(SB)
2365+ MOVD $1175, R12
2366+ B callbackasm1(SB)
2367+ MOVD $1176, R12
2368+ B callbackasm1(SB)
2369+ MOVD $1177, R12
2370+ B callbackasm1(SB)
2371+ MOVD $1178, R12
2372+ B callbackasm1(SB)
2373+ MOVD $1179, R12
2374+ B callbackasm1(SB)
2375+ MOVD $1180, R12
2376+ B callbackasm1(SB)
2377+ MOVD $1181, R12
2378+ B callbackasm1(SB)
2379+ MOVD $1182, R12
2380+ B callbackasm1(SB)
2381+ MOVD $1183, R12
2382+ B callbackasm1(SB)
2383+ MOVD $1184, R12
2384+ B callbackasm1(SB)
2385+ MOVD $1185, R12
2386+ B callbackasm1(SB)
2387+ MOVD $1186, R12
2388+ B callbackasm1(SB)
2389+ MOVD $1187, R12
2390+ B callbackasm1(SB)
2391+ MOVD $1188, R12
2392+ B callbackasm1(SB)
2393+ MOVD $1189, R12
2394+ B callbackasm1(SB)
2395+ MOVD $1190, R12
2396+ B callbackasm1(SB)
2397+ MOVD $1191, R12
2398+ B callbackasm1(SB)
2399+ MOVD $1192, R12
2400+ B callbackasm1(SB)
2401+ MOVD $1193, R12
2402+ B callbackasm1(SB)
2403+ MOVD $1194, R12
2404+ B callbackasm1(SB)
2405+ MOVD $1195, R12
2406+ B callbackasm1(SB)
2407+ MOVD $1196, R12
2408+ B callbackasm1(SB)
2409+ MOVD $1197, R12
2410+ B callbackasm1(SB)
2411+ MOVD $1198, R12
2412+ B callbackasm1(SB)
2413+ MOVD $1199, R12
2414+ B callbackasm1(SB)
2415+ MOVD $1200, R12
2416+ B callbackasm1(SB)
2417+ MOVD $1201, R12
2418+ B callbackasm1(SB)
2419+ MOVD $1202, R12
2420+ B callbackasm1(SB)
2421+ MOVD $1203, R12
2422+ B callbackasm1(SB)
2423+ MOVD $1204, R12
2424+ B callbackasm1(SB)
2425+ MOVD $1205, R12
2426+ B callbackasm1(SB)
2427+ MOVD $1206, R12
2428+ B callbackasm1(SB)
2429+ MOVD $1207, R12
2430+ B callbackasm1(SB)
2431+ MOVD $1208, R12
2432+ B callbackasm1(SB)
2433+ MOVD $1209, R12
2434+ B callbackasm1(SB)
2435+ MOVD $1210, R12
2436+ B callbackasm1(SB)
2437+ MOVD $1211, R12
2438+ B callbackasm1(SB)
2439+ MOVD $1212, R12
2440+ B callbackasm1(SB)
2441+ MOVD $1213, R12
2442+ B callbackasm1(SB)
2443+ MOVD $1214, R12
2444+ B callbackasm1(SB)
2445+ MOVD $1215, R12
2446+ B callbackasm1(SB)
2447+ MOVD $1216, R12
2448+ B callbackasm1(SB)
2449+ MOVD $1217, R12
2450+ B callbackasm1(SB)
2451+ MOVD $1218, R12
2452+ B callbackasm1(SB)
2453+ MOVD $1219, R12
2454+ B callbackasm1(SB)
2455+ MOVD $1220, R12
2456+ B callbackasm1(SB)
2457+ MOVD $1221, R12
2458+ B callbackasm1(SB)
2459+ MOVD $1222, R12
2460+ B callbackasm1(SB)
2461+ MOVD $1223, R12
2462+ B callbackasm1(SB)
2463+ MOVD $1224, R12
2464+ B callbackasm1(SB)
2465+ MOVD $1225, R12
2466+ B callbackasm1(SB)
2467+ MOVD $1226, R12
2468+ B callbackasm1(SB)
2469+ MOVD $1227, R12
2470+ B callbackasm1(SB)
2471+ MOVD $1228, R12
2472+ B callbackasm1(SB)
2473+ MOVD $1229, R12
2474+ B callbackasm1(SB)
2475+ MOVD $1230, R12
2476+ B callbackasm1(SB)
2477+ MOVD $1231, R12
2478+ B callbackasm1(SB)
2479+ MOVD $1232, R12
2480+ B callbackasm1(SB)
2481+ MOVD $1233, R12
2482+ B callbackasm1(SB)
2483+ MOVD $1234, R12
2484+ B callbackasm1(SB)
2485+ MOVD $1235, R12
2486+ B callbackasm1(SB)
2487+ MOVD $1236, R12
2488+ B callbackasm1(SB)
2489+ MOVD $1237, R12
2490+ B callbackasm1(SB)
2491+ MOVD $1238, R12
2492+ B callbackasm1(SB)
2493+ MOVD $1239, R12
2494+ B callbackasm1(SB)
2495+ MOVD $1240, R12
2496+ B callbackasm1(SB)
2497+ MOVD $1241, R12
2498+ B callbackasm1(SB)
2499+ MOVD $1242, R12
2500+ B callbackasm1(SB)
2501+ MOVD $1243, R12
2502+ B callbackasm1(SB)
2503+ MOVD $1244, R12
2504+ B callbackasm1(SB)
2505+ MOVD $1245, R12
2506+ B callbackasm1(SB)
2507+ MOVD $1246, R12
2508+ B callbackasm1(SB)
2509+ MOVD $1247, R12
2510+ B callbackasm1(SB)
2511+ MOVD $1248, R12
2512+ B callbackasm1(SB)
2513+ MOVD $1249, R12
2514+ B callbackasm1(SB)
2515+ MOVD $1250, R12
2516+ B callbackasm1(SB)
2517+ MOVD $1251, R12
2518+ B callbackasm1(SB)
2519+ MOVD $1252, R12
2520+ B callbackasm1(SB)
2521+ MOVD $1253, R12
2522+ B callbackasm1(SB)
2523+ MOVD $1254, R12
2524+ B callbackasm1(SB)
2525+ MOVD $1255, R12
2526+ B callbackasm1(SB)
2527+ MOVD $1256, R12
2528+ B callbackasm1(SB)
2529+ MOVD $1257, R12
2530+ B callbackasm1(SB)
2531+ MOVD $1258, R12
2532+ B callbackasm1(SB)
2533+ MOVD $1259, R12
2534+ B callbackasm1(SB)
2535+ MOVD $1260, R12
2536+ B callbackasm1(SB)
2537+ MOVD $1261, R12
2538+ B callbackasm1(SB)
2539+ MOVD $1262, R12
2540+ B callbackasm1(SB)
2541+ MOVD $1263, R12
2542+ B callbackasm1(SB)
2543+ MOVD $1264, R12
2544+ B callbackasm1(SB)
2545+ MOVD $1265, R12
2546+ B callbackasm1(SB)
2547+ MOVD $1266, R12
2548+ B callbackasm1(SB)
2549+ MOVD $1267, R12
2550+ B callbackasm1(SB)
2551+ MOVD $1268, R12
2552+ B callbackasm1(SB)
2553+ MOVD $1269, R12
2554+ B callbackasm1(SB)
2555+ MOVD $1270, R12
2556+ B callbackasm1(SB)
2557+ MOVD $1271, R12
2558+ B callbackasm1(SB)
2559+ MOVD $1272, R12
2560+ B callbackasm1(SB)
2561+ MOVD $1273, R12
2562+ B callbackasm1(SB)
2563+ MOVD $1274, R12
2564+ B callbackasm1(SB)
2565+ MOVD $1275, R12
2566+ B callbackasm1(SB)
2567+ MOVD $1276, R12
2568+ B callbackasm1(SB)
2569+ MOVD $1277, R12
2570+ B callbackasm1(SB)
2571+ MOVD $1278, R12
2572+ B callbackasm1(SB)
2573+ MOVD $1279, R12
2574+ B callbackasm1(SB)
2575+ MOVD $1280, R12
2576+ B callbackasm1(SB)
2577+ MOVD $1281, R12
2578+ B callbackasm1(SB)
2579+ MOVD $1282, R12
2580+ B callbackasm1(SB)
2581+ MOVD $1283, R12
2582+ B callbackasm1(SB)
2583+ MOVD $1284, R12
2584+ B callbackasm1(SB)
2585+ MOVD $1285, R12
2586+ B callbackasm1(SB)
2587+ MOVD $1286, R12
2588+ B callbackasm1(SB)
2589+ MOVD $1287, R12
2590+ B callbackasm1(SB)
2591+ MOVD $1288, R12
2592+ B callbackasm1(SB)
2593+ MOVD $1289, R12
2594+ B callbackasm1(SB)
2595+ MOVD $1290, R12
2596+ B callbackasm1(SB)
2597+ MOVD $1291, R12
2598+ B callbackasm1(SB)
2599+ MOVD $1292, R12
2600+ B callbackasm1(SB)
2601+ MOVD $1293, R12
2602+ B callbackasm1(SB)
2603+ MOVD $1294, R12
2604+ B callbackasm1(SB)
2605+ MOVD $1295, R12
2606+ B callbackasm1(SB)
2607+ MOVD $1296, R12
2608+ B callbackasm1(SB)
2609+ MOVD $1297, R12
2610+ B callbackasm1(SB)
2611+ MOVD $1298, R12
2612+ B callbackasm1(SB)
2613+ MOVD $1299, R12
2614+ B callbackasm1(SB)
2615+ MOVD $1300, R12
2616+ B callbackasm1(SB)
2617+ MOVD $1301, R12
2618+ B callbackasm1(SB)
2619+ MOVD $1302, R12
2620+ B callbackasm1(SB)
2621+ MOVD $1303, R12
2622+ B callbackasm1(SB)
2623+ MOVD $1304, R12
2624+ B callbackasm1(SB)
2625+ MOVD $1305, R12
2626+ B callbackasm1(SB)
2627+ MOVD $1306, R12
2628+ B callbackasm1(SB)
2629+ MOVD $1307, R12
2630+ B callbackasm1(SB)
2631+ MOVD $1308, R12
2632+ B callbackasm1(SB)
2633+ MOVD $1309, R12
2634+ B callbackasm1(SB)
2635+ MOVD $1310, R12
2636+ B callbackasm1(SB)
2637+ MOVD $1311, R12
2638+ B callbackasm1(SB)
2639+ MOVD $1312, R12
2640+ B callbackasm1(SB)
2641+ MOVD $1313, R12
2642+ B callbackasm1(SB)
2643+ MOVD $1314, R12
2644+ B callbackasm1(SB)
2645+ MOVD $1315, R12
2646+ B callbackasm1(SB)
2647+ MOVD $1316, R12
2648+ B callbackasm1(SB)
2649+ MOVD $1317, R12
2650+ B callbackasm1(SB)
2651+ MOVD $1318, R12
2652+ B callbackasm1(SB)
2653+ MOVD $1319, R12
2654+ B callbackasm1(SB)
2655+ MOVD $1320, R12
2656+ B callbackasm1(SB)
2657+ MOVD $1321, R12
2658+ B callbackasm1(SB)
2659+ MOVD $1322, R12
2660+ B callbackasm1(SB)
2661+ MOVD $1323, R12
2662+ B callbackasm1(SB)
2663+ MOVD $1324, R12
2664+ B callbackasm1(SB)
2665+ MOVD $1325, R12
2666+ B callbackasm1(SB)
2667+ MOVD $1326, R12
2668+ B callbackasm1(SB)
2669+ MOVD $1327, R12
2670+ B callbackasm1(SB)
2671+ MOVD $1328, R12
2672+ B callbackasm1(SB)
2673+ MOVD $1329, R12
2674+ B callbackasm1(SB)
2675+ MOVD $1330, R12
2676+ B callbackasm1(SB)
2677+ MOVD $1331, R12
2678+ B callbackasm1(SB)
2679+ MOVD $1332, R12
2680+ B callbackasm1(SB)
2681+ MOVD $1333, R12
2682+ B callbackasm1(SB)
2683+ MOVD $1334, R12
2684+ B callbackasm1(SB)
2685+ MOVD $1335, R12
2686+ B callbackasm1(SB)
2687+ MOVD $1336, R12
2688+ B callbackasm1(SB)
2689+ MOVD $1337, R12
2690+ B callbackasm1(SB)
2691+ MOVD $1338, R12
2692+ B callbackasm1(SB)
2693+ MOVD $1339, R12
2694+ B callbackasm1(SB)
2695+ MOVD $1340, R12
2696+ B callbackasm1(SB)
2697+ MOVD $1341, R12
2698+ B callbackasm1(SB)
2699+ MOVD $1342, R12
2700+ B callbackasm1(SB)
2701+ MOVD $1343, R12
2702+ B callbackasm1(SB)
2703+ MOVD $1344, R12
2704+ B callbackasm1(SB)
2705+ MOVD $1345, R12
2706+ B callbackasm1(SB)
2707+ MOVD $1346, R12
2708+ B callbackasm1(SB)
2709+ MOVD $1347, R12
2710+ B callbackasm1(SB)
2711+ MOVD $1348, R12
2712+ B callbackasm1(SB)
2713+ MOVD $1349, R12
2714+ B callbackasm1(SB)
2715+ MOVD $1350, R12
2716+ B callbackasm1(SB)
2717+ MOVD $1351, R12
2718+ B callbackasm1(SB)
2719+ MOVD $1352, R12
2720+ B callbackasm1(SB)
2721+ MOVD $1353, R12
2722+ B callbackasm1(SB)
2723+ MOVD $1354, R12
2724+ B callbackasm1(SB)
2725+ MOVD $1355, R12
2726+ B callbackasm1(SB)
2727+ MOVD $1356, R12
2728+ B callbackasm1(SB)
2729+ MOVD $1357, R12
2730+ B callbackasm1(SB)
2731+ MOVD $1358, R12
2732+ B callbackasm1(SB)
2733+ MOVD $1359, R12
2734+ B callbackasm1(SB)
2735+ MOVD $1360, R12
2736+ B callbackasm1(SB)
2737+ MOVD $1361, R12
2738+ B callbackasm1(SB)
2739+ MOVD $1362, R12
2740+ B callbackasm1(SB)
2741+ MOVD $1363, R12
2742+ B callbackasm1(SB)
2743+ MOVD $1364, R12
2744+ B callbackasm1(SB)
2745+ MOVD $1365, R12
2746+ B callbackasm1(SB)
2747+ MOVD $1366, R12
2748+ B callbackasm1(SB)
2749+ MOVD $1367, R12
2750+ B callbackasm1(SB)
2751+ MOVD $1368, R12
2752+ B callbackasm1(SB)
2753+ MOVD $1369, R12
2754+ B callbackasm1(SB)
2755+ MOVD $1370, R12
2756+ B callbackasm1(SB)
2757+ MOVD $1371, R12
2758+ B callbackasm1(SB)
2759+ MOVD $1372, R12
2760+ B callbackasm1(SB)
2761+ MOVD $1373, R12
2762+ B callbackasm1(SB)
2763+ MOVD $1374, R12
2764+ B callbackasm1(SB)
2765+ MOVD $1375, R12
2766+ B callbackasm1(SB)
2767+ MOVD $1376, R12
2768+ B callbackasm1(SB)
2769+ MOVD $1377, R12
2770+ B callbackasm1(SB)
2771+ MOVD $1378, R12
2772+ B callbackasm1(SB)
2773+ MOVD $1379, R12
2774+ B callbackasm1(SB)
2775+ MOVD $1380, R12
2776+ B callbackasm1(SB)
2777+ MOVD $1381, R12
2778+ B callbackasm1(SB)
2779+ MOVD $1382, R12
2780+ B callbackasm1(SB)
2781+ MOVD $1383, R12
2782+ B callbackasm1(SB)
2783+ MOVD $1384, R12
2784+ B callbackasm1(SB)
2785+ MOVD $1385, R12
2786+ B callbackasm1(SB)
2787+ MOVD $1386, R12
2788+ B callbackasm1(SB)
2789+ MOVD $1387, R12
2790+ B callbackasm1(SB)
2791+ MOVD $1388, R12
2792+ B callbackasm1(SB)
2793+ MOVD $1389, R12
2794+ B callbackasm1(SB)
2795+ MOVD $1390, R12
2796+ B callbackasm1(SB)
2797+ MOVD $1391, R12
2798+ B callbackasm1(SB)
2799+ MOVD $1392, R12
2800+ B callbackasm1(SB)
2801+ MOVD $1393, R12
2802+ B callbackasm1(SB)
2803+ MOVD $1394, R12
2804+ B callbackasm1(SB)
2805+ MOVD $1395, R12
2806+ B callbackasm1(SB)
2807+ MOVD $1396, R12
2808+ B callbackasm1(SB)
2809+ MOVD $1397, R12
2810+ B callbackasm1(SB)
2811+ MOVD $1398, R12
2812+ B callbackasm1(SB)
2813+ MOVD $1399, R12
2814+ B callbackasm1(SB)
2815+ MOVD $1400, R12
2816+ B callbackasm1(SB)
2817+ MOVD $1401, R12
2818+ B callbackasm1(SB)
2819+ MOVD $1402, R12
2820+ B callbackasm1(SB)
2821+ MOVD $1403, R12
2822+ B callbackasm1(SB)
2823+ MOVD $1404, R12
2824+ B callbackasm1(SB)
2825+ MOVD $1405, R12
2826+ B callbackasm1(SB)
2827+ MOVD $1406, R12
2828+ B callbackasm1(SB)
2829+ MOVD $1407, R12
2830+ B callbackasm1(SB)
2831+ MOVD $1408, R12
2832+ B callbackasm1(SB)
2833+ MOVD $1409, R12
2834+ B callbackasm1(SB)
2835+ MOVD $1410, R12
2836+ B callbackasm1(SB)
2837+ MOVD $1411, R12
2838+ B callbackasm1(SB)
2839+ MOVD $1412, R12
2840+ B callbackasm1(SB)
2841+ MOVD $1413, R12
2842+ B callbackasm1(SB)
2843+ MOVD $1414, R12
2844+ B callbackasm1(SB)
2845+ MOVD $1415, R12
2846+ B callbackasm1(SB)
2847+ MOVD $1416, R12
2848+ B callbackasm1(SB)
2849+ MOVD $1417, R12
2850+ B callbackasm1(SB)
2851+ MOVD $1418, R12
2852+ B callbackasm1(SB)
2853+ MOVD $1419, R12
2854+ B callbackasm1(SB)
2855+ MOVD $1420, R12
2856+ B callbackasm1(SB)
2857+ MOVD $1421, R12
2858+ B callbackasm1(SB)
2859+ MOVD $1422, R12
2860+ B callbackasm1(SB)
2861+ MOVD $1423, R12
2862+ B callbackasm1(SB)
2863+ MOVD $1424, R12
2864+ B callbackasm1(SB)
2865+ MOVD $1425, R12
2866+ B callbackasm1(SB)
2867+ MOVD $1426, R12
2868+ B callbackasm1(SB)
2869+ MOVD $1427, R12
2870+ B callbackasm1(SB)
2871+ MOVD $1428, R12
2872+ B callbackasm1(SB)
2873+ MOVD $1429, R12
2874+ B callbackasm1(SB)
2875+ MOVD $1430, R12
2876+ B callbackasm1(SB)
2877+ MOVD $1431, R12
2878+ B callbackasm1(SB)
2879+ MOVD $1432, R12
2880+ B callbackasm1(SB)
2881+ MOVD $1433, R12
2882+ B callbackasm1(SB)
2883+ MOVD $1434, R12
2884+ B callbackasm1(SB)
2885+ MOVD $1435, R12
2886+ B callbackasm1(SB)
2887+ MOVD $1436, R12
2888+ B callbackasm1(SB)
2889+ MOVD $1437, R12
2890+ B callbackasm1(SB)
2891+ MOVD $1438, R12
2892+ B callbackasm1(SB)
2893+ MOVD $1439, R12
2894+ B callbackasm1(SB)
2895+ MOVD $1440, R12
2896+ B callbackasm1(SB)
2897+ MOVD $1441, R12
2898+ B callbackasm1(SB)
2899+ MOVD $1442, R12
2900+ B callbackasm1(SB)
2901+ MOVD $1443, R12
2902+ B callbackasm1(SB)
2903+ MOVD $1444, R12
2904+ B callbackasm1(SB)
2905+ MOVD $1445, R12
2906+ B callbackasm1(SB)
2907+ MOVD $1446, R12
2908+ B callbackasm1(SB)
2909+ MOVD $1447, R12
2910+ B callbackasm1(SB)
2911+ MOVD $1448, R12
2912+ B callbackasm1(SB)
2913+ MOVD $1449, R12
2914+ B callbackasm1(SB)
2915+ MOVD $1450, R12
2916+ B callbackasm1(SB)
2917+ MOVD $1451, R12
2918+ B callbackasm1(SB)
2919+ MOVD $1452, R12
2920+ B callbackasm1(SB)
2921+ MOVD $1453, R12
2922+ B callbackasm1(SB)
2923+ MOVD $1454, R12
2924+ B callbackasm1(SB)
2925+ MOVD $1455, R12
2926+ B callbackasm1(SB)
2927+ MOVD $1456, R12
2928+ B callbackasm1(SB)
2929+ MOVD $1457, R12
2930+ B callbackasm1(SB)
2931+ MOVD $1458, R12
2932+ B callbackasm1(SB)
2933+ MOVD $1459, R12
2934+ B callbackasm1(SB)
2935+ MOVD $1460, R12
2936+ B callbackasm1(SB)
2937+ MOVD $1461, R12
2938+ B callbackasm1(SB)
2939+ MOVD $1462, R12
2940+ B callbackasm1(SB)
2941+ MOVD $1463, R12
2942+ B callbackasm1(SB)
2943+ MOVD $1464, R12
2944+ B callbackasm1(SB)
2945+ MOVD $1465, R12
2946+ B callbackasm1(SB)
2947+ MOVD $1466, R12
2948+ B callbackasm1(SB)
2949+ MOVD $1467, R12
2950+ B callbackasm1(SB)
2951+ MOVD $1468, R12
2952+ B callbackasm1(SB)
2953+ MOVD $1469, R12
2954+ B callbackasm1(SB)
2955+ MOVD $1470, R12
2956+ B callbackasm1(SB)
2957+ MOVD $1471, R12
2958+ B callbackasm1(SB)
2959+ MOVD $1472, R12
2960+ B callbackasm1(SB)
2961+ MOVD $1473, R12
2962+ B callbackasm1(SB)
2963+ MOVD $1474, R12
2964+ B callbackasm1(SB)
2965+ MOVD $1475, R12
2966+ B callbackasm1(SB)
2967+ MOVD $1476, R12
2968+ B callbackasm1(SB)
2969+ MOVD $1477, R12
2970+ B callbackasm1(SB)
2971+ MOVD $1478, R12
2972+ B callbackasm1(SB)
2973+ MOVD $1479, R12
2974+ B callbackasm1(SB)
2975+ MOVD $1480, R12
2976+ B callbackasm1(SB)
2977+ MOVD $1481, R12
2978+ B callbackasm1(SB)
2979+ MOVD $1482, R12
2980+ B callbackasm1(SB)
2981+ MOVD $1483, R12
2982+ B callbackasm1(SB)
2983+ MOVD $1484, R12
2984+ B callbackasm1(SB)
2985+ MOVD $1485, R12
2986+ B callbackasm1(SB)
2987+ MOVD $1486, R12
2988+ B callbackasm1(SB)
2989+ MOVD $1487, R12
2990+ B callbackasm1(SB)
2991+ MOVD $1488, R12
2992+ B callbackasm1(SB)
2993+ MOVD $1489, R12
2994+ B callbackasm1(SB)
2995+ MOVD $1490, R12
2996+ B callbackasm1(SB)
2997+ MOVD $1491, R12
2998+ B callbackasm1(SB)
2999+ MOVD $1492, R12
3000+ B callbackasm1(SB)
3001+ MOVD $1493, R12
3002+ B callbackasm1(SB)
3003+ MOVD $1494, R12
3004+ B callbackasm1(SB)
3005+ MOVD $1495, R12
3006+ B callbackasm1(SB)
3007+ MOVD $1496, R12
3008+ B callbackasm1(SB)
3009+ MOVD $1497, R12
3010+ B callbackasm1(SB)
3011+ MOVD $1498, R12
3012+ B callbackasm1(SB)
3013+ MOVD $1499, R12
3014+ B callbackasm1(SB)
3015+ MOVD $1500, R12
3016+ B callbackasm1(SB)
3017+ MOVD $1501, R12
3018+ B callbackasm1(SB)
3019+ MOVD $1502, R12
3020+ B callbackasm1(SB)
3021+ MOVD $1503, R12
3022+ B callbackasm1(SB)
3023+ MOVD $1504, R12
3024+ B callbackasm1(SB)
3025+ MOVD $1505, R12
3026+ B callbackasm1(SB)
3027+ MOVD $1506, R12
3028+ B callbackasm1(SB)
3029+ MOVD $1507, R12
3030+ B callbackasm1(SB)
3031+ MOVD $1508, R12
3032+ B callbackasm1(SB)
3033+ MOVD $1509, R12
3034+ B callbackasm1(SB)
3035+ MOVD $1510, R12
3036+ B callbackasm1(SB)
3037+ MOVD $1511, R12
3038+ B callbackasm1(SB)
3039+ MOVD $1512, R12
3040+ B callbackasm1(SB)
3041+ MOVD $1513, R12
3042+ B callbackasm1(SB)
3043+ MOVD $1514, R12
3044+ B callbackasm1(SB)
3045+ MOVD $1515, R12
3046+ B callbackasm1(SB)
3047+ MOVD $1516, R12
3048+ B callbackasm1(SB)
3049+ MOVD $1517, R12
3050+ B callbackasm1(SB)
3051+ MOVD $1518, R12
3052+ B callbackasm1(SB)
3053+ MOVD $1519, R12
3054+ B callbackasm1(SB)
3055+ MOVD $1520, R12
3056+ B callbackasm1(SB)
3057+ MOVD $1521, R12
3058+ B callbackasm1(SB)
3059+ MOVD $1522, R12
3060+ B callbackasm1(SB)
3061+ MOVD $1523, R12
3062+ B callbackasm1(SB)
3063+ MOVD $1524, R12
3064+ B callbackasm1(SB)
3065+ MOVD $1525, R12
3066+ B callbackasm1(SB)
3067+ MOVD $1526, R12
3068+ B callbackasm1(SB)
3069+ MOVD $1527, R12
3070+ B callbackasm1(SB)
3071+ MOVD $1528, R12
3072+ B callbackasm1(SB)
3073+ MOVD $1529, R12
3074+ B callbackasm1(SB)
3075+ MOVD $1530, R12
3076+ B callbackasm1(SB)
3077+ MOVD $1531, R12
3078+ B callbackasm1(SB)
3079+ MOVD $1532, R12
3080+ B callbackasm1(SB)
3081+ MOVD $1533, R12
3082+ B callbackasm1(SB)
3083+ MOVD $1534, R12
3084+ B callbackasm1(SB)
3085+ MOVD $1535, R12
3086+ B callbackasm1(SB)
3087+ MOVD $1536, R12
3088+ B callbackasm1(SB)
3089+ MOVD $1537, R12
3090+ B callbackasm1(SB)
3091+ MOVD $1538, R12
3092+ B callbackasm1(SB)
3093+ MOVD $1539, R12
3094+ B callbackasm1(SB)
3095+ MOVD $1540, R12
3096+ B callbackasm1(SB)
3097+ MOVD $1541, R12
3098+ B callbackasm1(SB)
3099+ MOVD $1542, R12
3100+ B callbackasm1(SB)
3101+ MOVD $1543, R12
3102+ B callbackasm1(SB)
3103+ MOVD $1544, R12
3104+ B callbackasm1(SB)
3105+ MOVD $1545, R12
3106+ B callbackasm1(SB)
3107+ MOVD $1546, R12
3108+ B callbackasm1(SB)
3109+ MOVD $1547, R12
3110+ B callbackasm1(SB)
3111+ MOVD $1548, R12
3112+ B callbackasm1(SB)
3113+ MOVD $1549, R12
3114+ B callbackasm1(SB)
3115+ MOVD $1550, R12
3116+ B callbackasm1(SB)
3117+ MOVD $1551, R12
3118+ B callbackasm1(SB)
3119+ MOVD $1552, R12
3120+ B callbackasm1(SB)
3121+ MOVD $1553, R12
3122+ B callbackasm1(SB)
3123+ MOVD $1554, R12
3124+ B callbackasm1(SB)
3125+ MOVD $1555, R12
3126+ B callbackasm1(SB)
3127+ MOVD $1556, R12
3128+ B callbackasm1(SB)
3129+ MOVD $1557, R12
3130+ B callbackasm1(SB)
3131+ MOVD $1558, R12
3132+ B callbackasm1(SB)
3133+ MOVD $1559, R12
3134+ B callbackasm1(SB)
3135+ MOVD $1560, R12
3136+ B callbackasm1(SB)
3137+ MOVD $1561, R12
3138+ B callbackasm1(SB)
3139+ MOVD $1562, R12
3140+ B callbackasm1(SB)
3141+ MOVD $1563, R12
3142+ B callbackasm1(SB)
3143+ MOVD $1564, R12
3144+ B callbackasm1(SB)
3145+ MOVD $1565, R12
3146+ B callbackasm1(SB)
3147+ MOVD $1566, R12
3148+ B callbackasm1(SB)
3149+ MOVD $1567, R12
3150+ B callbackasm1(SB)
3151+ MOVD $1568, R12
3152+ B callbackasm1(SB)
3153+ MOVD $1569, R12
3154+ B callbackasm1(SB)
3155+ MOVD $1570, R12
3156+ B callbackasm1(SB)
3157+ MOVD $1571, R12
3158+ B callbackasm1(SB)
3159+ MOVD $1572, R12
3160+ B callbackasm1(SB)
3161+ MOVD $1573, R12
3162+ B callbackasm1(SB)
3163+ MOVD $1574, R12
3164+ B callbackasm1(SB)
3165+ MOVD $1575, R12
3166+ B callbackasm1(SB)
3167+ MOVD $1576, R12
3168+ B callbackasm1(SB)
3169+ MOVD $1577, R12
3170+ B callbackasm1(SB)
3171+ MOVD $1578, R12
3172+ B callbackasm1(SB)
3173+ MOVD $1579, R12
3174+ B callbackasm1(SB)
3175+ MOVD $1580, R12
3176+ B callbackasm1(SB)
3177+ MOVD $1581, R12
3178+ B callbackasm1(SB)
3179+ MOVD $1582, R12
3180+ B callbackasm1(SB)
3181+ MOVD $1583, R12
3182+ B callbackasm1(SB)
3183+ MOVD $1584, R12
3184+ B callbackasm1(SB)
3185+ MOVD $1585, R12
3186+ B callbackasm1(SB)
3187+ MOVD $1586, R12
3188+ B callbackasm1(SB)
3189+ MOVD $1587, R12
3190+ B callbackasm1(SB)
3191+ MOVD $1588, R12
3192+ B callbackasm1(SB)
3193+ MOVD $1589, R12
3194+ B callbackasm1(SB)
3195+ MOVD $1590, R12
3196+ B callbackasm1(SB)
3197+ MOVD $1591, R12
3198+ B callbackasm1(SB)
3199+ MOVD $1592, R12
3200+ B callbackasm1(SB)
3201+ MOVD $1593, R12
3202+ B callbackasm1(SB)
3203+ MOVD $1594, R12
3204+ B callbackasm1(SB)
3205+ MOVD $1595, R12
3206+ B callbackasm1(SB)
3207+ MOVD $1596, R12
3208+ B callbackasm1(SB)
3209+ MOVD $1597, R12
3210+ B callbackasm1(SB)
3211+ MOVD $1598, R12
3212+ B callbackasm1(SB)
3213+ MOVD $1599, R12
3214+ B callbackasm1(SB)
3215+ MOVD $1600, R12
3216+ B callbackasm1(SB)
3217+ MOVD $1601, R12
3218+ B callbackasm1(SB)
3219+ MOVD $1602, R12
3220+ B callbackasm1(SB)
3221+ MOVD $1603, R12
3222+ B callbackasm1(SB)
3223+ MOVD $1604, R12
3224+ B callbackasm1(SB)
3225+ MOVD $1605, R12
3226+ B callbackasm1(SB)
3227+ MOVD $1606, R12
3228+ B callbackasm1(SB)
3229+ MOVD $1607, R12
3230+ B callbackasm1(SB)
3231+ MOVD $1608, R12
3232+ B callbackasm1(SB)
3233+ MOVD $1609, R12
3234+ B callbackasm1(SB)
3235+ MOVD $1610, R12
3236+ B callbackasm1(SB)
3237+ MOVD $1611, R12
3238+ B callbackasm1(SB)
3239+ MOVD $1612, R12
3240+ B callbackasm1(SB)
3241+ MOVD $1613, R12
3242+ B callbackasm1(SB)
3243+ MOVD $1614, R12
3244+ B callbackasm1(SB)
3245+ MOVD $1615, R12
3246+ B callbackasm1(SB)
3247+ MOVD $1616, R12
3248+ B callbackasm1(SB)
3249+ MOVD $1617, R12
3250+ B callbackasm1(SB)
3251+ MOVD $1618, R12
3252+ B callbackasm1(SB)
3253+ MOVD $1619, R12
3254+ B callbackasm1(SB)
3255+ MOVD $1620, R12
3256+ B callbackasm1(SB)
3257+ MOVD $1621, R12
3258+ B callbackasm1(SB)
3259+ MOVD $1622, R12
3260+ B callbackasm1(SB)
3261+ MOVD $1623, R12
3262+ B callbackasm1(SB)
3263+ MOVD $1624, R12
3264+ B callbackasm1(SB)
3265+ MOVD $1625, R12
3266+ B callbackasm1(SB)
3267+ MOVD $1626, R12
3268+ B callbackasm1(SB)
3269+ MOVD $1627, R12
3270+ B callbackasm1(SB)
3271+ MOVD $1628, R12
3272+ B callbackasm1(SB)
3273+ MOVD $1629, R12
3274+ B callbackasm1(SB)
3275+ MOVD $1630, R12
3276+ B callbackasm1(SB)
3277+ MOVD $1631, R12
3278+ B callbackasm1(SB)
3279+ MOVD $1632, R12
3280+ B callbackasm1(SB)
3281+ MOVD $1633, R12
3282+ B callbackasm1(SB)
3283+ MOVD $1634, R12
3284+ B callbackasm1(SB)
3285+ MOVD $1635, R12
3286+ B callbackasm1(SB)
3287+ MOVD $1636, R12
3288+ B callbackasm1(SB)
3289+ MOVD $1637, R12
3290+ B callbackasm1(SB)
3291+ MOVD $1638, R12
3292+ B callbackasm1(SB)
3293+ MOVD $1639, R12
3294+ B callbackasm1(SB)
3295+ MOVD $1640, R12
3296+ B callbackasm1(SB)
3297+ MOVD $1641, R12
3298+ B callbackasm1(SB)
3299+ MOVD $1642, R12
3300+ B callbackasm1(SB)
3301+ MOVD $1643, R12
3302+ B callbackasm1(SB)
3303+ MOVD $1644, R12
3304+ B callbackasm1(SB)
3305+ MOVD $1645, R12
3306+ B callbackasm1(SB)
3307+ MOVD $1646, R12
3308+ B callbackasm1(SB)
3309+ MOVD $1647, R12
3310+ B callbackasm1(SB)
3311+ MOVD $1648, R12
3312+ B callbackasm1(SB)
3313+ MOVD $1649, R12
3314+ B callbackasm1(SB)
3315+ MOVD $1650, R12
3316+ B callbackasm1(SB)
3317+ MOVD $1651, R12
3318+ B callbackasm1(SB)
3319+ MOVD $1652, R12
3320+ B callbackasm1(SB)
3321+ MOVD $1653, R12
3322+ B callbackasm1(SB)
3323+ MOVD $1654, R12
3324+ B callbackasm1(SB)
3325+ MOVD $1655, R12
3326+ B callbackasm1(SB)
3327+ MOVD $1656, R12
3328+ B callbackasm1(SB)
3329+ MOVD $1657, R12
3330+ B callbackasm1(SB)
3331+ MOVD $1658, R12
3332+ B callbackasm1(SB)
3333+ MOVD $1659, R12
3334+ B callbackasm1(SB)
3335+ MOVD $1660, R12
3336+ B callbackasm1(SB)
3337+ MOVD $1661, R12
3338+ B callbackasm1(SB)
3339+ MOVD $1662, R12
3340+ B callbackasm1(SB)
3341+ MOVD $1663, R12
3342+ B callbackasm1(SB)
3343+ MOVD $1664, R12
3344+ B callbackasm1(SB)
3345+ MOVD $1665, R12
3346+ B callbackasm1(SB)
3347+ MOVD $1666, R12
3348+ B callbackasm1(SB)
3349+ MOVD $1667, R12
3350+ B callbackasm1(SB)
3351+ MOVD $1668, R12
3352+ B callbackasm1(SB)
3353+ MOVD $1669, R12
3354+ B callbackasm1(SB)
3355+ MOVD $1670, R12
3356+ B callbackasm1(SB)
3357+ MOVD $1671, R12
3358+ B callbackasm1(SB)
3359+ MOVD $1672, R12
3360+ B callbackasm1(SB)
3361+ MOVD $1673, R12
3362+ B callbackasm1(SB)
3363+ MOVD $1674, R12
3364+ B callbackasm1(SB)
3365+ MOVD $1675, R12
3366+ B callbackasm1(SB)
3367+ MOVD $1676, R12
3368+ B callbackasm1(SB)
3369+ MOVD $1677, R12
3370+ B callbackasm1(SB)
3371+ MOVD $1678, R12
3372+ B callbackasm1(SB)
3373+ MOVD $1679, R12
3374+ B callbackasm1(SB)
3375+ MOVD $1680, R12
3376+ B callbackasm1(SB)
3377+ MOVD $1681, R12
3378+ B callbackasm1(SB)
3379+ MOVD $1682, R12
3380+ B callbackasm1(SB)
3381+ MOVD $1683, R12
3382+ B callbackasm1(SB)
3383+ MOVD $1684, R12
3384+ B callbackasm1(SB)
3385+ MOVD $1685, R12
3386+ B callbackasm1(SB)
3387+ MOVD $1686, R12
3388+ B callbackasm1(SB)
3389+ MOVD $1687, R12
3390+ B callbackasm1(SB)
3391+ MOVD $1688, R12
3392+ B callbackasm1(SB)
3393+ MOVD $1689, R12
3394+ B callbackasm1(SB)
3395+ MOVD $1690, R12
3396+ B callbackasm1(SB)
3397+ MOVD $1691, R12
3398+ B callbackasm1(SB)
3399+ MOVD $1692, R12
3400+ B callbackasm1(SB)
3401+ MOVD $1693, R12
3402+ B callbackasm1(SB)
3403+ MOVD $1694, R12
3404+ B callbackasm1(SB)
3405+ MOVD $1695, R12
3406+ B callbackasm1(SB)
3407+ MOVD $1696, R12
3408+ B callbackasm1(SB)
3409+ MOVD $1697, R12
3410+ B callbackasm1(SB)
3411+ MOVD $1698, R12
3412+ B callbackasm1(SB)
3413+ MOVD $1699, R12
3414+ B callbackasm1(SB)
3415+ MOVD $1700, R12
3416+ B callbackasm1(SB)
3417+ MOVD $1701, R12
3418+ B callbackasm1(SB)
3419+ MOVD $1702, R12
3420+ B callbackasm1(SB)
3421+ MOVD $1703, R12
3422+ B callbackasm1(SB)
3423+ MOVD $1704, R12
3424+ B callbackasm1(SB)
3425+ MOVD $1705, R12
3426+ B callbackasm1(SB)
3427+ MOVD $1706, R12
3428+ B callbackasm1(SB)
3429+ MOVD $1707, R12
3430+ B callbackasm1(SB)
3431+ MOVD $1708, R12
3432+ B callbackasm1(SB)
3433+ MOVD $1709, R12
3434+ B callbackasm1(SB)
3435+ MOVD $1710, R12
3436+ B callbackasm1(SB)
3437+ MOVD $1711, R12
3438+ B callbackasm1(SB)
3439+ MOVD $1712, R12
3440+ B callbackasm1(SB)
3441+ MOVD $1713, R12
3442+ B callbackasm1(SB)
3443+ MOVD $1714, R12
3444+ B callbackasm1(SB)
3445+ MOVD $1715, R12
3446+ B callbackasm1(SB)
3447+ MOVD $1716, R12
3448+ B callbackasm1(SB)
3449+ MOVD $1717, R12
3450+ B callbackasm1(SB)
3451+ MOVD $1718, R12
3452+ B callbackasm1(SB)
3453+ MOVD $1719, R12
3454+ B callbackasm1(SB)
3455+ MOVD $1720, R12
3456+ B callbackasm1(SB)
3457+ MOVD $1721, R12
3458+ B callbackasm1(SB)
3459+ MOVD $1722, R12
3460+ B callbackasm1(SB)
3461+ MOVD $1723, R12
3462+ B callbackasm1(SB)
3463+ MOVD $1724, R12
3464+ B callbackasm1(SB)
3465+ MOVD $1725, R12
3466+ B callbackasm1(SB)
3467+ MOVD $1726, R12
3468+ B callbackasm1(SB)
3469+ MOVD $1727, R12
3470+ B callbackasm1(SB)
3471+ MOVD $1728, R12
3472+ B callbackasm1(SB)
3473+ MOVD $1729, R12
3474+ B callbackasm1(SB)
3475+ MOVD $1730, R12
3476+ B callbackasm1(SB)
3477+ MOVD $1731, R12
3478+ B callbackasm1(SB)
3479+ MOVD $1732, R12
3480+ B callbackasm1(SB)
3481+ MOVD $1733, R12
3482+ B callbackasm1(SB)
3483+ MOVD $1734, R12
3484+ B callbackasm1(SB)
3485+ MOVD $1735, R12
3486+ B callbackasm1(SB)
3487+ MOVD $1736, R12
3488+ B callbackasm1(SB)
3489+ MOVD $1737, R12
3490+ B callbackasm1(SB)
3491+ MOVD $1738, R12
3492+ B callbackasm1(SB)
3493+ MOVD $1739, R12
3494+ B callbackasm1(SB)
3495+ MOVD $1740, R12
3496+ B callbackasm1(SB)
3497+ MOVD $1741, R12
3498+ B callbackasm1(SB)
3499+ MOVD $1742, R12
3500+ B callbackasm1(SB)
3501+ MOVD $1743, R12
3502+ B callbackasm1(SB)
3503+ MOVD $1744, R12
3504+ B callbackasm1(SB)
3505+ MOVD $1745, R12
3506+ B callbackasm1(SB)
3507+ MOVD $1746, R12
3508+ B callbackasm1(SB)
3509+ MOVD $1747, R12
3510+ B callbackasm1(SB)
3511+ MOVD $1748, R12
3512+ B callbackasm1(SB)
3513+ MOVD $1749, R12
3514+ B callbackasm1(SB)
3515+ MOVD $1750, R12
3516+ B callbackasm1(SB)
3517+ MOVD $1751, R12
3518+ B callbackasm1(SB)
3519+ MOVD $1752, R12
3520+ B callbackasm1(SB)
3521+ MOVD $1753, R12
3522+ B callbackasm1(SB)
3523+ MOVD $1754, R12
3524+ B callbackasm1(SB)
3525+ MOVD $1755, R12
3526+ B callbackasm1(SB)
3527+ MOVD $1756, R12
3528+ B callbackasm1(SB)
3529+ MOVD $1757, R12
3530+ B callbackasm1(SB)
3531+ MOVD $1758, R12
3532+ B callbackasm1(SB)
3533+ MOVD $1759, R12
3534+ B callbackasm1(SB)
3535+ MOVD $1760, R12
3536+ B callbackasm1(SB)
3537+ MOVD $1761, R12
3538+ B callbackasm1(SB)
3539+ MOVD $1762, R12
3540+ B callbackasm1(SB)
3541+ MOVD $1763, R12
3542+ B callbackasm1(SB)
3543+ MOVD $1764, R12
3544+ B callbackasm1(SB)
3545+ MOVD $1765, R12
3546+ B callbackasm1(SB)
3547+ MOVD $1766, R12
3548+ B callbackasm1(SB)
3549+ MOVD $1767, R12
3550+ B callbackasm1(SB)
3551+ MOVD $1768, R12
3552+ B callbackasm1(SB)
3553+ MOVD $1769, R12
3554+ B callbackasm1(SB)
3555+ MOVD $1770, R12
3556+ B callbackasm1(SB)
3557+ MOVD $1771, R12
3558+ B callbackasm1(SB)
3559+ MOVD $1772, R12
3560+ B callbackasm1(SB)
3561+ MOVD $1773, R12
3562+ B callbackasm1(SB)
3563+ MOVD $1774, R12
3564+ B callbackasm1(SB)
3565+ MOVD $1775, R12
3566+ B callbackasm1(SB)
3567+ MOVD $1776, R12
3568+ B callbackasm1(SB)
3569+ MOVD $1777, R12
3570+ B callbackasm1(SB)
3571+ MOVD $1778, R12
3572+ B callbackasm1(SB)
3573+ MOVD $1779, R12
3574+ B callbackasm1(SB)
3575+ MOVD $1780, R12
3576+ B callbackasm1(SB)
3577+ MOVD $1781, R12
3578+ B callbackasm1(SB)
3579+ MOVD $1782, R12
3580+ B callbackasm1(SB)
3581+ MOVD $1783, R12
3582+ B callbackasm1(SB)
3583+ MOVD $1784, R12
3584+ B callbackasm1(SB)
3585+ MOVD $1785, R12
3586+ B callbackasm1(SB)
3587+ MOVD $1786, R12
3588+ B callbackasm1(SB)
3589+ MOVD $1787, R12
3590+ B callbackasm1(SB)
3591+ MOVD $1788, R12
3592+ B callbackasm1(SB)
3593+ MOVD $1789, R12
3594+ B callbackasm1(SB)
3595+ MOVD $1790, R12
3596+ B callbackasm1(SB)
3597+ MOVD $1791, R12
3598+ B callbackasm1(SB)
3599+ MOVD $1792, R12
3600+ B callbackasm1(SB)
3601+ MOVD $1793, R12
3602+ B callbackasm1(SB)
3603+ MOVD $1794, R12
3604+ B callbackasm1(SB)
3605+ MOVD $1795, R12
3606+ B callbackasm1(SB)
3607+ MOVD $1796, R12
3608+ B callbackasm1(SB)
3609+ MOVD $1797, R12
3610+ B callbackasm1(SB)
3611+ MOVD $1798, R12
3612+ B callbackasm1(SB)
3613+ MOVD $1799, R12
3614+ B callbackasm1(SB)
3615+ MOVD $1800, R12
3616+ B callbackasm1(SB)
3617+ MOVD $1801, R12
3618+ B callbackasm1(SB)
3619+ MOVD $1802, R12
3620+ B callbackasm1(SB)
3621+ MOVD $1803, R12
3622+ B callbackasm1(SB)
3623+ MOVD $1804, R12
3624+ B callbackasm1(SB)
3625+ MOVD $1805, R12
3626+ B callbackasm1(SB)
3627+ MOVD $1806, R12
3628+ B callbackasm1(SB)
3629+ MOVD $1807, R12
3630+ B callbackasm1(SB)
3631+ MOVD $1808, R12
3632+ B callbackasm1(SB)
3633+ MOVD $1809, R12
3634+ B callbackasm1(SB)
3635+ MOVD $1810, R12
3636+ B callbackasm1(SB)
3637+ MOVD $1811, R12
3638+ B callbackasm1(SB)
3639+ MOVD $1812, R12
3640+ B callbackasm1(SB)
3641+ MOVD $1813, R12
3642+ B callbackasm1(SB)
3643+ MOVD $1814, R12
3644+ B callbackasm1(SB)
3645+ MOVD $1815, R12
3646+ B callbackasm1(SB)
3647+ MOVD $1816, R12
3648+ B callbackasm1(SB)
3649+ MOVD $1817, R12
3650+ B callbackasm1(SB)
3651+ MOVD $1818, R12
3652+ B callbackasm1(SB)
3653+ MOVD $1819, R12
3654+ B callbackasm1(SB)
3655+ MOVD $1820, R12
3656+ B callbackasm1(SB)
3657+ MOVD $1821, R12
3658+ B callbackasm1(SB)
3659+ MOVD $1822, R12
3660+ B callbackasm1(SB)
3661+ MOVD $1823, R12
3662+ B callbackasm1(SB)
3663+ MOVD $1824, R12
3664+ B callbackasm1(SB)
3665+ MOVD $1825, R12
3666+ B callbackasm1(SB)
3667+ MOVD $1826, R12
3668+ B callbackasm1(SB)
3669+ MOVD $1827, R12
3670+ B callbackasm1(SB)
3671+ MOVD $1828, R12
3672+ B callbackasm1(SB)
3673+ MOVD $1829, R12
3674+ B callbackasm1(SB)
3675+ MOVD $1830, R12
3676+ B callbackasm1(SB)
3677+ MOVD $1831, R12
3678+ B callbackasm1(SB)
3679+ MOVD $1832, R12
3680+ B callbackasm1(SB)
3681+ MOVD $1833, R12
3682+ B callbackasm1(SB)
3683+ MOVD $1834, R12
3684+ B callbackasm1(SB)
3685+ MOVD $1835, R12
3686+ B callbackasm1(SB)
3687+ MOVD $1836, R12
3688+ B callbackasm1(SB)
3689+ MOVD $1837, R12
3690+ B callbackasm1(SB)
3691+ MOVD $1838, R12
3692+ B callbackasm1(SB)
3693+ MOVD $1839, R12
3694+ B callbackasm1(SB)
3695+ MOVD $1840, R12
3696+ B callbackasm1(SB)
3697+ MOVD $1841, R12
3698+ B callbackasm1(SB)
3699+ MOVD $1842, R12
3700+ B callbackasm1(SB)
3701+ MOVD $1843, R12
3702+ B callbackasm1(SB)
3703+ MOVD $1844, R12
3704+ B callbackasm1(SB)
3705+ MOVD $1845, R12
3706+ B callbackasm1(SB)
3707+ MOVD $1846, R12
3708+ B callbackasm1(SB)
3709+ MOVD $1847, R12
3710+ B callbackasm1(SB)
3711+ MOVD $1848, R12
3712+ B callbackasm1(SB)
3713+ MOVD $1849, R12
3714+ B callbackasm1(SB)
3715+ MOVD $1850, R12
3716+ B callbackasm1(SB)
3717+ MOVD $1851, R12
3718+ B callbackasm1(SB)
3719+ MOVD $1852, R12
3720+ B callbackasm1(SB)
3721+ MOVD $1853, R12
3722+ B callbackasm1(SB)
3723+ MOVD $1854, R12
3724+ B callbackasm1(SB)
3725+ MOVD $1855, R12
3726+ B callbackasm1(SB)
3727+ MOVD $1856, R12
3728+ B callbackasm1(SB)
3729+ MOVD $1857, R12
3730+ B callbackasm1(SB)
3731+ MOVD $1858, R12
3732+ B callbackasm1(SB)
3733+ MOVD $1859, R12
3734+ B callbackasm1(SB)
3735+ MOVD $1860, R12
3736+ B callbackasm1(SB)
3737+ MOVD $1861, R12
3738+ B callbackasm1(SB)
3739+ MOVD $1862, R12
3740+ B callbackasm1(SB)
3741+ MOVD $1863, R12
3742+ B callbackasm1(SB)
3743+ MOVD $1864, R12
3744+ B callbackasm1(SB)
3745+ MOVD $1865, R12
3746+ B callbackasm1(SB)
3747+ MOVD $1866, R12
3748+ B callbackasm1(SB)
3749+ MOVD $1867, R12
3750+ B callbackasm1(SB)
3751+ MOVD $1868, R12
3752+ B callbackasm1(SB)
3753+ MOVD $1869, R12
3754+ B callbackasm1(SB)
3755+ MOVD $1870, R12
3756+ B callbackasm1(SB)
3757+ MOVD $1871, R12
3758+ B callbackasm1(SB)
3759+ MOVD $1872, R12
3760+ B callbackasm1(SB)
3761+ MOVD $1873, R12
3762+ B callbackasm1(SB)
3763+ MOVD $1874, R12
3764+ B callbackasm1(SB)
3765+ MOVD $1875, R12
3766+ B callbackasm1(SB)
3767+ MOVD $1876, R12
3768+ B callbackasm1(SB)
3769+ MOVD $1877, R12
3770+ B callbackasm1(SB)
3771+ MOVD $1878, R12
3772+ B callbackasm1(SB)
3773+ MOVD $1879, R12
3774+ B callbackasm1(SB)
3775+ MOVD $1880, R12
3776+ B callbackasm1(SB)
3777+ MOVD $1881, R12
3778+ B callbackasm1(SB)
3779+ MOVD $1882, R12
3780+ B callbackasm1(SB)
3781+ MOVD $1883, R12
3782+ B callbackasm1(SB)
3783+ MOVD $1884, R12
3784+ B callbackasm1(SB)
3785+ MOVD $1885, R12
3786+ B callbackasm1(SB)
3787+ MOVD $1886, R12
3788+ B callbackasm1(SB)
3789+ MOVD $1887, R12
3790+ B callbackasm1(SB)
3791+ MOVD $1888, R12
3792+ B callbackasm1(SB)
3793+ MOVD $1889, R12
3794+ B callbackasm1(SB)
3795+ MOVD $1890, R12
3796+ B callbackasm1(SB)
3797+ MOVD $1891, R12
3798+ B callbackasm1(SB)
3799+ MOVD $1892, R12
3800+ B callbackasm1(SB)
3801+ MOVD $1893, R12
3802+ B callbackasm1(SB)
3803+ MOVD $1894, R12
3804+ B callbackasm1(SB)
3805+ MOVD $1895, R12
3806+ B callbackasm1(SB)
3807+ MOVD $1896, R12
3808+ B callbackasm1(SB)
3809+ MOVD $1897, R12
3810+ B callbackasm1(SB)
3811+ MOVD $1898, R12
3812+ B callbackasm1(SB)
3813+ MOVD $1899, R12
3814+ B callbackasm1(SB)
3815+ MOVD $1900, R12
3816+ B callbackasm1(SB)
3817+ MOVD $1901, R12
3818+ B callbackasm1(SB)
3819+ MOVD $1902, R12
3820+ B callbackasm1(SB)
3821+ MOVD $1903, R12
3822+ B callbackasm1(SB)
3823+ MOVD $1904, R12
3824+ B callbackasm1(SB)
3825+ MOVD $1905, R12
3826+ B callbackasm1(SB)
3827+ MOVD $1906, R12
3828+ B callbackasm1(SB)
3829+ MOVD $1907, R12
3830+ B callbackasm1(SB)
3831+ MOVD $1908, R12
3832+ B callbackasm1(SB)
3833+ MOVD $1909, R12
3834+ B callbackasm1(SB)
3835+ MOVD $1910, R12
3836+ B callbackasm1(SB)
3837+ MOVD $1911, R12
3838+ B callbackasm1(SB)
3839+ MOVD $1912, R12
3840+ B callbackasm1(SB)
3841+ MOVD $1913, R12
3842+ B callbackasm1(SB)
3843+ MOVD $1914, R12
3844+ B callbackasm1(SB)
3845+ MOVD $1915, R12
3846+ B callbackasm1(SB)
3847+ MOVD $1916, R12
3848+ B callbackasm1(SB)
3849+ MOVD $1917, R12
3850+ B callbackasm1(SB)
3851+ MOVD $1918, R12
3852+ B callbackasm1(SB)
3853+ MOVD $1919, R12
3854+ B callbackasm1(SB)
3855+ MOVD $1920, R12
3856+ B callbackasm1(SB)
3857+ MOVD $1921, R12
3858+ B callbackasm1(SB)
3859+ MOVD $1922, R12
3860+ B callbackasm1(SB)
3861+ MOVD $1923, R12
3862+ B callbackasm1(SB)
3863+ MOVD $1924, R12
3864+ B callbackasm1(SB)
3865+ MOVD $1925, R12
3866+ B callbackasm1(SB)
3867+ MOVD $1926, R12
3868+ B callbackasm1(SB)
3869+ MOVD $1927, R12
3870+ B callbackasm1(SB)
3871+ MOVD $1928, R12
3872+ B callbackasm1(SB)
3873+ MOVD $1929, R12
3874+ B callbackasm1(SB)
3875+ MOVD $1930, R12
3876+ B callbackasm1(SB)
3877+ MOVD $1931, R12
3878+ B callbackasm1(SB)
3879+ MOVD $1932, R12
3880+ B callbackasm1(SB)
3881+ MOVD $1933, R12
3882+ B callbackasm1(SB)
3883+ MOVD $1934, R12
3884+ B callbackasm1(SB)
3885+ MOVD $1935, R12
3886+ B callbackasm1(SB)
3887+ MOVD $1936, R12
3888+ B callbackasm1(SB)
3889+ MOVD $1937, R12
3890+ B callbackasm1(SB)
3891+ MOVD $1938, R12
3892+ B callbackasm1(SB)
3893+ MOVD $1939, R12
3894+ B callbackasm1(SB)
3895+ MOVD $1940, R12
3896+ B callbackasm1(SB)
3897+ MOVD $1941, R12
3898+ B callbackasm1(SB)
3899+ MOVD $1942, R12
3900+ B callbackasm1(SB)
3901+ MOVD $1943, R12
3902+ B callbackasm1(SB)
3903+ MOVD $1944, R12
3904+ B callbackasm1(SB)
3905+ MOVD $1945, R12
3906+ B callbackasm1(SB)
3907+ MOVD $1946, R12
3908+ B callbackasm1(SB)
3909+ MOVD $1947, R12
3910+ B callbackasm1(SB)
3911+ MOVD $1948, R12
3912+ B callbackasm1(SB)
3913+ MOVD $1949, R12
3914+ B callbackasm1(SB)
3915+ MOVD $1950, R12
3916+ B callbackasm1(SB)
3917+ MOVD $1951, R12
3918+ B callbackasm1(SB)
3919+ MOVD $1952, R12
3920+ B callbackasm1(SB)
3921+ MOVD $1953, R12
3922+ B callbackasm1(SB)
3923+ MOVD $1954, R12
3924+ B callbackasm1(SB)
3925+ MOVD $1955, R12
3926+ B callbackasm1(SB)
3927+ MOVD $1956, R12
3928+ B callbackasm1(SB)
3929+ MOVD $1957, R12
3930+ B callbackasm1(SB)
3931+ MOVD $1958, R12
3932+ B callbackasm1(SB)
3933+ MOVD $1959, R12
3934+ B callbackasm1(SB)
3935+ MOVD $1960, R12
3936+ B callbackasm1(SB)
3937+ MOVD $1961, R12
3938+ B callbackasm1(SB)
3939+ MOVD $1962, R12
3940+ B callbackasm1(SB)
3941+ MOVD $1963, R12
3942+ B callbackasm1(SB)
3943+ MOVD $1964, R12
3944+ B callbackasm1(SB)
3945+ MOVD $1965, R12
3946+ B callbackasm1(SB)
3947+ MOVD $1966, R12
3948+ B callbackasm1(SB)
3949+ MOVD $1967, R12
3950+ B callbackasm1(SB)
3951+ MOVD $1968, R12
3952+ B callbackasm1(SB)
3953+ MOVD $1969, R12
3954+ B callbackasm1(SB)
3955+ MOVD $1970, R12
3956+ B callbackasm1(SB)
3957+ MOVD $1971, R12
3958+ B callbackasm1(SB)
3959+ MOVD $1972, R12
3960+ B callbackasm1(SB)
3961+ MOVD $1973, R12
3962+ B callbackasm1(SB)
3963+ MOVD $1974, R12
3964+ B callbackasm1(SB)
3965+ MOVD $1975, R12
3966+ B callbackasm1(SB)
3967+ MOVD $1976, R12
3968+ B callbackasm1(SB)
3969+ MOVD $1977, R12
3970+ B callbackasm1(SB)
3971+ MOVD $1978, R12
3972+ B callbackasm1(SB)
3973+ MOVD $1979, R12
3974+ B callbackasm1(SB)
3975+ MOVD $1980, R12
3976+ B callbackasm1(SB)
3977+ MOVD $1981, R12
3978+ B callbackasm1(SB)
3979+ MOVD $1982, R12
3980+ B callbackasm1(SB)
3981+ MOVD $1983, R12
3982+ B callbackasm1(SB)
3983+ MOVD $1984, R12
3984+ B callbackasm1(SB)
3985+ MOVD $1985, R12
3986+ B callbackasm1(SB)
3987+ MOVD $1986, R12
3988+ B callbackasm1(SB)
3989+ MOVD $1987, R12
3990+ B callbackasm1(SB)
3991+ MOVD $1988, R12
3992+ B callbackasm1(SB)
3993+ MOVD $1989, R12
3994+ B callbackasm1(SB)
3995+ MOVD $1990, R12
3996+ B callbackasm1(SB)
3997+ MOVD $1991, R12
3998+ B callbackasm1(SB)
3999+ MOVD $1992, R12
4000+ B callbackasm1(SB)
4001+ MOVD $1993, R12
4002+ B callbackasm1(SB)
4003+ MOVD $1994, R12
4004+ B callbackasm1(SB)
4005+ MOVD $1995, R12
4006+ B callbackasm1(SB)
4007+ MOVD $1996, R12
4008+ B callbackasm1(SB)
4009+ MOVD $1997, R12
4010+ B callbackasm1(SB)
4011+ MOVD $1998, R12
4012+ B callbackasm1(SB)
4013+ MOVD $1999, R12
4014+ B callbackasm1(SB)

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close