%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
mov edi, _FLAC__crc16_table
%else
+%ifdef OBJ_FORMAT_elf
+ mov edi, [esp + 16] ; saved ebx (GOT base)
+ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
+%else
mov edi, FLAC__crc16_table
%endif
+%endif
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
;; ecx br->crc16_align
%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
mov edi, _FLAC__crc16_table
%else
+%ifdef OBJ_FORMAT_elf
+ mov edi, [esp + 16] ; saved ebx (GOT base)
+ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
+%else
mov edi, FLAC__crc16_table
%endif
+%endif
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
;; ecx br->crc16_align
%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
call _bitreader_read_from_client_
%else
+%ifdef OBJ_FORMAT_elf
+ mov ebx, [esp + 20] ; saved ebx (GOT base)
+ call bitreader_read_from_client_ wrt ..plt
+%else
call bitreader_read_from_client_
%endif
+%endif
pop edx ; /* discard, unused */
pop ecx ; /* restore */
mov esi, [ebp + 16] ; cwords = br->consumed_words;
mov [ebp + 16], esi ; br->consumed_words = cwords;
mov [ebp + 20], ecx ; br->consumed_bits = cbits;
push ecx ; /* save */
+ push ebx ; /* save */
push ebp ; /* push br argument */
%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
call _bitreader_read_from_client_
%else
+%ifdef OBJ_FORMAT_elf
+ mov ebx, [esp + 24] ; saved ebx (GOT base)
+ call bitreader_read_from_client_ wrt ..plt
+%else
call bitreader_read_from_client_
%endif
+%endif
pop edx ; /* discard, unused */
+ pop ebx ; /* restore */
pop ecx ; /* restore */
mov esi, [ebp + 16] ; cwords = br->consumed_words;
; ucbits = (br->words-cwords)*FLAC__BITS_PER_WORD + br->bytes*8 - cbits;
%ifdef FLAC__PUBLIC_NEEDS_UNDERSCORE
mov edi, _FLAC__crc16_table
%else
+%ifdef OBJ_FORMAT_elf
+ mov edi, [esp + 24] ; saved ebx (GOT base)
+ lea edi, [edi + FLAC__crc16_table wrt ..gotoff]
+%else
mov edi, FLAC__crc16_table
%endif
+%endif
;; eax (ax) crc a.k.a. br->read_crc
;; ebx (bl) intermediate result index into FLAC__crc16_table[]
;; ecx br->crc16_align