1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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
|
#include "PIC.h"
.text
.global getenv
.type getenv,@function
getenv:
pushl %esi
pushl %edi
movl 0xc(%esp), %edi
cld
movl %edi, %edx
xorl %eax, %eax
leal -1(%eax), %ecx
repnz scasb
not %ecx
dec %ecx
pushl %ecx
movl (%edx), %ecx
GET_1VAR environ, %esi # non-PIC: movl environ, %esi
jmp .Lloop
.Lprepare:
movl (%edx), %ecx
movl %eax, %esi
.Lloop:
lodsl
or %eax, %eax
jz .Lout
cmpb %cl, (%eax)
jnz .Lloop
movl %edx, %edi
xchg %esi, %eax
movl (%esp), %ecx
repz cmpsb
jne .Lprepare
or %ecx, %ecx
jnz .Lprepare
cmpb $'=', (%esi)
jne .Lprepare
leal 0x1(%esi), %eax
.Lout:
popl %ecx
popl %edi
popl %esi
ret
.size getenv, . - getenv
|