| 1 | .text |
| 2 | .globl fc1 |
| 3 | .type fc1,@function |
| 4 | fc1: |
| 5 | pushl %ebp |
| 6 | movl %esp, %ebp |
| 7 | pushl %ebx |
| 8 | pushl %eax |
| 9 | call 1f |
| 10 | 1: popl %ebx |
| 11 | addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx |
| 12 | nop;nop;nop;nop |
| 13 | |
| 14 | /* @gottpoff IE against global var */ |
| 15 | movl %gs:0, %ecx |
| 16 | nop;nop |
| 17 | subl sG3@gottpoff(%ebx), %ecx |
| 18 | nop;nop;nop;nop |
| 19 | |
| 20 | /* @gotntpoff IE against global var */ |
| 21 | movl %gs:0, %ecx |
| 22 | nop;nop |
| 23 | addl sG4@gotntpoff(%ebx), %ecx |
| 24 | nop;nop;nop;nop |
| 25 | |
| 26 | /* GD */ |
| 27 | leal sG1@tlsgd(,%ebx,1), %eax |
| 28 | call ___tls_get_addr@plt |
| 29 | nop;nop;nop;nop |
| 30 | |
| 31 | /* GD */ |
| 32 | leal sG1@tlsdesc(%ebx), %eax |
| 33 | call *sG1@tlscall(%eax) |
| 34 | nop;nop;nop;nop |
| 35 | |
| 36 | /* GD */ |
| 37 | leal sG2@tlsdesc(%ebx), %eax |
| 38 | call *sG2@tlscall(%eax) |
| 39 | nop;nop;nop;nop |
| 40 | |
| 41 | /* GD */ |
| 42 | leal sG2@tlsgd(,%ebx,1), %eax |
| 43 | call ___tls_get_addr@plt |
| 44 | nop;nop;nop;nop |
| 45 | |
| 46 | /* GD -> IE tpoff */ |
| 47 | leal sG3@tlsgd(,%ebx,1), %eax |
| 48 | call ___tls_get_addr@plt |
| 49 | nop;nop;nop;nop |
| 50 | |
| 51 | /* GD -> IE tpoff */ |
| 52 | leal sG3@tlsdesc(%ebx), %eax |
| 53 | call *sG3@tlscall(%eax) |
| 54 | nop;nop;nop;nop |
| 55 | |
| 56 | /* GD -> IE ntpoff */ |
| 57 | leal sG4@tlsdesc(%ebx), %eax |
| 58 | call *sG4@tlscall(%eax) |
| 59 | nop;nop;nop;nop |
| 60 | |
| 61 | /* GD -> IE ntpoff */ |
| 62 | leal sG4@tlsgd(,%ebx,1), %eax |
| 63 | call ___tls_get_addr@plt |
| 64 | nop;nop;nop;nop |
| 65 | |
| 66 | /* GD -> IE ntpoff */ |
| 67 | leal sG5@tlsgd(,%ebx,1), %eax |
| 68 | call ___tls_get_addr@plt |
| 69 | nop;nop;nop;nop |
| 70 | |
| 71 | /* GD -> IE ntpoff */ |
| 72 | leal sG5@tlsdesc(%ebx), %eax |
| 73 | call *sG5@tlscall(%eax) |
| 74 | nop;nop;nop;nop |
| 75 | |
| 76 | /* GD -> IE tpoff */ |
| 77 | leal sG6@tlsdesc(%ebx), %eax |
| 78 | call *sG6@tlscall(%eax) |
| 79 | nop;nop;nop;nop |
| 80 | |
| 81 | /* GD -> IE tpoff */ |
| 82 | leal sG6@tlsgd(,%ebx,1), %eax |
| 83 | call ___tls_get_addr@plt |
| 84 | nop;nop;nop;nop |
| 85 | |
| 86 | /* @gotntpoff IE against global var */ |
| 87 | movl %gs:0, %ecx |
| 88 | nop;nop |
| 89 | addl sG5@gotntpoff(%ebx), %ecx |
| 90 | nop;nop;nop;nop |
| 91 | |
| 92 | /* @gottpoff IE against global var */ |
| 93 | movl %gs:0, %ecx |
| 94 | nop;nop |
| 95 | subl sG6@gottpoff(%ebx), %ecx |
| 96 | nop;nop;nop;nop |
| 97 | |
| 98 | movl -4(%ebp), %ebx |
| 99 | leave |
| 100 | ret |