.file "main.c" .version "01.01" gcc2_compiled.: .globl nb_binaires .data .align 4 .type nb_binaires,@object .size nb_binaires,4 nb_binaires: .long 0 .globl liste_binaires .align 4 .type liste_binaires,@object .size liste_binaires,4 liste_binaires: .long 0 .globl nb_os .align 4 .type nb_os,@object .size nb_os,4 nb_os: .long 0 .globl liste_os .align 4 .type liste_os,@object .size liste_os,4 liste_os: .long 0 .globl nb_asm .align 4 .type nb_asm,@object .size nb_asm,4 nb_asm: .long 0 .globl liste_asm .align 4 .type liste_asm,@object .size liste_asm,4 liste_asm: .long 0 .globl p_binaire .align 4 .type p_binaire,@object .size p_binaire,4 p_binaire: .long 0 .globl p_asm .align 4 .type p_asm,@object .size p_asm,4 p_asm: .long 0 .globl p_os .align 4 .type p_os,@object .size p_os,4 p_os: .long 0 .globl nb_sous_fonction .align 4 .type nb_sous_fonction,@object .size nb_sous_fonction,4 nb_sous_fonction: .long 0 .globl liste_sous_fonction .align 4 .type liste_sous_fonction,@object .size liste_sous_fonction,4 liste_sous_fonction: .long 0 .text .align 16 .globl ajouter_sous_fonction .type ajouter_sous_fonction,@function ajouter_sous_fonction: pushl %ebp movl %esp,%ebp subl $8,%esp nop movl $0,-8(%ebp) .L3: movl -8(%ebp),%eax cmpl %eax,nb_sous_fonction jg .L6 jmp .L4 .align 16 .L6: movl -8(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_sous_fonction,%edx movl (%edx,%eax),%eax cmpl %eax,8(%ebp) jne .L7 movl $1,%eax jmp .L2 .align 16 .L7: .L5: incl -8(%ebp) jmp .L3 .align 16 .L4: movl nb_sous_fonction,%eax incl %eax movl %eax,%edx leal 0(,%edx,4),%eax pushl %eax movl liste_sous_fonction,%eax pushl %eax call realloc addl $8,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L8 xorl %eax,%eax jmp .L2 .align 16 .L8: movl -4(%ebp),%eax movl %eax,liste_sous_fonction movl nb_sous_fonction,%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_sous_fonction,%edx movl 8(%ebp),%ecx movl %ecx,(%edx,%eax) incl nb_sous_fonction movl $1,%eax jmp .L2 .align 16 .L2: movl %ebp,%esp popl %ebp ret .Lfe1: .size ajouter_sous_fonction,.Lfe1-ajouter_sous_fonction .align 16 .globl ajouter_binaire .type ajouter_binaire,@function ajouter_binaire: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx movl nb_binaires,%eax incl %eax movl %eax,%edx leal 0(,%edx,8),%eax pushl %eax movl liste_binaires,%eax pushl %eax call realloc addl $8,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L10 xorl %eax,%eax jmp .L9 .align 16 .L10: movl -4(%ebp),%eax movl %eax,liste_binaires movl nb_binaires,%eax movl %eax,%edx leal 0(,%edx,8),%eax movl liste_binaires,%edx movl 8(%ebp),%ecx movl (%ecx),%ebx movl %ebx,(%edx,%eax) movl 4(%ecx),%ebx movl %ebx,4(%edx,%eax) incl nb_binaires movl $1,%eax jmp .L9 .align 16 .L9: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe2: .size ajouter_binaire,.Lfe2-ajouter_binaire .align 16 .globl ajouter_os .type ajouter_os,@function ajouter_os: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx movl nb_os,%eax incl %eax movl %eax,%edx leal 0(,%edx,4),%eax pushl %eax movl liste_os,%eax pushl %eax call realloc addl $8,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L12 xorl %eax,%eax jmp .L11 .align 16 .L12: movl -4(%ebp),%eax movl %eax,liste_os movl nb_os,%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_os,%edx movl 8(%ebp),%ecx movl (%ecx),%ebx movl %ebx,(%edx,%eax) incl nb_os movl $1,%eax jmp .L11 .align 16 .L11: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe3: .size ajouter_os,.Lfe3-ajouter_os .align 16 .globl ajouter_asm .type ajouter_asm,@function ajouter_asm: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx movl nb_asm,%eax incl %eax movl %eax,%edx movl %edx,%eax sall $4,%eax pushl %eax movl liste_asm,%eax pushl %eax call realloc addl $8,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L14 xorl %eax,%eax jmp .L13 .align 16 .L14: movl -4(%ebp),%eax movl %eax,liste_asm movl nb_asm,%eax movl %eax,%edx movl %edx,%eax sall $4,%eax movl liste_asm,%edx movl 8(%ebp),%ecx movl (%ecx),%ebx movl %ebx,(%edx,%eax) movl 4(%ecx),%ebx movl %ebx,4(%edx,%eax) movl 8(%ecx),%ebx movl %ebx,8(%edx,%eax) movl 12(%ecx),%ecx movl %ecx,12(%edx,%eax) incl nb_asm movl $1,%eax jmp .L13 .align 16 .L13: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe4: .size ajouter_asm,.Lfe4-ajouter_asm .align 16 .globl addr_to_section .type addr_to_section,@function addr_to_section: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %esi pushl %ebx nop movl $0,-4(%ebp) .L16: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,8(%eax) jg .L19 jmp .L17 .align 16 .L19: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 4(%eax),%eax movl 4(%eax,%ecx),%edx cmpl %edx,12(%ebp) jl .L20 movl 8(%ebp),%edx movl -4(%ebp),%eax movl %eax,%ecx sall $2,%ecx addl %eax,%ecx leal 0(,%ecx,4),%eax movl 4(%edx),%edx movl 8(%ebp),%ecx movl -4(%ebp),%esi movl %esi,%ebx sall $2,%ebx addl %esi,%ebx leal 0(,%ebx,4),%esi movl 4(%ecx),%ecx movl 4(%edx,%eax),%eax addl 12(%ecx,%esi),%eax cmpl %eax,12(%ebp) jge .L20 jmp .L17 .align 16 .L20: .L18: incl -4(%ebp) jmp .L16 .align 16 .L17: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,8(%eax) jle .L21 movl 16(%ebp),%eax movl 8(%ebp),%edx movl -4(%ebp),%ebx movl %ebx,%ecx sall $2,%ecx addl %ebx,%ecx leal 0(,%ecx,4),%ebx movl 4(%edx),%edx movl (%edx,%ebx),%ecx movl %ecx,(%eax) movl 16(%ebp),%eax movl 8(%ebp),%edx movl -4(%ebp),%ebx movl %ebx,%ecx sall $2,%ecx addl %ebx,%ecx leal 0(,%ecx,4),%ebx movl 4(%edx),%edx movl 4(%edx,%ebx),%ecx movl %ecx,4(%eax) movl 16(%ebp),%eax movl 8(%ebp),%edx movl -4(%ebp),%ebx movl %ebx,%ecx sall $2,%ecx addl %ebx,%ecx leal 0(,%ecx,4),%ebx movl 4(%edx),%edx movl 8(%edx,%ebx),%ecx movl %ecx,8(%eax) movl 16(%ebp),%eax movl 8(%ebp),%edx movl -4(%ebp),%ebx movl %ebx,%ecx sall $2,%ecx addl %ebx,%ecx leal 0(,%ecx,4),%ebx movl 4(%edx),%edx movl 12(%edx,%ebx),%ecx movl %ecx,12(%eax) movl 16(%ebp),%eax movl 8(%ebp),%edx movl -4(%ebp),%ebx movl %ebx,%ecx sall $2,%ecx addl %ebx,%ecx leal 0(,%ecx,4),%ebx movl 4(%edx),%edx movl 16(%edx,%ebx),%ecx movl %ecx,16(%eax) movl $1,%eax jmp .L15 .align 16 jmp .L22 .align 16 .L21: xorl %eax,%eax jmp .L15 .align 16 .L22: .L15: leal -12(%ebp),%esp popl %ebx popl %esi movl %ebp,%esp popl %ebp ret .Lfe5: .size addr_to_section,.Lfe5-addr_to_section .section .rodata .LC0: .string "\t%s();\n" .LC1: .string "_exit" .text .align 16 .globl traiter_call .type traiter_call,@function traiter_call: pushl %ebp movl %esp,%ebp subl $16,%esp leal -16(%ebp),%eax pushl %eax movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call chercher_fonction_par_adresse addl $12,%esp movl %eax,%eax testl %eax,%eax jne .L24 xorl %eax,%eax jmp .L23 .align 16 .L24: cmpl $2,-4(%ebp) jne .L25 movl -8(%ebp),%eax pushl %eax call ajouter_sous_fonction addl $4,%esp .L25: movl -16(%ebp),%eax pushl %eax pushl $.LC0 call printf addl $8,%esp pushl $.LC1 movl -16(%ebp),%eax pushl %eax call strcmp addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L26 movl $1,%eax jmp .L23 .align 16 .L26: xorl %eax,%eax jmp .L23 .align 16 .L23: movl %ebp,%esp popl %ebp ret .Lfe6: .size traiter_call,.Lfe6-traiter_call .align 16 .globl bloc_de_base_init .type bloc_de_base_init,@function bloc_de_base_init: pushl %ebp movl %esp,%ebp movl 8(%ebp),%eax movl 12(%ebp),%edx movl %edx,(%eax) movl 8(%ebp),%eax movl $-1,8(%eax) movl 8(%ebp),%eax movl $-1,12(%eax) movl 8(%ebp),%eax movl $1,16(%eax) .L27: movl %ebp,%esp popl %ebp ret .Lfe7: .size bloc_de_base_init,.Lfe7-bloc_de_base_init .align 16 .globl bloc_de_base_done .type bloc_de_base_done,@function bloc_de_base_done: pushl %ebp movl %esp,%ebp .L28: movl %ebp,%esp popl %ebp ret .Lfe8: .size bloc_de_base_done,.Lfe8-bloc_de_base_done .section .rodata .LC2: .string "[0x%x, ...]\n" .LC3: .string "[0x%x, 0x%x]" .LC4: .string " %d" .LC5: .string "\n" .text .align 16 .globl bloc_de_base_print .type bloc_de_base_print,@function bloc_de_base_print: pushl %ebp movl %esp,%ebp movl 8(%ebp),%eax cmpl $0,16(%eax) je .L30 movl 8(%ebp),%eax movl (%eax),%edx pushl %edx pushl $.LC2 call printf addl $8,%esp jmp .L31 .align 16 .L30: movl 8(%ebp),%eax movl 4(%eax),%edx pushl %edx movl 8(%ebp),%eax movl (%eax),%edx pushl %edx pushl $.LC3 call printf addl $12,%esp movl 8(%ebp),%eax cmpl $0,8(%eax) jl .L32 movl 8(%ebp),%eax movl 8(%eax),%edx pushl %edx pushl $.LC4 call printf addl $8,%esp .L32: movl 8(%ebp),%eax cmpl $0,12(%eax) jl .L33 movl 8(%ebp),%eax movl 12(%eax),%edx pushl %edx pushl $.LC4 call printf addl $8,%esp .L33: pushl $.LC5 call printf addl $4,%esp .L31: .L29: movl %ebp,%esp popl %ebp ret .Lfe9: .size bloc_de_base_print,.Lfe9-bloc_de_base_print .align 16 .globl liste_bloc_de_base_init .type liste_bloc_de_base_init,@function liste_bloc_de_base_init: pushl %ebp movl %esp,%ebp movl 8(%ebp),%eax movl $0,(%eax) movl 8(%ebp),%eax movl $0,8(%eax) .L34: movl %ebp,%esp popl %ebp ret .Lfe10: .size liste_bloc_de_base_init,.Lfe10-liste_bloc_de_base_init .align 16 .globl liste_bloc_de_base_done .type liste_bloc_de_base_done,@function liste_bloc_de_base_done: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx nop movl $0,-4(%ebp) .L36: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L39 jmp .L37 .align 16 .L39: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx leal (%ebx,%ecx),%eax pushl %eax call bloc_de_base_done addl $4,%esp .L38: incl -4(%ebp) jmp .L36 .align 16 .L37: movl 8(%ebp),%eax movl 8(%eax),%edx pushl %edx call free addl $4,%esp .L35: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe11: .size liste_bloc_de_base_done,.Lfe11-liste_bloc_de_base_done .section .rodata .LC6: .string "Ne peut pas allouer de nouveau bloc de base\n" .text .align 16 .globl liste_bloc_de_base_nouveau_bloc .type liste_bloc_de_base_nouveau_bloc,@function liste_bloc_de_base_nouveau_bloc: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx movl 8(%ebp),%eax movl (%eax),%edx incl %edx movl %edx,%eax sall $2,%eax addl %edx,%eax leal 0(,%eax,4),%edx pushl %edx movl 8(%ebp),%eax movl 8(%eax),%edx pushl %edx call realloc addl $8,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L41 pushl $.LC6 call printf addl $4,%esp movl $-1,%eax jmp .L40 .align 16 .L41: movl 8(%ebp),%eax movl -4(%ebp),%edx movl %edx,8(%eax) movl 8(%ebp),%eax incl (%eax) movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax movl 8(%ebp),%edx movl (%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx leal -20(%ecx),%edx movl 8(%eax),%ebx leal (%ebx,%edx),%eax pushl %eax call bloc_de_base_init addl $8,%esp movl 8(%ebp),%eax movl (%eax),%edx decl %edx movl %edx,%eax jmp .L40 .align 16 .L40: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe12: .size liste_bloc_de_base_nouveau_bloc,.Lfe12-liste_bloc_de_base_nouveau_bloc .section .rodata .LC7: .string "on a %d bloc(s) de base\n" .LC8: .string "bloc courant = %d\n" .LC9: .string "bloc %d = " .text .align 16 .globl liste_bloc_de_base_print .type liste_bloc_de_base_print,@function liste_bloc_de_base_print: pushl %ebp movl %esp,%ebp subl $4,%esp pushl %ebx movl 8(%ebp),%eax movl (%eax),%edx pushl %edx pushl $.LC7 call printf addl $8,%esp movl 8(%ebp),%eax movl 4(%eax),%edx pushl %edx pushl $.LC8 call printf addl $8,%esp movl $0,-4(%ebp) .L43: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L46 jmp .L44 .align 16 .L46: movl -4(%ebp),%eax pushl %eax pushl $.LC9 call printf addl $8,%esp movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx leal (%ebx,%ecx),%eax pushl %eax call bloc_de_base_print addl $4,%esp .L45: incl -4(%ebp) jmp .L43 .align 16 .L44: .L42: movl -8(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe13: .size liste_bloc_de_base_print,.Lfe13-liste_bloc_de_base_print .section .rodata .LC10: .string "scinder_bloc: on scinde le 1/2 bloc %d !!!\n" .text .align 16 .globl liste_bloc_de_base_scinder_bloc .type liste_bloc_de_base_scinder_bloc,@function liste_bloc_de_base_scinder_bloc: pushl %ebp movl %esp,%ebp subl $12,%esp pushl %ebx movl 8(%ebp),%eax movl 12(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax cmpl $0,16(%eax,%ecx) je .L48 movl 12(%ebp),%eax pushl %eax pushl $.LC10 call printf addl $8,%esp .L48: movl 16(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call liste_bloc_de_base_nouveau_bloc addl $8,%esp movl %eax,%eax movl %eax,-12(%ebp) cmpl $0,-12(%ebp) jge .L49 movl $-1,%eax jmp .L47 .align 16 .L49: movl 8(%ebp),%eax movl -12(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx addl %ecx,%ebx movl %ebx,-4(%ebp) movl 8(%ebp),%eax movl 12(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx addl %ecx,%ebx movl %ebx,-8(%ebp) movl -4(%ebp),%eax movl -8(%ebp),%edx movl 4(%edx),%ecx movl %ecx,4(%eax) movl -4(%ebp),%eax movl -8(%ebp),%edx movl 8(%edx),%ecx movl %ecx,8(%eax) movl -4(%ebp),%eax movl -8(%ebp),%edx movl 12(%edx),%ecx movl %ecx,12(%eax) movl -4(%ebp),%eax movl $0,16(%eax) movl -8(%ebp),%eax movl 16(%ebp),%ebx decl %ebx movl %ebx,4(%eax) movl -8(%ebp),%eax movl -12(%ebp),%edx movl %edx,8(%eax) movl -8(%ebp),%eax movl $-1,12(%eax) movl -8(%ebp),%eax movl $0,16(%eax) movl 8(%ebp),%eax movl 4(%eax),%edx cmpl %edx,12(%ebp) jne .L50 movl 8(%ebp),%eax movl -12(%ebp),%edx movl %edx,4(%eax) .L50: movl -12(%ebp),%eax jmp .L47 .align 16 .L47: movl -16(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe14: .size liste_bloc_de_base_scinder_bloc,.Lfe14-liste_bloc_de_base_scinder_bloc .align 16 .globl liste_bloc_de_base_chercher_bloc .type liste_bloc_de_base_chercher_bloc,@function liste_bloc_de_base_chercher_bloc: pushl %ebp movl %esp,%ebp subl $8,%esp pushl %ebx nop movl $0,-4(%ebp) .L52: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L55 jmp .L53 .align 16 .L55: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl (%eax,%ecx),%edx cmpl %edx,12(%ebp) jne .L56 movl -4(%ebp),%eax jmp .L51 .align 16 .L56: .L54: incl -4(%ebp) jmp .L52 .align 16 .L53: nop movl $0,-4(%ebp) .L57: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L60 jmp .L58 .align 16 .L60: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx addl %ecx,%ebx movl %ebx,-8(%ebp) movl -8(%ebp),%eax cmpl $0,16(%eax) jne .L61 movl -8(%ebp),%eax movl (%eax),%edx cmpl %edx,12(%ebp) jl .L61 movl -8(%ebp),%eax movl 12(%ebp),%edx cmpl %edx,4(%eax) jl .L61 movl 12(%ebp),%eax pushl %eax movl -4(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call liste_bloc_de_base_scinder_bloc addl $12,%esp movl %eax,%edx movl %edx,%eax jmp .L51 .align 16 .L61: .L59: incl -4(%ebp) jmp .L57 .align 16 .L58: movl $-1,%eax jmp .L51 .align 16 .L51: movl -12(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe15: .size liste_bloc_de_base_chercher_bloc,.Lfe15-liste_bloc_de_base_chercher_bloc .section .rodata .LC11: .string "creer_bloc: nouveau_bloc(%x)\n" .text .align 16 .globl liste_bloc_de_base_creer_bloc .type liste_bloc_de_base_creer_bloc,@function liste_bloc_de_base_creer_bloc: pushl %ebp movl %esp,%ebp subl $4,%esp movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call liste_bloc_de_base_chercher_bloc addl $8,%esp movl %eax,%eax movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jge .L63 movl 12(%ebp),%eax pushl %eax pushl $.LC11 call printf addl $8,%esp movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call liste_bloc_de_base_nouveau_bloc addl $8,%esp movl %eax,%eax movl %eax,-4(%ebp) .L63: movl -4(%ebp),%eax jmp .L62 .align 16 .L62: movl %ebp,%esp popl %ebp ret .Lfe16: .size liste_bloc_de_base_creer_bloc,.Lfe16-liste_bloc_de_base_creer_bloc .section .rodata .LC12: .string "ajouter_inst: on scinde le bloc %d\n" .LC13: .string "ajouter_inst: dans le demi-bloc %d\n" .LC14: .string "liste_bloc_de_base_ajouter_inst: erreur !!!!\n" .text .align 16 .globl liste_bloc_de_base_ajouter_inst .type liste_bloc_de_base_ajouter_inst,@function liste_bloc_de_base_ajouter_inst: pushl %ebp movl %esp,%ebp subl $12,%esp pushl %ebx nop movl $0,-4(%ebp) .L65: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L68 jmp .L66 .align 16 .L68: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx addl %ecx,%ebx movl %ebx,-12(%ebp) movl -12(%ebp),%eax cmpl $0,16(%eax) jne .L69 movl -12(%ebp),%eax movl (%eax),%edx cmpl %edx,12(%ebp) jl .L69 movl -12(%ebp),%eax movl 12(%ebp),%edx cmpl %edx,4(%eax) jl .L69 movl -4(%ebp),%eax pushl %eax pushl $.LC12 call printf addl $8,%esp movl 12(%ebp),%eax pushl %eax movl -4(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call liste_bloc_de_base_scinder_bloc addl $12,%esp movl %eax,%eax movl %eax,-8(%ebp) cmpl $0,-8(%ebp) jge .L70 movl $-1,%eax jmp .L64 .align 16 .L70: movl 8(%ebp),%eax movl 8(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl -8(%ebp),%edx movl %edx,8(%eax,%ecx) movl 8(%ebp),%eax movl 8(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl $-1,12(%eax,%ecx) xorl %eax,%eax jmp .L64 .align 16 .L69: .L67: incl -4(%ebp) jmp .L65 .align 16 .L66: nop movl $0,-4(%ebp) .L71: movl 8(%ebp),%eax movl -4(%ebp),%edx cmpl %edx,(%eax) jg .L74 jmp .L72 .align 16 .L74: movl 8(%ebp),%eax movl -4(%ebp),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%ebx addl %ecx,%ebx movl %ebx,-12(%ebp) movl -12(%ebp),%eax cmpl $0,16(%eax) je .L75 movl -12(%ebp),%eax movl (%eax),%edx cmpl %edx,12(%ebp) jne .L75 movl -4(%ebp),%eax pushl %eax pushl $.LC13 call printf addl $8,%esp movl -12(%ebp),%eax movl $0,16(%eax) movl -12(%ebp),%eax movl 16(%ebp),%edx movl %edx,4(%eax) movl 8(%ebp),%eax movl -4(%ebp),%edx movl %edx,4(%eax) movl $1,%eax jmp .L64 .align 16 .L75: .L73: incl -4(%ebp) jmp .L71 .align 16 .L72: movl 8(%ebp),%eax movl 8(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl 4(%eax,%ecx),%edx incl %edx cmpl %edx,12(%ebp) jne .L76 movl 8(%ebp),%eax movl 8(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl 16(%ebp),%edx movl %edx,4(%eax,%ecx) movl $1,%eax jmp .L64 .align 16 .L76: pushl $.LC14 call printf addl $4,%esp xorl %eax,%eax jmp .L64 .align 16 .L64: movl -16(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe17: .size liste_bloc_de_base_ajouter_inst,.Lfe17-liste_bloc_de_base_ajouter_inst .section .rodata .LC15: .string "impossible de trouver la section contenant 0x%x\n" .LC16: .string "\t%x: " .LC17: .string "%02x" .LC18: .string "\t%s\n" .LC19: .string "branch...\n" .LC20: .string "jump...\n" .LC21: .string "entry=0x%x\n" .LC22: .string "%d octets ont ete desassembles en trop\n" .text .align 16 .globl desassembler_bloc_code .type desassembler_bloc_code,@function desassembler_bloc_code: pushl %ebp movl %esp,%ebp subl $184,%esp pushl %esi pushl %ebx leal -176(%ebp),%eax pushl %eax movl 12(%ebp),%eax pushl %eax movl 16(%ebp),%eax pushl %eax call addr_to_section addl $12,%esp movl %eax,%eax testl %eax,%eax jne .L78 movl 12(%ebp),%eax pushl %eax pushl $.LC15 call printf addl $8,%esp xorl %eax,%eax jmp .L77 .align 16 .L78: movl -164(%ebp),%eax pushl %eax call malloc addl $4,%esp movl %eax,-4(%ebp) cmpl $0,-4(%ebp) jne .L79 xorl %eax,%eax jmp .L77 .align 16 .L79: movl -168(%ebp),%eax pushl %eax movl -164(%ebp),%eax pushl %eax movl -4(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call pread addl $16,%esp movl %eax,%eax cmpl %eax,-164(%ebp) je .L80 movl -4(%ebp),%eax pushl %eax call free addl $4,%esp xorl %eax,%eax jmp .L77 .align 16 .L80: movl 12(%ebp),%eax subl -172(%ebp),%eax movl -4(%ebp),%esi addl %eax,%esi movl %esi,-8(%ebp) movl $0,-12(%ebp) .L81: movl -12(%ebp),%eax cmpl %eax,-164(%ebp) jg .L84 jmp .L82 .align 16 .L84: pushl $36 pushl $0 leal -156(%ebp),%eax pushl %eax call memset addl $12,%esp movl p_asm,%eax leal -156(%ebp),%edx pushl %edx leal -120(%ebp),%edx pushl %edx movl 12(%ebp),%edx addl -12(%ebp),%edx pushl %edx movl -164(%ebp),%edx subl -12(%ebp),%edx pushl %edx movl -8(%ebp),%edx addl -12(%ebp),%edx pushl %edx movl 12(%eax),%ebx call *%ebx addl $20,%esp movl %eax,%eax movl %eax,-20(%ebp) movl 12(%ebp),%eax addl -12(%ebp),%eax pushl %eax pushl $.LC16 call printf addl $8,%esp movl $0,-16(%ebp) .L85: movl -16(%ebp),%eax cmpl %eax,-20(%ebp) jg .L88 jmp .L86 .align 16 .L88: movl -12(%ebp),%eax addl -16(%ebp),%eax movl %eax,%edx addl -8(%ebp),%edx movzbl (%edx),%eax pushl %eax pushl $.LC17 call printf addl $8,%esp .L87: incl -16(%ebp) jmp .L85 .align 16 .L86: leal -120(%ebp),%eax pushl %eax pushl $.LC18 call printf addl $8,%esp movl 12(%ebp),%eax addl -12(%ebp),%eax movl %eax,%edx addl -20(%ebp),%edx leal -1(%edx),%eax pushl %eax movl 12(%ebp),%eax addl -12(%ebp),%eax pushl %eax movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_ajouter_inst addl $12,%esp cmpl $0,-156(%ebp) je .L89 movl -152(%ebp),%eax pushl %eax movl 16(%ebp),%eax pushl %eax call traiter_call addl $8,%esp movl %eax,%eax testl %eax,%eax je .L90 jmp .L82 .align 16 .L90: .L89: cmpl $0,-140(%ebp) je .L91 pushl $.LC19 call printf addl $4,%esp movl 12(%ebp),%eax addl -12(%ebp),%eax movl %eax,%edx addl -20(%ebp),%edx pushl %edx movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_creer_bloc addl $8,%esp movl %eax,%eax movl %eax,-180(%ebp) movl -136(%ebp),%eax pushl %eax movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_creer_bloc addl $8,%esp movl %eax,%eax movl %eax,-184(%ebp) movl 20(%ebp),%eax movl 20(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl -180(%ebp),%edx movl %edx,8(%eax,%ecx) movl 20(%ebp),%eax movl 20(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl -184(%ebp),%edx movl %edx,12(%eax,%ecx) movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_print addl $4,%esp movl _IO_stdin_+4,%eax cmpl %eax,_IO_stdin_+8 ja .L92 pushl $_IO_stdin_ call __uflow addl $4,%esp jmp .L93 .align 16 .L92: movl _IO_stdin_+4,%eax incl _IO_stdin_+4 .L93: .L91: cmpl $0,-148(%ebp) je .L94 pushl $.LC20 call printf addl $4,%esp movl -144(%ebp),%eax pushl %eax movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_creer_bloc addl $8,%esp movl %eax,%eax movl %eax,-180(%ebp) movl 20(%ebp),%eax movl 20(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl -180(%ebp),%edx movl %edx,8(%eax,%ecx) movl 20(%ebp),%eax movl -180(%ebp),%edx movl %edx,4(%eax) movl -144(%ebp),%eax movl %eax,12(%ebp) movl 12(%ebp),%eax subl -172(%ebp),%eax movl -4(%ebp),%esi addl %eax,%esi movl %esi,-8(%ebp) movl $0,-12(%ebp) movl 12(%ebp),%eax pushl %eax pushl $.LC21 call printf addl $8,%esp movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_print addl $4,%esp movl _IO_stdin_+4,%eax cmpl %eax,_IO_stdin_+8 ja .L95 pushl $_IO_stdin_ call __uflow addl $4,%esp jmp .L96 .align 16 .L95: movl _IO_stdin_+4,%eax incl _IO_stdin_+4 .L96: jmp .L83 .align 16 .L94: cmpl $0,-132(%ebp) je .L97 jmp .L82 .align 16 .L97: cmpl $0,-148(%ebp) jne .L98 cmpl $0,-140(%ebp) jne .L98 movl 12(%ebp),%eax addl -12(%ebp),%eax movl %eax,%edx addl -20(%ebp),%edx pushl %edx movl 20(%ebp),%eax pushl %eax call liste_bloc_de_base_chercher_bloc addl $8,%esp movl %eax,%eax movl %eax,-180(%ebp) cmpl $0,-180(%ebp) jl .L99 movl 20(%ebp),%eax movl 20(%ebp),%edx movl 4(%edx),%ecx movl %ecx,%edx sall $2,%edx addl %ecx,%edx leal 0(,%edx,4),%ecx movl 8(%eax),%eax movl -180(%ebp),%edx movl %edx,8(%eax,%ecx) jmp .L82 .align 16 .L99: .L98: movl -20(%ebp),%esi addl %esi,-12(%ebp) .L83: jmp .L81 .align 16 .L82: movl -12(%ebp),%eax cmpl %eax,-164(%ebp) jge .L100 movl -12(%ebp),%eax subl -164(%ebp),%eax pushl %eax pushl $.LC22 call printf addl $8,%esp .L100: movl -4(%ebp),%eax pushl %eax call free addl $4,%esp movl $1,%eax jmp .L77 .align 16 .L77: leal -192(%ebp),%esp popl %ebx popl %esi movl %ebp,%esp popl %ebp ret .Lfe18: .size desassembler_bloc_code,.Lfe18-desassembler_bloc_code .section .rodata .LC23: .string "%s()\n{\n" .LC24: .string "}\n\n" .LC25: .string "bilan pour la fonction %s:\n" .text .align 16 .globl desassembler_code .type desassembler_code,@function desassembler_code: pushl %ebp movl %esp,%ebp subl $36,%esp leal -28(%ebp),%eax pushl %eax movl 12(%ebp),%eax pushl %eax movl 16(%ebp),%eax pushl %eax call chercher_fonction_par_adresse addl $12,%esp movl -28(%ebp),%eax pushl %eax pushl $.LC23 call printf addl $8,%esp movl 12(%ebp),%eax pushl %eax leal -12(%ebp),%eax pushl %eax call liste_bloc_de_base_init addl $8,%esp movl 12(%ebp),%eax pushl %eax leal -12(%ebp),%eax pushl %eax call liste_bloc_de_base_nouveau_bloc addl $8,%esp movl %eax,%eax movl %eax,-32(%ebp) movl -32(%ebp),%eax movl %eax,-8(%ebp) leal -12(%ebp),%eax pushl %eax movl 16(%ebp),%eax pushl %eax movl 12(%ebp),%eax pushl %eax movl 8(%ebp),%eax pushl %eax call desassembler_bloc_code addl $16,%esp movl %eax,%eax movl %eax,-36(%ebp) movl $0,-32(%ebp) .L102: movl -32(%ebp),%eax cmpl %eax,-12(%ebp) jg .L105 jmp .L103 .align 16 .L105: movl -32(%ebp),%edx movl %edx,%eax sall $2,%eax addl %edx,%eax leal 0(,%eax,4),%edx movl -4(%ebp),%eax cmpl $0,16(%eax,%edx) je .L106 leal -12(%ebp),%eax pushl %eax movl 16(%ebp),%eax pushl %eax movl -32(%ebp),%edx movl %edx,%eax sall $2,%eax addl %edx,%eax leal 0(,%eax,4),%edx movl -4(%ebp),%eax movl (%eax,%edx),%edx pushl %edx movl 8(%ebp),%eax pushl %eax call desassembler_bloc_code addl $16,%esp movl %eax,%eax movl %eax,-36(%ebp) .L106: .L104: incl -32(%ebp) jmp .L102 .align 16 .L103: pushl $.LC24 call printf addl $4,%esp movl -28(%ebp),%eax pushl %eax pushl $.LC25 call printf addl $8,%esp leal -12(%ebp),%eax pushl %eax call liste_bloc_de_base_print addl $4,%esp movl _IO_stdin_+4,%eax cmpl %eax,_IO_stdin_+8 ja .L107 pushl $_IO_stdin_ call __uflow addl $4,%esp jmp .L108 .align 16 .L107: movl _IO_stdin_+4,%eax incl _IO_stdin_+4 .L108: leal -12(%ebp),%eax pushl %eax call liste_bloc_de_base_done addl $4,%esp movl -36(%ebp),%eax jmp .L101 .align 16 .L101: movl %ebp,%esp popl %ebp ret .Lfe19: .size desassembler_code,.Lfe19-desassembler_code .align 16 .globl desassembler_point_entree .type desassembler_point_entree,@function desassembler_point_entree: pushl %ebp movl %esp,%ebp movl 12(%ebp),%eax pushl %eax movl 12(%ebp),%eax movl (%eax),%edx pushl %edx movl 8(%ebp),%eax pushl %eax call desassembler_code addl $12,%esp .L109: movl %ebp,%esp popl %ebp ret .Lfe20: .size desassembler_point_entree,.Lfe20-desassembler_point_entree .section .rodata .LC26: .string "usage: disc2 [-f fonction] fichier_executable\n" .text .align 16 .globl usage .type usage,@function usage: pushl %ebp movl %esp,%ebp pushl $.LC26 call printf addl $4,%esp .L110: movl %ebp,%esp popl %ebp ret .Lfe21: .size usage,.Lfe21-usage .section .rodata .LC27: .string "DISC_OS" .LC28: .string "DISC_ASM" .LC29: .string "DISC_BINAIRE" .LC30: .string "Vous devez definir DISC_OS, DISC_ASM, DISC_BINAIRE\n" .LC31: .string "DISC_BINAIRE=" .LC32: .string " %s" .LC33: .string "\nDISC_ASM=" .LC34: .string "\nDISC_OS=" .LC35: .string "-f" .LC36: .string "%s: fonction inexistante\n" .text .align 16 .globl main .type main,@function main: pushl %ebp movl %esp,%ebp subl $68,%esp pushl %ebx movl $0,-48(%ebp) movl $0,-52(%ebp) pushl $bin_elf call ajouter_binaire addl $4,%esp pushl $asm_sparc call ajouter_asm addl $4,%esp pushl $asm_i386 call ajouter_asm addl $4,%esp pushl $os_sunos call ajouter_os addl $4,%esp pushl $.LC27 call getenv addl $4,%esp movl %eax,%eax movl %eax,-4(%ebp) pushl $.LC28 call getenv addl $4,%esp movl %eax,%eax movl %eax,-8(%ebp) pushl $.LC29 call getenv addl $4,%esp movl %eax,%eax movl %eax,-12(%ebp) cmpl $0,-4(%ebp) je .L113 cmpl $0,-8(%ebp) je .L113 cmpl $0,-12(%ebp) jne .L112 jmp .L113 .align 16 .L113: pushl $.LC30 call printf addl $4,%esp movl $-1,%eax jmp .L111 .align 16 .L112: nop movl $0,-16(%ebp) .L114: movl -16(%ebp),%eax cmpl %eax,nb_asm jg .L117 jmp .L115 .align 16 .L117: movl -8(%ebp),%eax pushl %eax movl -16(%ebp),%eax movl %eax,%edx movl %edx,%eax sall $4,%eax movl liste_asm,%edx movl (%edx,%eax),%eax pushl %eax call strcmp addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L118 movl -16(%ebp),%eax movl %eax,%edx movl %edx,%eax sall $4,%eax movl liste_asm,%ecx addl %eax,%ecx movl %ecx,p_asm jmp .L115 .align 16 .L118: .L116: incl -16(%ebp) jmp .L114 .align 16 .L115: nop movl $0,-16(%ebp) .L119: movl -16(%ebp),%eax cmpl %eax,nb_binaires jg .L122 jmp .L120 .align 16 .L122: movl -12(%ebp),%eax pushl %eax movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,8),%eax movl liste_binaires,%edx movl (%edx,%eax),%eax pushl %eax call strcmp addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L123 movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,8),%eax movl liste_binaires,%ecx addl %eax,%ecx movl %ecx,p_binaire jmp .L120 .align 16 .L123: .L121: incl -16(%ebp) jmp .L119 .align 16 .L120: nop movl $0,-16(%ebp) .L124: movl -16(%ebp),%eax cmpl %eax,nb_os jg .L127 jmp .L125 .align 16 .L127: movl -4(%ebp),%eax pushl %eax movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_os,%edx movl (%edx,%eax),%eax pushl %eax call strcmp addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L128 movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_os,%ecx addl %eax,%ecx movl %ecx,p_os jmp .L125 .align 16 .L128: .L126: incl -16(%ebp) jmp .L124 .align 16 .L125: cmpl $0,p_os je .L130 cmpl $0,p_binaire je .L130 cmpl $0,p_asm jne .L129 jmp .L130 .align 16 .L130: pushl $.LC31 call printf addl $4,%esp movl $0,-16(%ebp) .L131: movl -16(%ebp),%eax cmpl %eax,nb_binaires jg .L134 jmp .L132 .align 16 .L134: movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,8),%eax movl liste_binaires,%edx movl (%edx,%eax),%eax pushl %eax pushl $.LC32 call printf addl $8,%esp .L133: incl -16(%ebp) jmp .L131 .align 16 .L132: pushl $.LC33 call printf addl $4,%esp movl $0,-16(%ebp) .L135: movl -16(%ebp),%eax cmpl %eax,nb_asm jg .L138 jmp .L136 .align 16 .L138: movl -16(%ebp),%eax movl %eax,%edx movl %edx,%eax sall $4,%eax movl liste_asm,%edx movl (%edx,%eax),%eax pushl %eax pushl $.LC32 call printf addl $8,%esp .L137: incl -16(%ebp) jmp .L135 .align 16 .L136: pushl $.LC34 call printf addl $4,%esp movl $0,-16(%ebp) .L139: movl -16(%ebp),%eax cmpl %eax,nb_os jg .L142 jmp .L140 .align 16 .L142: movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_os,%edx movl (%edx,%eax),%eax pushl %eax pushl $.LC32 call printf addl $8,%esp .L141: incl -16(%ebp) jmp .L139 .align 16 .L140: pushl $.LC5 call printf addl $4,%esp movl $-1,%eax jmp .L111 .align 16 .L129: nop movl $1,-16(%ebp) .L143: movl -16(%ebp),%eax cmpl %eax,8(%ebp) jg .L146 jmp .L144 .align 16 .L146: pushl $.LC35 movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl 12(%ebp),%edx movl (%edx,%eax),%eax pushl %eax call strcmp addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L147 movl -16(%ebp),%eax incl %eax cmpl %eax,8(%ebp) jle .L147 cmpl $0,-52(%ebp) jne .L147 movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl %eax,%edx addl 12(%ebp),%edx leal 4(%edx),%eax movl (%eax),%edx movl %edx,-52(%ebp) incl -16(%ebp) jmp .L148 .align 16 .L147: cmpl $0,-48(%ebp) jne .L149 movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl 12(%ebp),%edx movl (%edx,%eax),%eax movl %eax,-48(%ebp) jmp .L150 .align 16 .L149: call usage movl $-1,%eax jmp .L111 .align 16 .L150: .L148: .L145: incl -16(%ebp) jmp .L143 .align 16 .L144: cmpl $0,-48(%ebp) jne .L151 call usage movl $-1,%eax jmp .L111 .align 16 .L151: pushl $0 movl -48(%ebp),%eax pushl %eax call open addl $8,%esp movl %eax,%eax movl %eax,-20(%ebp) cmpl $0,-20(%ebp) jge .L152 movl -48(%ebp),%eax pushl %eax call perror addl $4,%esp movl $-1,%eax jmp .L111 .align 16 .L152: pushl $24 pushl $0 leal -44(%ebp),%eax pushl %eax call memset addl $12,%esp movl p_binaire,%eax leal -44(%ebp),%edx pushl %edx movl -20(%ebp),%edx pushl %edx movl 4(%eax),%ebx call *%ebx addl $8,%esp movl %eax,%eax testl %eax,%eax jne .L153 movl $-1,%eax jmp .L111 .align 16 .L153: cmpl $0,-52(%ebp) jne .L154 leal -44(%ebp),%eax pushl %eax movl -20(%ebp),%eax pushl %eax call desassembler_point_entree addl $8,%esp jmp .L155 .align 16 .L154: movl -52(%ebp),%eax cmpb $48,(%eax) jne .L156 leal -68(%ebp),%eax pushl %eax pushl $0 pushl $0 movl -52(%ebp),%eax pushl %eax call strtoul addl $12,%esp movl %eax,%eax pushl %eax leal -44(%ebp),%eax pushl %eax call chercher_fonction_par_adresse addl $12,%esp jmp .L157 .align 16 .L156: leal -68(%ebp),%eax pushl %eax movl -52(%ebp),%eax pushl %eax leal -44(%ebp),%eax pushl %eax call chercher_fonction_par_nom addl $12,%esp movl %eax,%eax testl %eax,%eax jne .L158 movl -52(%ebp),%eax pushl %eax pushl $.LC36 call printf addl $8,%esp movl $-1,%eax jmp .L111 .align 16 .L158: .L157: leal -44(%ebp),%eax pushl %eax movl -60(%ebp),%eax pushl %eax movl -20(%ebp),%eax pushl %eax call desassembler_code addl $12,%esp .L155: nop movl $0,-16(%ebp) .L159: movl -16(%ebp),%eax cmpl %eax,nb_sous_fonction jg .L162 jmp .L160 .align 16 .L162: leal -44(%ebp),%eax pushl %eax movl -16(%ebp),%eax movl %eax,%edx leal 0(,%edx,4),%eax movl liste_sous_fonction,%edx movl (%edx,%eax),%eax pushl %eax movl -20(%ebp),%eax pushl %eax call desassembler_code addl $12,%esp .L161: incl -16(%ebp) jmp .L159 .align 16 .L160: movl -20(%ebp),%eax pushl %eax call close addl $4,%esp xorl %eax,%eax jmp .L111 .align 16 .L111: movl -72(%ebp),%ebx movl %ebp,%esp popl %ebp ret .Lfe22: .size main,.Lfe22-main .ident "GCC: (GNU) 2.7.2"