Pristime RedHat 7.1 running on a Celeron 700 orchis:~/XSLT/tests/docbook -> uname -a Linux orchis.rpmfind.net 2.4.2-2enterprise #1 SMP Sun Apr 8 20:01:03 EDT 2001 i686 unknown orchis:~/XSLT/tests/docbook -> gcc -v Reading specs from /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs gcc version 2.96 20000731 (Red Hat Linux 7.1 2.96-81) orchis:~/XSLT/tests/docbook -> orchis:~/XSLT/tests/docbook -> cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 8 model name : Celeron (Coppermine) stepping : 6 cpu MHz : 701.616 cache size : 128 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse bogomips : 1399.19 orchis:~/XSLT/tests/docbook -> static void xmlXPathCompNumber(xmlXPathParserContextPtr ctxt) { double ret = 0.0; double mult = 1, tmp2; int ok = 0, tmp; int exponent = 0; int is_exponent_negative = 0; CHECK_ERROR; if ((CUR != '.') && ((CUR < '0') || (CUR > '9'))) { XP_ERROR(XPATH_NUMBER_ERROR); } while ((CUR >= '0') && (CUR <= '9')) { tmp = (CUR - '0'); tmp2 = (double) tmp; /* BUG IS HERE */ ret = ret * 10.0; ret = ret + tmp2; ok = 1; NEXT; } if (CUR == '.') { NEXT; if (((CUR < '0') || (CUR > '9')) && (!ok)) { XP_ERROR(XPATH_NUMBER_ERROR); } while ((CUR >= '0') && (CUR <= '9')) { mult /= 10; ret = ret + (CUR - '0') * mult; NEXT; } } if ((CUR == 'e') || (CUR == 'E')) { NEXT; if (CUR == '-') { is_exponent_negative = 1; NEXT; } while ((CUR >= '0') && (CUR <= '9')) { exponent = exponent * 10 + (CUR - '0'); NEXT; } if (is_exponent_negative) exponent = -exponent; ret *= pow(10.0, (double) exponent); } PUSH_LONG_EXPR(XPATH_OP_VALUE, XPATH_NUMBER, 0, 0, xmlXPathNewFloat(ret), NULL); } CFLAGS = -g -O -pedantic -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline DEBUGGING SESSION Breakpoint 20, xmlXPathCompNumber (ctxt=0x86b6568) at xpath.c:5796 5796 double ret = 0.0; (gdb) info float R7: Empty 0xc016bc61bd0000000000 R6: Empty 0x00000000000000000000 R5: Valid 0x40008000000000000000 +2 R4: Valid 0x40008000000000000000 +2 R3: Valid 0x3fff8000000000000000 +1 R2: Valid 0x40008000000000000000 +2 R1: Valid 0x40008000000000000000 +2 =>R0: Valid 0x40008000000000000000 +2 Status Word: 0x0045 IE ZE SF TOP: 0 Control Word: 0x037f IM DM ZM OM UM PM PC: Extended Precision (64-bits) RC: Round to nearest Tag Word: 0xf000 Instruction Pointer: 0x23:0x0804f939 Operand Pointer: 0x2b:0x080a710c Opcode: 0xdae9 (gdb) n 5797 double mult = 1, tmp2; (gdb) 5798 int ok = 0, tmp; (gdb) 5799 int exponent = 0; (gdb) 5800 int is_exponent_negative = 0; (gdb) 5802 CHECK_ERROR; (gdb) 5803 if ((CUR != '.') && ((CUR < '0') || (CUR > '9'))) { (gdb) 5806 while ((CUR >= '0') && (CUR <= '9')) { (gdb) 5807 tmp = (CUR - '0'); (gdb) 5809 ret = ret * 10.0; (gdb) p tmp $6 = 1 (gdb) p ret $7 = 0 (gdb) p tmp2 No symbol "tmp2" in current context. (gdb) info float R7: Valid 0x3fff8000000000000000 +1 R6: Valid 0x4002a000000000000000 +10 =>R5: Valid 0xffffc000000000000000 Real Indefinite (QNaN) R4: Valid 0x40008000000000000000 +2 R3: Valid 0x3fff8000000000000000 +1 R2: Valid 0x40008000000000000000 +2 R1: Valid 0x40008000000000000000 +2 R0: Special 0x40008000000000000000 +2 Status Word: 0x2845 IE ZE SF TOP: 5 Control Word: 0x037f IM DM ZM OM UM PM PC: Extended Precision (64-bits) RC: Round to nearest Tag Word: 0x0002 Instruction Pointer: 0x23:0x08090ef5 Operand Pointer: 0x2b:0xbfffef20 Opcode: 0xd8c9 (gdb) n 5812 NEXT; (gdb) p ret $9 = -nan(0x8000000000000) (gdb) n 5813 } (gdb) n 5814 if (CUR == '.') { (gdb) 5825 if ((CUR == 'e') || (CUR == 'E')) { (gdb) 5839 PUSH_LONG_EXPR(XPATH_OP_VALUE, XPATH_NUMBER, 0, 0, (gdb) s xmlXPathNewFloat (val=-nan(0x8000000000000)) at xpath.c:2031 2031 ret = (xmlXPathObjectPtr) xmlMalloc(sizeof(xmlXPathObject)); (gdb) Excerpt from objdump -d for this function xpath.o: file format elf32-i386 Disassembly of section .text: 0000584c : 584c: 55 push %ebp 584d: 89 e5 mov %esp,%ebp 584f: 57 push %edi 5850: 56 push %esi 5851: 53 push %ebx 5852: 83 ec 0c sub $0xc,%esp 5855: 8b 5d 08 mov 0x8(%ebp),%ebx 5858: d9 ee fldz 585a: dd 5d e8 fstpl 0xffffffe8(%ebp) 585d: d9 e8 fld1 585f: b9 00 00 00 00 mov $0x0,%ecx 5864: be 00 00 00 00 mov $0x0,%esi 5869: bf 00 00 00 00 mov $0x0,%edi 586e: 83 7b 08 00 cmpl $0x0,0x8(%ebx) 5872: 0f 85 8b 01 00 00 jne 5a03 5878: 8b 03 mov (%ebx),%eax 587a: 80 38 2e cmpb $0x2e,(%eax) 587d: 74 15 je 5894 587f: 8a 00 mov (%eax),%al 5881: 83 e8 30 sub $0x30,%eax 5884: 3c 09 cmp $0x9,%al 5886: 76 0c jbe 5894 5888: dd d8 fstp %st(0) 588a: 6a 01 push $0x1 588c: 68 ac 16 00 00 push $0x16ac 5891: eb 6a jmp 58fd 5893: 90 nop 5894: 8b 03 mov (%ebx),%eax 5896: 89 c2 mov %eax,%edx 5898: 8a 00 mov (%eax),%al 589a: 83 e8 30 sub $0x30,%eax 589d: 3c 09 cmp $0x9,%al 589f: 77 39 ja 58da 58a1: dd 05 90 0a 00 00 fldl 0xa90 58a7: b9 01 00 00 00 mov $0x1,%ecx 58ac: 0f b6 02 movzbl (%edx),%eax 58af: 83 e8 30 sub $0x30,%eax 58b2: dd 45 e8 fldl 0xffffffe8(%ebp) 58b5: d8 c9 fmul %st(1),%st 58b7: 50 push %eax 58b8: da 04 24 fiaddl (%esp,1) 58bb: 58 pop %eax 58bc: dd 5d e8 fstpl 0xffffffe8(%ebp) 58bf: 80 3a 00 cmpb $0x0,(%edx) 58c2: 74 05 je 58c9 58c4: 8d 42 01 lea 0x1(%edx),%eax 58c7: 89 03 mov %eax,(%ebx) 58c9: 8b 13 mov (%ebx),%edx 58cb: 8a 02 mov (%edx),%al 58cd: 83 e8 30 sub $0x30,%eax 58d0: 3c 09 cmp $0x9,%al 58d2: 0f 86 d4 ff ff ff jbe 58ac 58d8: dd d8 fstp %st(0) 58da: 8b 13 mov (%ebx),%edx 58dc: 80 3a 2e cmpb $0x2e,(%edx) 58df: 75 77 jne 5958 58e1: 8d 42 01 lea 0x1(%edx),%eax 58e4: 89 03 mov %eax,(%ebx) 58e6: 8a 42 01 mov 0x1(%edx),%al 58e9: 83 e8 30 sub $0x30,%eax 58ec: 3c 09 cmp $0x9,%al 58ee: 76 24 jbe 5914 58f0: 85 c9 test %ecx,%ecx 58f2: 75 20 jne 5914 58f4: dd d8 fstp %st(0) 58f6: 6a 01 push $0x1 58f8: 68 b9 16 00 00 push $0x16b9 58fd: 68 00 00 00 00 push $0x0 5902: 53 push %ebx 5903: e8 fc ff ff ff call 5904 5908: c7 43 08 01 00 00 00 movl $0x1,0x8(%ebx) 590f: e9 f1 00 00 00 jmp 5a05 5914: 8b 03 mov (%ebx),%eax 5916: 89 c2 mov %eax,%edx 5918: 8a 00 mov (%eax),%al 591a: 83 e8 30 sub $0x30,%eax 591d: 3c 09 cmp $0x9,%al 591f: 77 37 ja 5958 5921: dd 05 90 0a 00 00 fldl 0xa90 5927: 90 nop 5928: dc f9 fdivr %st,%st(1) 592a: 0f b6 02 movzbl (%edx),%eax 592d: 83 e8 30 sub $0x30,%eax 5930: d9 c1 fld %st(1) 5932: 50 push %eax 5933: da 0c 24 fimull (%esp,1) 5936: 58 pop %eax 5937: dc 45 e8 faddl 0xffffffe8(%ebp) 593a: dd 5d e8 fstpl 0xffffffe8(%ebp) 593d: 80 3a 00 cmpb $0x0,(%edx) 5940: 74 05 je 5947 5942: 8d 42 01 lea 0x1(%edx),%eax 5945: 89 03 mov %eax,(%ebx) 5947: 8b 13 mov (%ebx),%edx 5949: 8a 02 mov (%edx),%al 594b: 83 e8 30 sub $0x30,%eax 594e: 3c 09 cmp $0x9,%al 5950: 0f 86 d2 ff ff ff jbe 5928 5956: dd d8 fstp %st(0) 5958: dd d8 fstp %st(0) 595a: 8b 03 mov (%ebx),%eax 595c: 80 38 65 cmpb $0x65,(%eax) 595f: 74 05 je 5966 5961: 80 38 45 cmpb $0x45,(%eax) 5964: 75 6c jne 59d2 5966: 8b 03 mov (%ebx),%eax 5968: 80 38 00 cmpb $0x0,(%eax) 596b: 74 03 je 5970 596d: 40 inc %eax 596e: 89 03 mov %eax,(%ebx) 5970: 8b 03 mov (%ebx),%eax 5972: 80 38 2d cmpb $0x2d,(%eax) 5975: 75 08 jne 597f 5977: bf 01 00 00 00 mov $0x1,%edi 597c: 40 inc %eax 597d: 89 03 mov %eax,(%ebx) 597f: 8b 03 mov (%ebx),%eax 5981: 89 c1 mov %eax,%ecx 5983: 8a 00 mov (%eax),%al 5985: eb 19 jmp 59a0 5987: 90 nop 5988: 8d 14 b6 lea (%esi,%esi,4),%edx 598b: 0f b6 01 movzbl (%ecx),%eax 598e: 8d 74 50 d0 lea 0xffffffd0(%eax,%edx,2),%esi 5992: 80 39 00 cmpb $0x0,(%ecx) 5995: 74 05 je 599c 5997: 8d 41 01 lea 0x1(%ecx),%eax 599a: 89 03 mov %eax,(%ebx) 599c: 8b 0b mov (%ebx),%ecx 599e: 8a 01 mov (%ecx),%al 59a0: 83 e8 30 sub $0x30,%eax 59a3: 3c 09 cmp $0x9,%al 59a5: 0f 86 dd ff ff ff jbe 5988 59ab: 85 ff test %edi,%edi 59ad: 74 02 je 59b1 59af: f7 de neg %esi 59b1: 56 push %esi 59b2: db 04 24 fildl (%esp,1) 59b5: 5e pop %esi 59b6: 8d 64 24 f8 lea 0xfffffff8(%esp,1),%esp 59ba: dd 1c 24 fstpl (%esp,1) 59bd: 68 00 00 24 40 push $0x40240000 59c2: 6a 00 push $0x0 59c4: e8 fc ff ff ff call 59c5 59c9: dc 4d e8 fmull 0xffffffe8(%ebp) 59cc: dd 5d e8 fstpl 0xffffffe8(%ebp) 59cf: 83 c4 10 add $0x10,%esp 59d2: 83 ec 0c sub $0xc,%esp 59d5: 6a 00 push $0x0 59d7: 83 ec 08 sub $0x8,%esp 59da: ff 75 ec pushl 0xffffffec(%ebp) 59dd: ff 75 e8 pushl 0xffffffe8(%ebp) 59e0: e8 fc ff ff ff call 59e1 59e5: 83 c4 10 add $0x10,%esp 59e8: 50 push %eax 59e9: 6a 00 push $0x0 59eb: 6a 00 push $0x0 59ed: 6a 03 push $0x3 59ef: 6a 0c push $0xc 59f1: 6a ff push $0xffffffff 59f3: 8b 43 20 mov 0x20(%ebx),%eax 59f6: ff 70 0c pushl 0xc(%eax) 59f9: ff 73 20 pushl 0x20(%ebx) 59fc: e8 cb a7 ff ff call 1cc 5a01: eb 02 jmp 5a05 5a03: dd d8 fstp %st(0) 5a05: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 5a08: 5b pop %ebx 5a09: 5e pop %esi 5a0a: 5f pop %edi 5a0b: 5d pop %ebp 5a0c: c3 ret 5a0d: 8d 76 00 lea 0x0(%esi),%esi Recompilation of the module without -O: gcc -DHAVE_CONFIG_H -I. -I. -I. -I./include -I./include -g -pedantic -W -Wunused -Wimplicit -Wreturn-type -Wswitch -Wcomment -Wtrigraphs -Wformat -Wchar-subscripts -Wuninitialized -Wparentheses -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wp,-MD,.deps/xpath.pp -c xpath.c -o xpath.o cc1: warning: -Wuninitialized is not supported without -O Same debug sequence Breakpoint 21, xmlXPathCompNumber (ctxt=0x86ba628) at xpath.c:5796 5796 double ret = 0.0; (gdb) info float R7: Empty 0xc016bc61bd0000000000 R6: Empty 0x00000000000000000000 R5: Valid 0x40008000000000000000 +2 R4: Valid 0x40008000000000000000 +2 R3: Valid 0x3fff8000000000000000 +1 R2: Valid 0x40008000000000000000 +2 R1: Valid 0x40008000000000000000 +2 =>R0: Valid 0x40008000000000000000 +2 Status Word: 0x0045 IE ZE SF TOP: 0 Control Word: 0x037f IM DM ZM OM UM PM PC: Extended Precision (64-bits) RC: Round to nearest Tag Word: 0xf000 Instruction Pointer: 0x23:0x0804f9a9 Operand Pointer: 0x2b:0x080ab1ec Opcode: 0xdae9 (gdb) n 5797 double mult = 1, tmp2; (gdb) n 5798 int ok = 0, tmp; (gdb) 5799 int exponent = 0; (gdb) 5800 int is_exponent_negative = 0; (gdb) 5802 CHECK_ERROR; (gdb) 5803 if ((CUR != '.') && ((CUR < '0') || (CUR > '9'))) { (gdb) 5806 while ((CUR >= '0') && (CUR <= '9')) { (gdb) 5807 tmp = (CUR - '0'); (gdb) 5808 tmp2 = (double) tmp; (gdb) p tmp $1 = 1 (gdb) p ret $2 = 0 (gdb) n 5809 ret = ret * 10.0; (gdb) p tmp2 $3 = 1 (gdb) n 5810 ret = ret + tmp2; (gdb) info float R7: Empty 0x00000000000000000000 R6: Empty 0x4002a000000000000000 R5: Valid 0x40008000000000000000 +2 R4: Valid 0x40008000000000000000 +2 R3: Valid 0x3fff8000000000000000 +1 R2: Valid 0x40008000000000000000 +2 R1: Valid 0x40008000000000000000 +2 =>R0: Valid 0x40008000000000000000 +2 Status Word: 0x0045 IE ZE SF TOP: 0 Control Word: 0x037f IM DM ZM OM UM PM PC: Extended Precision (64-bits) RC: Round to nearest Tag Word: 0xf000 Instruction Pointer: 0x23:0x0809369f Operand Pointer: 0x2b:0xbfffefa8 Opcode: 0xdd5d (gdb) n 5811 ok = 1; (gdb) p ret $4 = 1 (gdb) n 5812 NEXT; (gdb) 5806 while ((CUR >= '0') && (CUR <= '9')) { (gdb) 5814 if (CUR == '.') { (gdb) 5825 if ((CUR == 'e') || (CUR == 'E')) { (gdb) 5839 PUSH_LONG_EXPR(XPATH_OP_VALUE, XPATH_NUMBER, 0, 0, (gdb) s xmlXPathNewFloat (val=1) at xpath.c:2031 2031 ret = (xmlXPathObjectPtr) xmlMalloc(sizeof(xmlXPathObject)); (gdb) xpath.o: file format elf32-i386 Disassembly of section .text: 00007f28 : 7f28: 55 push %ebp 7f29: 89 e5 mov %esp,%ebp 7f2b: 53 push %ebx 7f2c: 83 ec 34 sub $0x34,%esp 7f2f: c7 45 f0 00 00 00 00 movl $0x0,0xfffffff0(%ebp) 7f36: c7 45 f4 00 00 00 00 movl $0x0,0xfffffff4(%ebp) 7f3d: c7 45 e8 00 00 00 00 movl $0x0,0xffffffe8(%ebp) 7f44: c7 45 ec 00 00 f0 3f movl $0x3ff00000,0xffffffec(%ebp) 7f4b: c7 45 dc 00 00 00 00 movl $0x0,0xffffffdc(%ebp) 7f52: c7 45 d4 00 00 00 00 movl $0x0,0xffffffd4(%ebp) 7f59: c7 45 d0 00 00 00 00 movl $0x0,0xffffffd0(%ebp) 7f60: 8b 45 08 mov 0x8(%ebp),%eax 7f63: 83 78 08 00 cmpl $0x0,0x8(%eax) 7f67: 74 07 je 7f70 7f69: e9 80 02 00 00 jmp 81ee 7f6e: 89 f6 mov %esi,%esi 7f70: 8b 45 08 mov 0x8(%ebp),%eax 7f73: 8b 00 mov (%eax),%eax 7f75: 80 38 2e cmpb $0x2e,(%eax) 7f78: 74 3e je 7fb8 7f7a: 8b 45 08 mov 0x8(%ebp),%eax 7f7d: 8b 00 mov (%eax),%eax 7f7f: 80 38 2f cmpb $0x2f,(%eax) 7f82: 76 0c jbe 7f90 7f84: 8b 45 08 mov 0x8(%ebp),%eax 7f87: 8b 00 mov (%eax),%eax 7f89: 80 38 39 cmpb $0x39,(%eax) 7f8c: 77 02 ja 7f90 7f8e: eb 28 jmp 7fb8 7f90: 6a 01 push $0x1 7f92: 68 ac 16 00 00 push $0x16ac 7f97: 68 00 00 00 00 push $0x0 7f9c: ff 75 08 pushl 0x8(%ebp) 7f9f: e8 fc ff ff ff call 7fa0 7fa4: 83 c4 10 add $0x10,%esp 7fa7: 8b 45 08 mov 0x8(%ebp),%eax 7faa: c7 40 08 01 00 00 00 movl $0x1,0x8(%eax) 7fb1: e9 38 02 00 00 jmp 81ee 7fb6: 89 f6 mov %esi,%esi 7fb8: 8b 45 08 mov 0x8(%ebp),%eax 7fbb: 8b 00 mov (%eax),%eax 7fbd: 80 38 2f cmpb $0x2f,(%eax) 7fc0: 76 5a jbe 801c 7fc2: 8b 45 08 mov 0x8(%ebp),%eax 7fc5: 8b 00 mov (%eax),%eax 7fc7: 80 38 39 cmpb $0x39,(%eax) 7fca: 76 04 jbe 7fd0 7fcc: eb 4e jmp 801c 7fce: 89 f6 mov %esi,%esi 7fd0: 8b 45 08 mov 0x8(%ebp),%eax 7fd3: 8b 00 mov (%eax),%eax 7fd5: 0f b6 00 movzbl (%eax),%eax 7fd8: 83 e8 30 sub $0x30,%eax 7fdb: 89 45 d8 mov %eax,0xffffffd8(%ebp) 7fde: db 45 d8 fildl 0xffffffd8(%ebp) 7fe1: dd 5d e0 fstpl 0xffffffe0(%ebp) 7fe4: dd 45 f0 fldl 0xfffffff0(%ebp) 7fe7: dd 05 80 0a 00 00 fldl 0xa80 7fed: de c9 fmulp %st,%st(1) 7fef: dd 5d f0 fstpl 0xfffffff0(%ebp) 7ff2: dd 45 f0 fldl 0xfffffff0(%ebp) 7ff5: dc 45 e0 faddl 0xffffffe0(%ebp) 7ff8: dd 5d f0 fstpl 0xfffffff0(%ebp) 7ffb: c7 45 dc 01 00 00 00 movl $0x1,0xffffffdc(%ebp) 8002: 8b 45 08 mov 0x8(%ebp),%eax 8005: 8b 00 mov (%eax),%eax 8007: 80 38 00 cmpb $0x0,(%eax) 800a: 0f 84 a8 ff ff ff je 7fb8 8010: 8b 45 08 mov 0x8(%ebp),%eax 8013: ff 00 incl (%eax) 8015: e9 9e ff ff ff jmp 7fb8 801a: 89 f6 mov %esi,%esi 801c: 8b 45 08 mov 0x8(%ebp),%eax 801f: 8b 00 mov (%eax),%eax 8021: 80 38 2e cmpb $0x2e,(%eax) 8024: 0f 85 ae 00 00 00 jne 80d8 802a: 8b 45 08 mov 0x8(%ebp),%eax 802d: 8b 00 mov (%eax),%eax 802f: 80 38 00 cmpb $0x0,(%eax) 8032: 74 05 je 8039 8034: 8b 45 08 mov 0x8(%ebp),%eax 8037: ff 00 incl (%eax) 8039: 8b 45 08 mov 0x8(%ebp),%eax 803c: 8b 00 mov (%eax),%eax 803e: 80 38 2f cmpb $0x2f,(%eax) 8041: 76 0d jbe 8050 8043: 8b 45 08 mov 0x8(%ebp),%eax 8046: 8b 00 mov (%eax),%eax 8048: 80 38 39 cmpb $0x39,(%eax) 804b: 77 03 ja 8050 804d: eb 2d jmp 807c 804f: 90 nop 8050: 83 7d dc 00 cmpl $0x0,0xffffffdc(%ebp) 8054: 75 26 jne 807c 8056: 6a 01 push $0x1 8058: 68 b9 16 00 00 push $0x16b9 805d: 68 00 00 00 00 push $0x0 8062: ff 75 08 pushl 0x8(%ebp) 8065: e8 fc ff ff ff call 8066 806a: 83 c4 10 add $0x10,%esp 806d: 8b 45 08 mov 0x8(%ebp),%eax 8070: c7 40 08 01 00 00 00 movl $0x1,0x8(%eax) 8077: e9 72 01 00 00 jmp 81ee 807c: 8b 45 08 mov 0x8(%ebp),%eax 807f: 8b 00 mov (%eax),%eax 8081: 80 38 2f cmpb $0x2f,(%eax) 8084: 76 52 jbe 80d8 8086: 8b 45 08 mov 0x8(%ebp),%eax 8089: 8b 00 mov (%eax),%eax 808b: 80 38 39 cmpb $0x39,(%eax) 808e: 76 04 jbe 8094 8090: eb 46 jmp 80d8 8092: 89 f6 mov %esi,%esi 8094: dd 45 e8 fldl 0xffffffe8(%ebp) 8097: dd 05 80 0a 00 00 fldl 0xa80 809d: de f9 fdivrp %st,%st(1) 809f: dd 5d e8 fstpl 0xffffffe8(%ebp) 80a2: 8b 45 08 mov 0x8(%ebp),%eax 80a5: 8b 00 mov (%eax),%eax 80a7: 0f b6 00 movzbl (%eax),%eax 80aa: 83 e8 30 sub $0x30,%eax 80ad: 50 push %eax 80ae: db 04 24 fildl (%esp,1) 80b1: 58 pop %eax 80b2: dc 4d e8 fmull 0xffffffe8(%ebp) 80b5: dd 45 f0 fldl 0xfffffff0(%ebp) 80b8: de c1 faddp %st,%st(1) 80ba: dd 5d f0 fstpl 0xfffffff0(%ebp) 80bd: 8b 45 08 mov 0x8(%ebp),%eax 80c0: 8b 00 mov (%eax),%eax 80c2: 80 38 00 cmpb $0x0,(%eax) 80c5: 0f 84 b1 ff ff ff je 807c 80cb: 8b 45 08 mov 0x8(%ebp),%eax 80ce: ff 00 incl (%eax) 80d0: e9 a7 ff ff ff jmp 807c 80d5: 8d 76 00 lea 0x0(%esi),%esi 80d8: 8b 45 08 mov 0x8(%ebp),%eax 80db: 8b 00 mov (%eax),%eax 80dd: 80 38 65 cmpb $0x65,(%eax) 80e0: 74 12 je 80f4 80e2: 8b 45 08 mov 0x8(%ebp),%eax 80e5: 8b 00 mov (%eax),%eax 80e7: 80 38 45 cmpb $0x45,(%eax) 80ea: 74 08 je 80f4 80ec: e9 c5 00 00 00 jmp 81b6 80f1: 8d 76 00 lea 0x0(%esi),%esi 80f4: 8b 45 08 mov 0x8(%ebp),%eax 80f7: 8b 00 mov (%eax),%eax 80f9: 80 38 00 cmpb $0x0,(%eax) 80fc: 74 05 je 8103 80fe: 8b 45 08 mov 0x8(%ebp),%eax 8101: ff 00 incl (%eax) 8103: 8b 45 08 mov 0x8(%ebp),%eax 8106: 8b 00 mov (%eax),%eax 8108: 80 38 2d cmpb $0x2d,(%eax) 810b: 75 16 jne 8123 810d: c7 45 d0 01 00 00 00 movl $0x1,0xffffffd0(%ebp) 8114: 8b 45 08 mov 0x8(%ebp),%eax 8117: 8b 00 mov (%eax),%eax 8119: 80 38 00 cmpb $0x0,(%eax) 811c: 74 05 je 8123 811e: 8b 45 08 mov 0x8(%ebp),%eax 8121: ff 00 incl (%eax) 8123: 90 nop 8124: 8b 45 08 mov 0x8(%ebp),%eax 8127: 8b 00 mov (%eax),%eax 8129: 80 38 2f cmpb $0x2f,(%eax) 812c: 76 46 jbe 8174 812e: 8b 45 08 mov 0x8(%ebp),%eax 8131: 8b 00 mov (%eax),%eax 8133: 80 38 39 cmpb $0x39,(%eax) 8136: 76 04 jbe 813c 8138: eb 3a jmp 8174 813a: 89 f6 mov %esi,%esi 813c: 8b 55 d4 mov 0xffffffd4(%ebp),%edx 813f: 89 d0 mov %edx,%eax 8141: c1 e0 02 shl $0x2,%eax 8144: 01 d0 add %edx,%eax 8146: 8d 14 00 lea (%eax,%eax,1),%edx 8149: 8b 45 08 mov 0x8(%ebp),%eax 814c: 8b 00 mov (%eax),%eax 814e: 0f b6 00 movzbl (%eax),%eax 8151: 8d 04 10 lea (%eax,%edx,1),%eax 8154: 83 e8 30 sub $0x30,%eax 8157: 89 45 d4 mov %eax,0xffffffd4(%ebp) 815a: 8b 45 08 mov 0x8(%ebp),%eax 815d: 8b 00 mov (%eax),%eax 815f: 80 38 00 cmpb $0x0,(%eax) 8162: 0f 84 bc ff ff ff je 8124 8168: 8b 45 08 mov 0x8(%ebp),%eax 816b: ff 00 incl (%eax) 816d: e9 b2 ff ff ff jmp 8124 8172: 89 f6 mov %esi,%esi 8174: 83 7d d0 00 cmpl $0x0,0xffffffd0(%ebp) 8178: 74 05 je 817f 817a: 8d 45 d4 lea 0xffffffd4(%ebp),%eax 817d: f7 18 negl (%eax) 817f: db 45 d4 fildl 0xffffffd4(%ebp) 8182: 8d 64 24 f8 lea 0xfffffff8(%esp,1),%esp 8186: dd 1c 24 fstpl (%esp,1) 8189: 68 00 00 24 40 push $0x40240000 818e: 6a 00 push $0x0 8190: e8 fc ff ff ff call 8191 8195: 83 c4 10 add $0x10,%esp 8198: dd 5d c8 fstpl 0xffffffc8(%ebp) 819b: 8b 4d c8 mov 0xffffffc8(%ebp),%ecx 819e: 8b 5d cc mov 0xffffffcc(%ebp),%ebx 81a1: 89 c8 mov %ecx,%eax 81a3: 89 da mov %ebx,%edx 81a5: dd 45 f0 fldl 0xfffffff0(%ebp) 81a8: 89 45 c8 mov %eax,0xffffffc8(%ebp) 81ab: 89 55 cc mov %edx,0xffffffcc(%ebp) 81ae: dd 45 c8 fldl 0xffffffc8(%ebp) 81b1: de c9 fmulp %st,%st(1) 81b3: dd 5d f0 fstpl 0xfffffff0(%ebp) 81b6: 83 ec 0c sub $0xc,%esp 81b9: 6a 00 push $0x0 81bb: 83 ec 08 sub $0x8,%esp 81be: ff 75 f4 pushl 0xfffffff4(%ebp) 81c1: ff 75 f0 pushl 0xfffffff0(%ebp) 81c4: e8 fc ff ff ff call 81c5 81c9: 83 c4 10 add $0x10,%esp 81cc: 50 push %eax 81cd: 6a 00 push $0x0 81cf: 6a 00 push $0x0 81d1: 6a 03 push $0x3 81d3: 6a 0c push $0xc 81d5: 6a ff push $0xffffffff 81d7: 8b 45 08 mov 0x8(%ebp),%eax 81da: 8b 40 20 mov 0x20(%eax),%eax 81dd: ff 70 0c pushl 0xc(%eax) 81e0: 8b 45 08 mov 0x8(%ebp),%eax 81e3: ff 70 20 pushl 0x20(%eax) 81e6: e8 81 80 ff ff call 26c 81eb: 83 c4 30 add $0x30,%esp 81ee: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 81f1: c9 leave 81f2: c3 ret 81f3: 90 nop