ObjFW  Diff

Differences From Artifact [f1c1087573]:

To Artifact [a85a18d2f1]:


22
23
24
25
26
27
28
29

30
31
32
33

34
35
36
37

38
39

40
41
42
43

44
45
46
47

48
49

50
51
52
53
54

55
56
57
58
59
60
61

62
63

64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79


80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95

96
97
98
99

100
101
102
103

104
105

106
107
108
109

110
111
112
113

114
115

116
117
118
119
120

121
122
123
124
125
126
127

128
129

130
131
132
133
134
135

136
137
138
139
140
141
142
143
144
145


146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162


163
164

165
166
167
168
169
170
171
22
23
24
25
26
27
28

29
30
31
32

33
34
35
36

37
38

39
40
41
42

43
44
45
46

47
48

49
50
51
52
53

54
55
56
57
58
59
60

61
62

63
64
65
66
67
68

69
70
71
72
73
74
75
76
77


78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94

95
96
97
98

99
100
101
102

103
104

105
106
107
108

109
110
111
112

113
114

115
116
117
118
119

120
121
122
123
124
125
126

127
128

129
130
131
132
133
134

135
136
137
138
139
140
141
142
143


144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160


161
162
163

164
165
166
167
168
169
170
171







-
+



-
+



-
+

-
+



-
+



-
+

-
+




-
+






-
+

-
+





-
+








-
-
+
+















-
+



-
+



-
+

-
+



-
+



-
+

-
+




-
+






-
+

-
+





-
+








-
-
+
+















-
-
+
+

-
+







	pushl	%ebp
	movl	%esp, %ebp

	pushl	%ebx
	subl	$20, %esp

	call	get_eip
.L0:
0:

	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	leal	_object_getClass-.L0(%ebx), %eax
	leal	_object_getClass-0b(%ebx), %eax
	call	*%eax

	movl	%eax, (%esp)
	leal	sel_forwardingTargetForSelector_-.L0(%ebx), %eax
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %eax
	movl	%eax, 4(%esp)
	leal	_class_respondsToSelector-.L0(%ebx), %eax
	leal	_class_respondsToSelector-0b(%ebx), %eax
	call	*%eax

	testl	%eax, %eax
	jz	fail
	jz	1f

	movl	8(%ebp), %eax
	movl	%eax, (%esp)
	leal	sel_forwardingTargetForSelector_-.L0(%ebx), %eax
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %eax
	movl	%eax, 4(%esp)
	leal	_objc_msg_lookup-.L0(%ebx), %eax
	leal	_objc_msg_lookup-0b(%ebx), %eax
	call	*%eax

	movl	8(%ebp), %edx
	movl	%edx, (%esp)
	leal	sel_forwardingTargetForSelector_-.L0(%ebx), %edx
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %edx
	movl	%edx, 4(%esp)
	movl	12(%ebp), %edx
	movl	%edx, 8(%esp)
	call	*%eax

	testl	%eax, %eax
	jz	fail
	jz	1f
	cmpl	8(%ebp), %eax
	je	fail
	je	1f

	movl	%eax, 8(%ebp)
	movl	%eax, (%esp)
	movl	12(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	_objc_msg_lookup-.L0(%ebx), %eax
	leal	_objc_msg_lookup-0b(%ebx), %eax
	call	*%eax

	addl	$20, %esp
	popl	%ebx
	popl	%ebp

	jmp	*%eax

fail:
	leal	_of_method_not_found-.L0(%ebx), %eax
1:
	leal	_of_method_not_found-0b(%ebx), %eax

	addl	$20, %esp
	popl	%ebx
	popl	%ebp

	jmp	*%eax

_of_forward_stret:
	pushl	%ebp
	movl	%esp, %ebp

	pushl	%ebx
	subl	$20, %esp

	call	get_eip
.L1:
0:

	movl	12(%ebp), %eax
	movl	%eax, (%esp)
	leal	_object_getClass-.L1(%ebx), %eax
	leal	_object_getClass-0b(%ebx), %eax
	call	*%eax

	movl	%eax, (%esp)
	leal	sel_forwardingTargetForSelector_-.L1(%ebx), %eax
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %eax
	movl	%eax, 4(%esp)
	leal	_class_respondsToSelector-.L1(%ebx), %eax
	leal	_class_respondsToSelector-0b(%ebx), %eax
	call	*%eax

	testl	%eax, %eax
	jz	fail_stret
	jz	1f

	movl	12(%ebp), %eax
	movl	%eax, (%esp)
	leal	sel_forwardingTargetForSelector_-.L1(%ebx), %eax
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %eax
	movl	%eax, 4(%esp)
	leal	_objc_msg_lookup-.L1(%ebx), %eax
	leal	_objc_msg_lookup-0b(%ebx), %eax
	call	*%eax

	movl	12(%ebp), %edx
	movl	%edx, (%esp)
	leal	sel_forwardingTargetForSelector_-.L1(%ebx), %edx
	leal	sel_forwardingTargetForSelector_-0b(%ebx), %edx
	movl	%edx, 4(%esp)
	movl	16(%ebp), %edx
	movl	%edx, 8(%esp)
	call	*%eax

	testl	%eax, %eax
	jz	fail_stret
	jz	1f
	cmpl	12(%ebp), %eax
	je	fail_stret
	je	1f

	movl	%eax, 12(%ebp)
	movl	%eax, (%esp)
	movl	16(%ebp), %eax
	movl	%eax, 4(%esp)
	leal	_objc_msg_lookup_stret-.L1(%ebx), %eax
	leal	_objc_msg_lookup_stret-0b(%ebx), %eax
	call	*%eax

	addl	$20, %esp
	popl	%ebx
	popl	%ebp

	jmp	*%eax

fail_stret:
	leal	_of_method_not_found_stret-.L1(%ebx), %eax
1:
	leal	_of_method_not_found_stret-0b(%ebx), %eax

	addl	$20, %esp
	popl	%ebx
	popl	%ebp

	jmp	*%eax

init:
	pushl	%ebp
	movl	%esp, %ebp

	pushl	%ebx
	subl	$4, %esp

	call	get_eip
.L2:
	leal	module-.L2(%ebx), %eax
0:
	leal	module-0b(%ebx), %eax
	movl	%eax, (%esp)
	leal	___objc_exec_class-.L2(%ebx), %eax
	leal	___objc_exec_class-0b(%ebx), %eax
	call	*%eax

	addl	$4, %esp
	popl	%ebx
	popl	%ebp
	ret