gbadev.org forum archive

This is a read-only mirror of the content originally found on forum.gbadev.org (now offline), salvaged from Wayback machine copies. A new forum can be found here.

C/C++ > unused function when compiled

#24313 - underthesun - Sun Aug 01, 2004 11:10 am

Hi, im just curious what happens when you compile a function that will never be called by main() in gcc..

suppose you do #include to this humongous array of size 4 megabytes, but then the array is never used at all, never called from in main(), will it still get to be compiled?

if so, then how does c handle unused functions like that when #including stdlib.h or math.h etc..?

I was just under the impression that it'd be like haskell (excuse the freshman 1st year @ uni here ;)), that unused functions wouldnt be compiled, and therefore saves memory.. but then i could be wrong.

cheers
_________________
I am just a gba noob. be gentle :p

#24318 - f(DarkAngel) - Sun Aug 01, 2004 2:51 pm

You can strip them if the whole module is unused (unused doesn't exactly mean a not-called-from-main).
GCC libraries (.a) are actually archives of .o, and if you're running Linux you can easily view what inside. Using strip, you can remove the unused .o files (including your own .o files).

Also, enabling optimizations (not sure about the level, probably -O2+) will strip the unused stuff by default.
_________________
death scream...

#24321 - col - Sun Aug 01, 2004 3:35 pm

f(DarkAngel) wrote:
You can strip them if the whole module is unused (unused doesn't exactly mean a not-called-from-main).
GCC libraries (.a) are actually archives of .o, and if you're running Linux you can easily view what inside. Using strip, you can remove the unused .o files (including your own .o files).

I thought strip was for removing symbols, debug info, section names etc from object files. Can you post the command switches that tell it to remove redundant objects ?
Quote:

Also, enabling optimizations (not sure about the level, probably -O2+) will strip the unused stuff by default.


How can compiler optimizations effect the linking process in the way you describe?

cheers

Col

#24326 - sajiimori - Sun Aug 01, 2004 5:08 pm

Strip only removes symbol and debugging info. Optimizations can remove file-static functions only -- the compiler couldn't know if another module calls a global function.

#24335 - torne - Sun Aug 01, 2004 6:28 pm

sajimori is correct; strip is nothing to do with it. If a function is static and its address is not taken, and there are no calls to it, then GCC will remove it. However, if an externally-visible function is not used, then it will still be included. Any data you link to your executable goes into the executable.

The reason the same doesn't happen when including math.h and so on is that there is no data in those header files; they have only prototypes for functions, not the function bodies themselves. None of them will expand your binary one bit of themselves. However, when it comes to link time, the fact that you've used functions that you have not provided definitions for will be noticed, and the linker will search the libraries you are using for definitions (libc and libgcc, by default, plus anything else you have explicitly added). On a dynamically linked platform, the definitions would not be copied into your binary, merely a list of references showing which libraries have to be loaded; however, on the GBA with no library loader, the definitions are added to your executable for you by the linker. The libraries used are in archive format (.a); a useful feature of the archive format is that when it is used by the linker, only object files which have been referenced from outside the archive are included (plus any internal dependencies they have). Libc and other standard libraries are mostly arranged such that there is one function in each object file; this means that only the functions you have actually referenced in your program are linked, rather than all the ones defined in the header files you have included.

You can obtain the same effect for your own code, if you really want it, by making your auxiliary object files (things like data that you may not need) into archives and including them as libraries at link time; that way, the object files that are needed will be linked, and the files that are not will not. The linker can only operate at a granularity of 'object file', though - individual functions are never included/excluded on their own unless they have a whole object file to themselves.

#24339 - sajiimori - Sun Aug 01, 2004 8:26 pm

It's such a silly limitation, don't you think? I'm still waiting for the day when smart and portable language implementations are available (and practical) for system-level programming.

The 60s were a long time ago, so when do I get to abandon these archaic notions of linkers and makefiles? Just because the output has to run on a 256KB system doesn't mean the compiler shouldn't take advantage of my 256MB system by doing some intelligent program-wide analysis.

#24374 - tepples - Mon Aug 02, 2004 3:10 pm

You could make a preprocessor that puts all the functions into one file and makes them 'static', so that the compiler can do all the work. I've been told that GCC performs at least some interprocedure optimizations between 'static' functions and their callers. The reason linkers are still around is to reduce the amount of time spent compiling functions that have not been changed since the last build during the edit-build-test cycle.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#24383 - torne - Mon Aug 02, 2004 6:59 pm

You might have fun with memory usage if you compile your entire program as a single file. I already have source files that cause GCC to allocate over half a gigabyte of RAM on their own, and if GCC is doing inter-function optimisation, memory usage will grow faster than linearly with size. =)

#24385 - tepples - Mon Aug 02, 2004 7:14 pm

torne wrote:
I already have source files that cause GCC to allocate over half a gigabyte of RAM on their own

Do these source code files containing functions, or do they just contain arrays generated by some sort of bin2c? If the latter, then start using bin2s instead.
_________________
-- Where is he?
-- Who?
-- You know, the human.
-- I think he moved to Tilwick.

#24389 - sajiimori - Mon Aug 02, 2004 9:03 pm

Minimizing recompilation doesn't require such ancient technology. For instance, the C# compiler generates a seperate database that contains a call graph and compiled versions of each function. Of course, it's still a linker in the general sense of the word -- it's just not a traditional C linker (which is what I was referring to). It doesn't put any of the burden (e.g. header maintenance) on the programmer, and it's smart enough to derive lots of useful information, such as whether a given function is ever called.

#24405 - torne - Tue Aug 03, 2004 3:01 am

tepples wrote:
torne wrote:
I already have source files that cause GCC to allocate over half a gigabyte of RAM on their own

Do these source code files containing functions, or do they just contain arrays generated by some sort of bin2c? If the latter, then start using bin2s instead.


No, they're just program code; not even especially large chunks. Mind you, they're not the hungriest things I've ever written; I have source files for non-GBA projects that use over a gigagbyte of memory in GCC to compile, through recursive template instantiation and highly tuned optimisation settings. It's rather amusing when it takes such huge chunks of CPU and RAM to produce object files that are less than a megabyte with full debugging information. ;)

I use objcopy to convert data to objects, not a source code generator.

#24426 - f(DarkAngel) - Tue Aug 03, 2004 4:46 pm

I didn't notice these replies, therefore this's a quite late post.

sajimori wrote:
Strip only removes symbol and debugging info. Optimizations can remove file-static functions only -- the compiler couldn't know if another module calls a global function.

torne wrote:
sajimori is correct; strip is nothing to do with it.

Neither sajimori, nor you are correct.

http://unixhelp.ed.ac.uk/CGI/man-cgi?strip

Strip does remove more than .debug sections. A simple proof would be defining the _NDEBUG and try to strip. Is executable size unchanged?
Such effect will be valid when only --remove-section=".debug" (either a specific debugging section) is passed.

glibc functions are often written as one function per module. So if the symbol in the linked object archive is unrefenced, it will be discarded. However, you still can hardcore link an unused object file, and using strip will remove them.

It is disasppointing that there are still poeple who confuses gcc with gnu c compiler.

gcc != c compiler.

An optimization level passed to gcc affects the flags passed to the subprocesses, and ld, the linker is one of them.
_________________
death scream...

#24442 - sajiimori - Tue Aug 03, 2004 8:19 pm

Quote:

Strip does remove more than .debug sections.

I didn't say it only removes debug sections, or even only information from debug sections. I said it removes symbol and debugging info. The worst that could be said about my statement is that specifying debug info specifically is redundant because it consists of symbols.
Quote:

A simple proof would be defining the _NDEBUG and try to strip.

I don't know what this is supposed to show, exactly. NDEBUG is a preprocessor flag, not a symbol.
Quote:

However, you still can hardcore link an unused object file, and using strip will remove them.

I'm not sure what "hardcore link" means. Google turns up pornography sites.
Quote:

It is disasppointing that there are still poeple who confuses gcc with gnu c compiler.

Don't be so pedantic. We don't go around correcting all your grammar errors.

#24456 - torne - Tue Aug 03, 2004 11:23 pm

Strip removes sections or symbols from an executable. Regardless of whether a library has one object per function or not, it still places all of its code in a single section when statically linked to an executable, and thus strip won't help you. Even if functions were placed in seperate sections, strip does not know how to determine if they are used or not. Read its source if you disagree.

GCC's optimisation flags affect *only the compiler*. None of them touch the assembler or linker. Read its source if you disagree.

You really don't know what you're talking about; if you read the document you linked to, it explains exactly what strip does. Removing symbols does not remove any code; dropping unreferenced symbols would simply give you chunks of code in the text section that are not pointed to by any symbols.

If after all that, you still disagree, please post step-by-step instructions for reproducing the effect you claim, or better still, an example binary before-and-after with the command line used to transform it. Otherwise, please stop posting such rubbish and potentionally confusing programmers who don't have enough experience to realise that what you say is incorrect.

#24457 - torne - Tue Aug 03, 2004 11:25 pm

Oh, and defining NDEBUG does not stop the compiler from emitting debugging information and full symbol data, which is why strip still reduces the size of such a binary; it merely omits certain debugging assertions in some people's code. The compiler does not use preprocessor directives to control its operation; by the time it sees the code, the preprocessor has already run and that information has been discarded.

#24512 - f(DarkAngel) - Wed Aug 04, 2004 8:21 pm

First, i see that i made a mistake about the stripping via -Ox; this optimization i intended to say removes dead code (not the whole unused module), and is enabled at -03.

gcc documentation wrote:
-fweb
Constructs webs as commonly used for register allocation purposes and assign each web individual pseudo register. This allows our register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover. It can, however, make debugging impossible, since variables will no longer stay in a "home register".
Enabled at levels -O3.


However, you still can pass -s to gcc at the linking stage.

"rubbish"? you two flaming to me as a union? if you want it this way, then you'll get what you want.


first, you sajimori, i'm not english/american and i'm not gonna get into how come the whole world is speaking english now, over the blood of millions, rotten political strategies of states, or colonist "great" britain. luckily, there was a guy Richard Stallman who didn't think like captialist s.o.b. ms, there's gcc, free programming is being spread faster, and it includes this commuity. do you find gcc and "world-language" english too irrelevant? then go to a child park or somewhere the heart of capitailism. you'll find many who will say this's a bullshit.
yes i can't speak english perfectly, yes i don't like english either. but remember, this's neither a spell-checking contest, nor a political scene. you got off-topic, here's your answer, what's next now?

sajirmori wrote:
I didn't say it only removes debug sections, or even only information from debug sections. I said it removes symbol and debugging info. The worst that could be said about my statement is that specifying debug info specifically is redundant because it consists of symbols.


Really? And i didn't say that this was reply to you. It was a reply to

col wrote:
I thought strip was for removing symbols, debug info, section names etc from object files


along with the url http://unixhelp.ed.ac.uk/CGI/man-cgi?strip how to use it.

sajirmori wrote:
I don't know what this is supposed to show


If you don't know, shut the fuck up.

sajirmori wrote:
NDEBUG is a preprocessor flag, not a symbol.


Really!? Oh my!

sajirmori wrote:
I'm not sure what "hardcore link" means. Google turns up pornography sites.

Of course it does. "hardcore" is not a term for kiddie-mamas-children or snooby mac lords. It is often an underground term, and is a common replacemt for computer-geek words among hackers. Maybe you first need to get a brain.

Do you want to know what hardcore link means? Open a hex-editor and start typing. Now combine it with the output with the hex editor again. This is what a virus do. Be warned, you'll likely come up with medical websites when you google for "virus".

sajirmori wrote:
Don't be so pedantic. We don't go around correcting all your grammar errors.


Yes, shame on me. I'm so padanctic. That i'm mistaking such verbose things, like gcc. In a gameboy development community, confusing gcc with compiler is unimportant, since the purpose of this forum is english education, while programming is a pretext. I'll be more careful next time. Shame on me.


torne wrote:
GCC's optimisation flags affect *only the compiler*. None of them touch the assembler or linker. Read its source if you disagree.


Yes, i disaggre. It's logical, i too would replied as if i'm a gcc author this way since the "rubbish poster" will give up among the mbs of gcc. But there's an easier way:

http://gcc.gnu.org/onlinedocs/gcc-3.4.1/gcc/Optimize-Options.html

Quotes from the official manual. though they're now way valid over your precious posts, my lord:

Quote:
-fmerge-constants
Attempt to merge identical constants (string constants and floating point constants) across compilation units.
This option is the default for optimized compilation if the assembler and linker support it. Use -fno-merge-constants to inhibit this behavior.

Enabled at levels -O, -O2, -O3, -Os.


-freorder-functions
Reorder basic blocks in the compiled function in order to reduce number of taken branches and improve code locality. This is implemented by using special subsections text.hot for most frequently executed functions and text.unlikely for unlikely executed functions. Reordering is done by the linker so object file format must support named sections and linker must place them in a reasonable way.
Also profile feedback must be available in to make this option effective. See -fprofile-arcs for details.

Enabled at levels -O2, -O3, -Os.


-funsafe-math-optimizations
Allow optimizations for floating-point arithmetic that (a) assume that arguments and results are valid and (b) may violate IEEE or ANSI standards. When used at link-time, it may include libraries or startup files that change the default FPU control word or other similar optimizations.
This option should never be turned on by any -O option since it can result in incorrect output for programs which depend on an exact implementation of IEEE or ISO rules/specifications for math functions.

The default is -fno-unsafe-math-optimizations.


-fdata-sections
Place each function or data item into its own section in the output file if the target supports arbitrary sections. The name of the function or the name of the data item determines the section's name in the output file.
Use these options on systems where the linker can perform optimizations to improve locality of reference in the instruction space. Most systems using the ELF object format and SPARC processors running Solaris 2 have linkers with such optimizations. AIX may have these optimizations in the future.

Only use these options when there are significant benefits from doing so. When you specify these options, the assembler and linker will create larger object and executable files and will also be slower. You will not be able to use gprof on all systems if you specify this option and you may have problems with debugging if you specify both this option and -g.


(reminder)
torne wrote:
GCC's optimisation flags affect *only the compiler*. None of them touch the assembler or linker. Read its source if you disagree.


torne wrote:
You really don't know what you're talking about

what can i do, i'm just a "rubbish".

torne wrote:
If after all that, you still disagree, please post step-by-step instructions for reproducing the effect you claim, or better still, an example binary before-and-after with the command line used to transform it. Otherwise, please stop posting such rubbish and potentionally confusing programmers who don't have enough experience to realise that what you say is incorrect.


i didn't assert it's gonna work on a .elf target. does it work for pe? i majorly write x86, rather than arm, and i always do stripping, and it always works as i said.
i didn't want to do such a thing since this community has a lot smart guys. but let's make an exception for you if you want...

welcome to strip for idiots!

first move your mouse to the start menu and click the assigned button for menu activation, there, choose your text editor.

(pei-i386)

main.c
----------------------------
#include <stdio.h>

int main()
{
printf("one day, christ...one day.");
}
---------------------------

junk .c
----------------------------
const char hh[] = "hi, i'm rubbish!";

int junkfunction()
{
return 666;
}
----------------------------

gcc -c main.c
gcc -c junk.c

objdump -d main.c

Code:


a.exe:     file format pei-i386

Disassembly of section .text:

00401000 <_mainCRTStartup>:
  401000:   55                      push   %ebp
  401001:   89 e5                   mov    %esp,%ebp
  401003:   83 ec 08                sub    $0x8,%esp
  401006:   83 e4 f0                and    $0xfffffff0,%esp
  401009:   a1 00 30 40 00          mov    0x403000,%eax
  40100e:   85 c0                   test   %eax,%eax
  401010:   74 01                   je     401013 <_mainCRTStartup+0x13>
  401012:   cc                      int3   
  401013:   d9 7d fe                fnstcw 0xfffffffe(%ebp)
  401016:   0f b7 45 fe             movzwl 0xfffffffe(%ebp),%eax
  40101a:   25 c0 f0 ff ff          and    $0xfffff0c0,%eax
  40101f:   66 89 45 fe             mov    %ax,0xfffffffe(%ebp)
  401023:   0f b7 45 fe             movzwl 0xfffffffe(%ebp),%eax
  401027:   0d 3f 03 00 00          or     $0x33f,%eax
  40102c:   66 89 45 fe             mov    %ax,0xfffffffe(%ebp)
  401030:   d9 6d fe                fldcw  0xfffffffe(%ebp)
  401033:   c7 04 24 6a 10 40 00    movl   $0x40106a,(%esp)
  40103a:   e8 c1 03 00 00          call   401400 <_cygwin_crt0>
  40103f:   89 ec                   mov    %ebp,%esp
  401041:   5d                      pop    %ebp
  401042:   c3                      ret   
  401043:   90                      nop   
  401044:   90                      nop   
  401045:   90                      nop   
  401046:   90                      nop   
  401047:   90                      nop   
  401048:   90                      nop   
  401049:   90                      nop   
  40104a:   90                      nop   
  40104b:   90                      nop   
  40104c:   90                      nop   
  40104d:   90                      nop   
  40104e:   90                      nop   
  40104f:   90                      nop   

00401050 <___do_sjlj_init>:
  401050:   55                      push   %ebp
  401051:   89 e5                   mov    %esp,%ebp
  401053:   5d                      pop    %ebp
  401054:   e9 07 01 00 00          jmp    401160 <___w32_sharedptr_initialize>
  401059:   90                      nop   
  40105a:   90                      nop   
  40105b:   90                      nop   
  40105c:   90                      nop   
  40105d:   90                      nop   
  40105e:   90                      nop   
  40105f:   90                      nop   

00401060 <.text>:
  401060:   63 68 72                arpl   %bp,0x72(%eax)
  401063:   69 73 74 2e 2e 2e 00    imul   $0x2e2e2e,0x74(%ebx),%esi

0040106a <_main>:
  40106a:   55                      push   %ebp
  40106b:   89 e5                   mov    %esp,%ebp
  40106d:   83 ec 08                sub    $0x8,%esp
  401070:   83 e4 f0                and    $0xfffffff0,%esp
  401073:   b8 00 00 00 00          mov    $0x0,%eax
  401078:   89 45 fc                mov    %eax,0xfffffffc(%ebp)
  40107b:   8b 45 fc                mov    0xfffffffc(%ebp),%eax
  40107e:   e8 4d 03 00 00          call   4013d0 <___chkstk>
  401083:   e8 d8 03 00 00          call   401460 <___main>
  401088:   c7 04 24 60 10 40 00    movl   $0x401060,(%esp)
  40108f:   e8 dc 03 00 00          call   401470 <_printf>
  401094:   c9                      leave 
  401095:   c3                      ret   
  401096:   90                      nop   
  401097:   90                      nop   
  401098:   90                      nop   
  401099:   90                      nop   
  40109a:   90                      nop   
  40109b:   90                      nop   
  40109c:   90                      nop   
  40109d:   90                      nop   
  40109e:   90                      nop   
  40109f:   90                      nop   

004010a0 <_hh>:
  4010a0:   74 65                   je     401107 <___w32_eh_shared_initialize+0x17>
  4010a2:   78 74                   js     401118 <___w32_eh_shared_initialize+0x28>
   ...

[b]004010a5 <_junkfunction>:
  4010a5:   55                      push   %ebp
  4010a6:   89 e5                   mov    %esp,%ebp
  4010a8:   b8 9a 02 00 00          mov    $0x29a,%eax
  4010ad:   5d                      pop    %ebp
  4010ae:   c3                      ret   
  4010af:   90                      nop    [/b]

004010b0 <_w32_atom_suffix>:
  4010b0:   2d 4c 49 42 47          sub    $0x4742494c,%eax
  4010b5:   43                      inc    %ebx
  4010b6:   43                      inc    %ebx
  4010b7:   57                      push   %edi
  4010b8:   33 32                   xor    (%edx),%esi
  4010ba:   2d 45 48 2d 53          sub    $0x532d4845,%eax
  4010bf:   4a                      dec    %edx
  4010c0:   4c                      dec    %esp
  4010c1:   4a                      dec    %edx
  4010c2:   2d 47 54 48 52          sub    $0x52485447,%eax
  4010c7:   2d 43 59 47 57          sub    $0x57475943,%eax
  4010cc:   49                      dec    %ecx
  4010cd:   4e                      dec    %esi
  4010ce:   00 90 55 89 e5 83       add    %dl,0x83e58955(%eax)

004010d0 <___w32_sharedptr_default_unexpected>:
  4010d0:   55                      push   %ebp
  4010d1:   89 e5                   mov    %esp,%ebp
  4010d3:   83 ec 08                sub    $0x8,%esp
  4010d6:   a1 40 30 40 00          mov    0x403040,%eax
  4010db:   ff 50 04                call   *0x4(%eax)
  4010de:   89 ec                   mov    %ebp,%esp
  4010e0:   5d                      pop    %ebp
  4010e1:   c3                      ret   
  4010e2:   8d b4 26 00 00 00 00    lea    0x0(%esi),%esi
  4010e9:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi

004010f0 <___w32_eh_shared_initialize>:
  4010f0:   55                      push   %ebp
  4010f1:   31 c0                   xor    %eax,%eax
  4010f3:   89 e5                   mov    %esp,%ebp
  4010f5:   fc                      cld   
  4010f6:   83 ec 08                sub    $0x8,%esp
  4010f9:   b9 0c 00 00 00          mov    $0xc,%ecx
  4010fe:   89 1c 24                mov    %ebx,(%esp)
  401101:   8b 5d 08                mov    0x8(%ebp),%ebx
  401104:   89 7c 24 04             mov    %edi,0x4(%esp)
  401108:   89 df                   mov    %ebx,%edi
  40110a:   f3 ab                   repz stos %eax,%es:(%edi)
  40110c:   c7 03 30 00 00 00       movl   $0x30,(%ebx)
  401112:   a1 00 20 40 00          mov    0x402000,%eax
  401117:   c7 43 24 ff ff ff ff    movl   $0xffffffff,0x24(%ebx)
  40111e:   c7 43 04 b0 14 40 00    movl   $0x4014b0,0x4(%ebx)
  401125:   89 43 14                mov    %eax,0x14(%ebx)
  401128:   a1 10 30 40 00          mov    0x403010,%eax
  40112d:   c7 43 08 d0 10 40 00    movl   $0x4010d0,0x8(%ebx)
  401134:   8b 15 08 20 40 00       mov    0x402008,%edx
  40113a:   c7 43 1c 00 00 00 00    movl   $0x0,0x1c(%ebx)
  401141:   89 43 20                mov    %eax,0x20(%ebx)
  401144:   a1 04 20 40 00          mov    0x402004,%eax
  401149:   89 53 2c                mov    %edx,0x2c(%ebx)
  40114c:   89 43 28                mov    %eax,0x28(%ebx)
  40114f:   8b 1c 24                mov    (%esp),%ebx
  401152:   8b 7c 24 04             mov    0x4(%esp),%edi
  401156:   89 ec                   mov    %ebp,%esp
  401158:   5d                      pop    %ebp
  401159:   c3                      ret   
  40115a:   8d b6 00 00 00 00       lea    0x0(%esi),%esi

00401160 <___w32_sharedptr_initialize>:
  401160:   55                      push   %ebp
  401161:   89 e5                   mov    %esp,%ebp
  401163:   83 ec 58                sub    $0x58,%esp
  401166:   89 75 f8                mov    %esi,0xfffffff8(%ebp)
  401169:   a1 40 30 40 00          mov    0x403040,%eax
  40116e:   89 7d fc                mov    %edi,0xfffffffc(%ebp)
  401171:   85 c0                   test   %eax,%eax
  401173:   74 0b                   je     401180 <___w32_sharedptr_initialize+0x20>
  401175:   8b 75 f8                mov    0xfffffff8(%ebp),%esi
  401178:   8b 7d fc                mov    0xfffffffc(%ebp),%edi
  40117b:   89 ec                   mov    %ebp,%esp
  40117d:   5d                      pop    %ebp
  40117e:   c3                      ret   
  40117f:   90                      nop   
  401180:   fc                      cld   
  401181:   be b0 10 40 00          mov    $0x4010b0,%esi
  401186:   c7 45 b8 41 41 41 41    movl   $0x41414141,0xffffffb8(%ebp)
  40118d:   8d 7d d8                lea    0xffffffd8(%ebp),%edi
  401190:   b9 07 00 00 00          mov    $0x7,%ecx
  401195:   c7 45 bc 41 41 41 41    movl   $0x41414141,0xffffffbc(%ebp)
  40119c:   c7 45 c0 41 41 41 41    movl   $0x41414141,0xffffffc0(%ebp)
  4011a3:   c7 45 c4 41 41 41 41    movl   $0x41414141,0xffffffc4(%ebp)
  4011aa:   c7 45 c8 41 41 41 41    movl   $0x41414141,0xffffffc8(%ebp)
  4011b1:   c7 45 cc 41 41 41 41    movl   $0x41414141,0xffffffcc(%ebp)
  4011b8:   c7 45 d0 41 41 41 41    movl   $0x41414141,0xffffffd0(%ebp)
  4011bf:   c7 45 d4 41 41 41 41    movl   $0x41414141,0xffffffd4(%ebp)
  4011c6:   0f b7 05 cc 10 40 00    movzwl 0x4010cc,%eax
  4011cd:   f3 a5                   repz movsl %ds:(%esi),%es:(%edi)
  4011cf:   66 89 07                mov    %ax,(%edi)
  4011d2:   0f b6 05 ce 10 40 00    movzbl 0x4010ce,%eax
  4011d9:   88 47 02                mov    %al,0x2(%edi)
  4011dc:   8d 7d b8                lea    0xffffffb8(%ebp),%edi
  4011df:   89 3c 24                mov    %edi,(%esp)
  4011e2:   e8 f9 04 00 00          call   4016e0 <_FindAtomA@4>
  4011e7:   0f b7 c0                movzwl %ax,%eax
  4011ea:   83 ec 04                sub    $0x4,%esp
  4011ed:   66 85 c0                test   %ax,%ax
  4011f0:   0f 85 8a 00 00 00       jne    401280 <___w32_sharedptr_initialize+0x120>
  4011f6:   c7 04 24 30 00 00 00    movl   $0x30,(%esp)
  4011fd:   e8 9e 02 00 00          call   4014a0 <_malloc>
  401202:   85 c0                   test   %eax,%eax
  401204:   89 c6                   mov    %eax,%esi
  401206:   0f 84 80 00 00 00       je     40128c <___w32_sharedptr_initialize+0x12c>
  40120c:   89 04 24                mov    %eax,(%esp)
  40120f:   e8 dc fe ff ff          call   4010f0 <___w32_eh_shared_initialize>
  401214:   89 34 24                mov    %esi,(%esp)
  401217:   e8 84 00 00 00          call   4012a0 <___w32_sharedptr_set>
  40121c:   66 85 c0                test   %ax,%ax
  40121f:   74 3a                   je     40125b <___w32_sharedptr_initialize+0xfb>
  401221:   c7 44 24 08 a0 13 40    movl   $0x4013a0,0x8(%esp)
  401228:   00
  401229:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  401230:   00
  401231:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  401238:   e8 53 02 00 00          call   401490 <_pthread_atfork>
  40123d:   8d 76 00                lea    0x0(%esi),%esi
  401240:   89 35 40 30 40 00       mov    %esi,0x403040
  401246:   8d 46 04                lea    0x4(%esi),%eax
  401249:   a3 30 30 40 00          mov    %eax,0x403030
  40124e:   8d 46 08                lea    0x8(%esi),%eax
  401251:   a3 50 30 40 00          mov    %eax,0x403050
  401256:   e9 1a ff ff ff          jmp    401175 <___w32_sharedptr_initialize+0x15>
  40125b:   89 34 24                mov    %esi,(%esp)
  40125e:   e8 1d 02 00 00          call   401480 <_free>
  401263:   89 3c 24                mov    %edi,(%esp)
  401266:   e8 75 04 00 00          call   4016e0 <_FindAtomA@4>
  40126b:   83 ec 04                sub    $0x4,%esp
  40126e:   0f b7 c0                movzwl %ax,%eax
  401271:   eb 0d                   jmp    401280 <___w32_sharedptr_initialize+0x120>
  401273:   90                      nop   
  401274:   90                      nop   
  401275:   90                      nop   
  401276:   90                      nop   
  401277:   90                      nop   
  401278:   90                      nop   
  401279:   90                      nop   
  40127a:   90                      nop   
  40127b:   90                      nop   
  40127c:   90                      nop   
  40127d:   90                      nop   
  40127e:   90                      nop   
  40127f:   90                      nop   
  401280:   89 04 24                mov    %eax,(%esp)
  401283:   e8 a8 00 00 00          call   401330 <___w32_sharedptr_get>
  401288:   89 c6                   mov    %eax,%esi
  40128a:   eb b4                   jmp    401240 <___w32_sharedptr_initialize+0xe0>
  40128c:   e8 1f 02 00 00          call   4014b0 <_abort>
  401291:   eb 0d                   jmp    4012a0 <___w32_sharedptr_set>
  401293:   90                      nop   
  401294:   90                      nop   
  401295:   90                      nop   
  401296:   90                      nop   
  401297:   90                      nop   
  401298:   90                      nop   
  401299:   90                      nop   
  40129a:   90                      nop   
  40129b:   90                      nop   
  40129c:   90                      nop   
  40129d:   90                      nop   
  40129e:   90                      nop   
  40129f:   90                      nop   

004012a0 <___w32_sharedptr_set>:
  4012a0:   55                      push   %ebp
  4012a1:   b8 1f 00 00 00          mov    $0x1f,%eax
  4012a6:   89 e5                   mov    %esp,%ebp
  4012a8:   57                      push   %edi
  4012a9:   ba 01 00 00 00          mov    $0x1,%edx
  4012ae:   56                      push   %esi
  4012af:   53                      push   %ebx
  4012b0:   83 ec 5c                sub    $0x5c,%esp
  4012b3:   8b 5d 08                mov    0x8(%ebp),%ebx
  4012b6:   8d 76 00                lea    0x0(%esi),%esi
  4012b9:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  4012c0:   85 da                   test   %ebx,%edx
  4012c2:   b1 41                   mov    $0x41,%cl
  4012c4:   75 02                   jne    4012c8 <___w32_sharedptr_set+0x28>
  4012c6:   b1 61                   mov    $0x61,%cl
  4012c8:   88 4c 28 a8             mov    %cl,0xffffffa8(%eax,%ebp,1)
  4012cc:   01 d2                   add    %edx,%edx
  4012ce:   48                      dec    %eax
  4012cf:   79 ef                   jns    4012c0 <___w32_sharedptr_set+0x20>
  4012d1:   fc                      cld   
  4012d2:   be b0 10 40 00          mov    $0x4010b0,%esi
  4012d7:   8d 7d c8                lea    0xffffffc8(%ebp),%edi
  4012da:   0f b7 05 cc 10 40 00    movzwl 0x4010cc,%eax
  4012e1:   b9 07 00 00 00          mov    $0x7,%ecx
  4012e6:   f3 a5                   repz movsl %ds:(%esi),%es:(%edi)
  4012e8:   66 89 07                mov    %ax,(%edi)
  4012eb:   0f b6 05 ce 10 40 00    movzbl 0x4010ce,%eax
  4012f2:   88 47 02                mov    %al,0x2(%edi)
  4012f5:   8d 45 a8                lea    0xffffffa8(%ebp),%eax
  4012f8:   89 04 24                mov    %eax,(%esp)
  4012fb:   e8 f0 03 00 00          call   4016f0 <_AddAtomA@4>
  401300:   0f b7 f0                movzwl %ax,%esi
  401303:   83 ec 04                sub    $0x4,%esp
  401306:   66 85 f6                test   %si,%si
  401309:   75 0c                   jne    401317 <___w32_sharedptr_set+0x77>
  40130b:   31 d2                   xor    %edx,%edx
  40130d:   8d 65 f4                lea    0xfffffff4(%ebp),%esp
  401310:   89 d0                   mov    %edx,%eax
  401312:   5b                      pop    %ebx
  401313:   5e                      pop    %esi
  401314:   5f                      pop    %edi
  401315:   5d                      pop    %ebp
  401316:   c3                      ret   
  401317:   89 34 24                mov    %esi,(%esp)
  40131a:   e8 11 00 00 00          call   401330 <___w32_sharedptr_get>
  40131f:   39 d8                   cmp    %ebx,%eax
  401321:   89 f2                   mov    %esi,%edx
  401323:   75 e6                   jne    40130b <___w32_sharedptr_set+0x6b>
  401325:   eb e6                   jmp    40130d <___w32_sharedptr_set+0x6d>
  401327:   89 f6                   mov    %esi,%esi
  401329:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi

00401330 <___w32_sharedptr_get>:
  401330:   55                      push   %ebp
  401331:   89 e5                   mov    %esp,%ebp
  401333:   8d 55 b8                lea    0xffffffb8(%ebp),%edx
  401336:   53                      push   %ebx
  401337:   83 ec 54                sub    $0x54,%esp
  40133a:   31 db                   xor    %ebx,%ebx
  40133c:   0f b7 45 08             movzwl 0x8(%ebp),%eax
  401340:   c7 44 24 08 3f 00 00    movl   $0x3f,0x8(%esp)
  401347:   00
  401348:   89 54 24 04             mov    %edx,0x4(%esp)
  40134c:   89 04 24                mov    %eax,(%esp)
  40134f:   e8 ac 03 00 00          call   401700 <_GetAtomNameA@12>
  401354:   83 ec 0c                sub    $0xc,%esp
  401357:   85 c0                   test   %eax,%eax
  401359:   74 31                   je     40138c <___w32_sharedptr_get+0x5c>
  40135b:   b8 1f 00 00 00          mov    $0x1f,%eax
  401360:   ba 01 00 00 00          mov    $0x1,%edx
  401365:   8d 74 26 00             lea    0x0(%esi),%esi
  401369:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401370:   80 7c 28 b8 41          cmpb   $0x41,0xffffffb8(%eax,%ebp,1)
  401375:   74 11                   je     401388 <___w32_sharedptr_get+0x58>
  401377:   01 d2                   add    %edx,%edx
  401379:   48                      dec    %eax
  40137a:   79 f4                   jns    401370 <___w32_sharedptr_get+0x40>
  40137c:   83 3b 30                cmpl   $0x30,(%ebx)
  40137f:   75 0b                   jne    40138c <___w32_sharedptr_get+0x5c>
  401381:   89 d8                   mov    %ebx,%eax
  401383:   8b 5d fc                mov    0xfffffffc(%ebp),%ebx
  401386:   c9                      leave 
  401387:   c3                      ret   
  401388:   09 d3                   or     %edx,%ebx
  40138a:   eb eb                   jmp    401377 <___w32_sharedptr_get+0x47>
  40138c:   e8 1f 01 00 00          call   4014b0 <_abort>
  401391:   eb 0d                   jmp    4013a0 <___w32_sharedptr_fixup_after_fork>
  401393:   90                      nop   
  401394:   90                      nop   
  401395:   90                      nop   
  401396:   90                      nop   
  401397:   90                      nop   
  401398:   90                      nop   
  401399:   90                      nop   
  40139a:   90                      nop   
  40139b:   90                      nop   
  40139c:   90                      nop   
  40139d:   90                      nop   
  40139e:   90                      nop   
  40139f:   90                      nop   

004013a0 <___w32_sharedptr_fixup_after_fork>:
  4013a0:   55                      push   %ebp
  4013a1:   89 e5                   mov    %esp,%ebp
  4013a3:   83 ec 08                sub    $0x8,%esp
  4013a6:   a1 40 30 40 00          mov    0x403040,%eax
  4013ab:   89 04 24                mov    %eax,(%esp)
  4013ae:   e8 ed fe ff ff          call   4012a0 <___w32_sharedptr_set>
  4013b3:   66 85 c0                test   %ax,%ax
  4013b6:   74 04                   je     4013bc <___w32_sharedptr_fixup_after_fork+0x1c>
  4013b8:   89 ec                   mov    %ebp,%esp
  4013ba:   5d                      pop    %ebp
  4013bb:   c3                      ret   
  4013bc:   e8 ef 00 00 00          call   4014b0 <_abort>
  4013c1:   90                      nop   
  4013c2:   90                      nop   
  4013c3:   90                      nop   
  4013c4:   90                      nop   
  4013c5:   90                      nop   
  4013c6:   90                      nop   
  4013c7:   90                      nop   
  4013c8:   90                      nop   
  4013c9:   90                      nop   
  4013ca:   90                      nop   
  4013cb:   90                      nop   
  4013cc:   90                      nop   
  4013cd:   90                      nop   
  4013ce:   90                      nop   
  4013cf:   90                      nop   

004013d0 <___chkstk>:
  4013d0:   51                      push   %ecx
  4013d1:   89 e1                   mov    %esp,%ecx
  4013d3:   83 c1 08                add    $0x8,%ecx

004013d6 <probe>:
  4013d6:   3d 00 10 00 00          cmp    $0x1000,%eax
  4013db:   72 10                   jb     4013ed <done>
  4013dd:   81 e9 00 10 00 00       sub    $0x1000,%ecx
  4013e3:   83 09 00                orl    $0x0,(%ecx)
  4013e6:   2d 00 10 00 00          sub    $0x1000,%eax
  4013eb:   eb e9                   jmp    4013d6 <probe>

004013ed <done>:
  4013ed:   29 c1                   sub    %eax,%ecx
  4013ef:   83 09 00                orl    $0x0,(%ecx)
  4013f2:   89 e0                   mov    %esp,%eax
  4013f4:   89 cc                   mov    %ecx,%esp
  4013f6:   8b 08                   mov    (%eax),%ecx
  4013f8:   8b 40 04                mov    0x4(%eax),%eax
  4013fb:   ff e0                   jmp    *%eax
  4013fd:   90                      nop   
  4013fe:   90                      nop   
  4013ff:   90                      nop   

00401400 <_cygwin_crt0>:
  401400:   55                      push   %ebp
  401401:   89 e5                   mov    %esp,%ebp
  401403:   83 ec 18                sub    $0x18,%esp
  401406:   89 75 fc                mov    %esi,0xfffffffc(%ebp)
  401409:   8b 75 08                mov    0x8(%ebp),%esi
  40140c:   89 5d f8                mov    %ebx,0xfffffff8(%ebp)
  40140f:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  401416:   00
  401417:   89 34 24                mov    %esi,(%esp)
  40141a:   e8 a1 00 00 00          call   4014c0 <__cygwin_crt0_common@8>
  40141f:   83 ec 08                sub    $0x8,%esp
  401422:   85 c0                   test   %eax,%eax
  401424:   74 0d                   je     401433 <_cygwin_crt0+0x33>
  401426:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  40142d:   ff 15 98 40 40 00       call   *0x404098
  401433:   81 ec b0 00 00 00       sub    $0xb0,%esp
  401439:   8d 5c 24 08             lea    0x8(%esp),%ebx
  40143d:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  401444:   00
  401445:   89 5c 24 04             mov    %ebx,0x4(%esp)
  401449:   89 34 24                mov    %esi,(%esp)
  40144c:   e8 6f 00 00 00          call   4014c0 <__cygwin_crt0_common@8>
  401451:   83 ec 08                sub    $0x8,%esp
  401454:   89 1c 24                mov    %ebx,(%esp)
  401457:   eb d4                   jmp    40142d <_cygwin_crt0+0x2d>
  401459:   90                      nop   
  40145a:   90                      nop   
  40145b:   90                      nop   
  40145c:   90                      nop   
  40145d:   90                      nop   
  40145e:   90                      nop   
  40145f:   90                      nop   

00401460 <___main>:
  401460:   ff 25 88 40 40 00       jmp    *0x404088
  401466:   90                      nop   
  401467:   90                      nop   
   ...

00401470 <_printf>:
  401470:   ff 25 a4 40 40 00       jmp    *0x4040a4
  401476:   90                      nop   
  401477:   90                      nop   
   ...

00401480 <_free>:
  401480:   ff 25 9c 40 40 00       jmp    *0x40409c
  401486:   90                      nop   
  401487:   90                      nop   
   ...

00401490 <_pthread_atfork>:
  401490:   ff 25 a8 40 40 00       jmp    *0x4040a8
  401496:   90                      nop   
  401497:   90                      nop   
   ...

004014a0 <_malloc>:
  4014a0:   ff 25 a0 40 40 00       jmp    *0x4040a0
  4014a6:   90                      nop   
  4014a7:   90                      nop   
   ...

004014b0 <_abort>:
  4014b0:   ff 25 8c 40 40 00       jmp    *0x40408c
  4014b6:   90                      nop   
  4014b7:   90                      nop   
   ...

004014c0 <__cygwin_crt0_common@8>:
  4014c0:   55                      push   %ebp
  4014c1:   31 c0                   xor    %eax,%eax
  4014c3:   89 e5                   mov    %esp,%ebp
  4014c5:   53                      push   %ebx
  4014c6:   83 ec 04                sub    $0x4,%esp
  4014c9:   8b 5d 0c                mov    0xc(%ebp),%ebx
  4014cc:   85 db                   test   %ebx,%ebx
  4014ce:   0f 84 ec 00 00 00       je     4015c0 <__cygwin_crt0_common@8+0x100>
  4014d4:   c7 43 04 a8 00 00 00    movl   $0xa8,0x4(%ebx)
  4014db:   31 c9                   xor    %ecx,%ecx
  4014dd:   ba 74 00 00 00          mov    $0x74,%edx
  4014e2:   c7 43 08 ed 03 00 00    movl   $0x3ed,0x8(%ebx)
  4014e9:   85 c0                   test   %eax,%eax
  4014eb:   c7 43 0c 0a 00 00 00    movl   $0xa,0xc(%ebx)
  4014f2:   89 8b 80 00 00 00       mov    %ecx,0x80(%ebx)
  4014f8:   89 93 84 00 00 00       mov    %edx,0x84(%ebx)
  4014fe:   c7 43 2c 30 17 40 00    movl   $0x401730,0x2c(%ebx)
  401505:   c7 43 30 3c 17 40 00    movl   $0x40173c,0x30(%ebx)
  40150c:   c7 43 14 20 30 40 00    movl   $0x403020,0x14(%ebx)
  401513:   0f 84 9b 00 00 00       je     4015b4 <__cygwin_crt0_common@8+0xf4>
  401519:   8b 83 a4 00 00 00       mov    0xa4(%ebx),%eax
  40151f:   a3 24 30 40 00          mov    %eax,0x403024
  401524:   c7 43 78 00 00 00 00    movl   $0x0,0x78(%ebx)
  40152b:   8b 45 08                mov    0x8(%ebp),%eax
  40152e:   c7 43 48 c0 16 40 00    movl   $0x4016c0,0x48(%ebx)
  401535:   c7 43 4c b0 16 40 00    movl   $0x4016b0,0x4c(%ebx)
  40153c:   89 43 28                mov    %eax,0x28(%ebx)
  40153f:   8b 45 00                mov    0x0(%ebp),%eax
  401542:   c7 43 50 a0 16 40 00    movl   $0x4016a0,0x50(%ebx)
  401549:   c7 43 54 90 16 40 00    movl   $0x401690,0x54(%ebx)
  401550:   c7 43 24 28 30 40 00    movl   $0x403028,0x24(%ebx)
  401557:   89 03                   mov    %eax,(%ebx)
  401559:   c7 43 18 a0 14 40 00    movl   $0x4014a0,0x18(%ebx)
  401560:   c7 43 1c 80 14 40 00    movl   $0x401480,0x1c(%ebx)
  401567:   c7 43 20 80 16 40 00    movl   $0x401680,0x20(%ebx)
  40156e:   c7 43 44 70 16 40 00    movl   $0x401670,0x44(%ebx)
  401575:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  40157c:   e8 8f 01 00 00          call   401710 <_GetModuleHandleA@4>
  401581:   89 43 7c                mov    %eax,0x7c(%ebx)
  401584:   83 ec 04                sub    $0x4,%esp
  401587:   c7 43 34 00 20 40 00    movl   $0x402000,0x34(%ebx)
  40158e:   c7 43 38 10 20 40 00    movl   $0x402010,0x38(%ebx)
  401595:   c7 43 3c 00 30 40 00    movl   $0x403000,0x3c(%ebx)
  40159c:   c7 43 40 80 30 40 00    movl   $0x403080,0x40(%ebx)
  4015a3:   e8 98 00 00 00          call   401640 <__pei386_runtime_relocator>
  4015a8:   b8 01 00 00 00          mov    $0x1,%eax
  4015ad:   8b 5d fc                mov    0xfffffffc(%ebp),%ebx
  4015b0:   c9                      leave 
  4015b1:   c2 08 00                ret    $0x8
  4015b4:   c7 43 10 24 30 40 00    movl   $0x403024,0x10(%ebx)
  4015bb:   e9 64 ff ff ff          jmp    401524 <__cygwin_crt0_common@8+0x64>
  4015c0:   c7 04 24 08 00 00 00    movl   $0x8,(%esp)
  4015c7:   e8 04 01 00 00          call   4016d0 <_cygwin_internal>
  4015cc:   89 c2                   mov    %eax,%edx
  4015ce:   31 c0                   xor    %eax,%eax
  4015d0:   83 fa ff                cmp    $0xffffffff,%edx
  4015d3:   74 d8                   je     4015ad <__cygwin_crt0_common@8+0xed>
  4015d5:   89 d3                   mov    %edx,%ebx
  4015d7:   b8 01 00 00 00          mov    $0x1,%eax
  4015dc:   e9 f3 fe ff ff          jmp    4014d4 <__cygwin_crt0_common@8+0x14>
  4015e1:   90                      nop   
  4015e2:   90                      nop   
  4015e3:   90                      nop   
  4015e4:   90                      nop   
  4015e5:   90                      nop   
  4015e6:   90                      nop   
  4015e7:   90                      nop   
  4015e8:   90                      nop   
  4015e9:   90                      nop   
  4015ea:   90                      nop   
  4015eb:   90                      nop   
  4015ec:   90                      nop   
  4015ed:   90                      nop   
  4015ee:   90                      nop   
  4015ef:   90                      nop   

004015f0 <_dll_crt0__FP11per_process>:
  4015f0:   ff 25 98 40 40 00       jmp    *0x404098
  4015f6:   90                      nop   
  4015f7:   90                      nop   
   ...

00401600 <_do_pseudo_reloc>:
  401600:   55                      push   %ebp
  401601:   89 e5                   mov    %esp,%ebp
  401603:   8b 4d 08                mov    0x8(%ebp),%ecx
  401606:   56                      push   %esi
  401607:   8b 75 10                mov    0x10(%ebp),%esi
  40160a:   53                      push   %ebx
  40160b:   8b 5d 0c                mov    0xc(%ebp),%ebx
  40160e:   39 d9                   cmp    %ebx,%ecx
  401610:   73 20                   jae    401632 <_do_pseudo_reloc+0x32>
  401612:   8d b4 26 00 00 00 00    lea    0x0(%esi),%esi
  401619:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401620:   8b 41 04                mov    0x4(%ecx),%eax
  401623:   89 f2                   mov    %esi,%edx
  401625:   01 c2                   add    %eax,%edx
  401627:   8b 01                   mov    (%ecx),%eax
  401629:   83 c1 08                add    $0x8,%ecx
  40162c:   01 02                   add    %eax,(%edx)
  40162e:   39 d9                   cmp    %ebx,%ecx
  401630:   72 ee                   jb     401620 <_do_pseudo_reloc+0x20>
  401632:   5b                      pop    %ebx
  401633:   5e                      pop    %esi
  401634:   5d                      pop    %ebp
  401635:   c3                      ret   
  401636:   8d 76 00                lea    0x0(%esi),%esi
  401639:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi

00401640 <__pei386_runtime_relocator>:
  401640:   55                      push   %ebp
  401641:   89 e5                   mov    %esp,%ebp
  401643:   83 ec 18                sub    $0x18,%esp
  401646:   c7 44 24 08 00 00 40    movl   $0x400000,0x8(%esp)
  40164d:   00
  40164e:   c7 44 24 04 00 30 40    movl   $0x403000,0x4(%esp)
  401655:   00
  401656:   c7 04 24 00 30 40 00    movl   $0x403000,(%esp)
  40165d:   e8 9e ff ff ff          call   401600 <_do_pseudo_reloc>
  401662:   89 ec                   mov    %ebp,%esp
  401664:   5d                      pop    %ebp
  401665:   c3                      ret   
  401666:   90                      nop   
  401667:   90                      nop   
  401668:   90                      nop   
  401669:   90                      nop   
  40166a:   90                      nop   
  40166b:   90                      nop   
  40166c:   90                      nop   
  40166d:   90                      nop   
  40166e:   90                      nop   
  40166f:   90                      nop   

00401670 <_calloc>:
  401670:   ff 25 90 40 40 00       jmp    *0x404090
  401676:   90                      nop   
  401677:   90                      nop   
   ...

00401680 <_realloc>:
  401680:   ff 25 ac 40 40 00       jmp    *0x4040ac
  401686:   90                      nop   
  401687:   90                      nop   
   ...

00401690 <_cygwin_premain3>:
  401690:   55                      push   %ebp
  401691:   89 e5                   mov    %esp,%ebp
  401693:   5d                      pop    %ebp
  401694:   c3                      ret   
  401695:   90                      nop   
  401696:   90                      nop   
  401697:   90                      nop   
  401698:   90                      nop   
  401699:   90                      nop   
  40169a:   90                      nop   
  40169b:   90                      nop   
  40169c:   90                      nop   
  40169d:   90                      nop   
  40169e:   90                      nop   
  40169f:   90                      nop   

004016a0 <_cygwin_premain2>:
  4016a0:   55                      push   %ebp
  4016a1:   89 e5                   mov    %esp,%ebp
  4016a3:   5d                      pop    %ebp
  4016a4:   c3                      ret   
  4016a5:   90                      nop   
  4016a6:   90                      nop   
  4016a7:   90                      nop   
  4016a8:   90                      nop   
  4016a9:   90                      nop   
  4016aa:   90                      nop   
  4016ab:   90                      nop   
  4016ac:   90                      nop   
  4016ad:   90                      nop   
  4016ae:   90                      nop   
  4016af:   90                      nop   

004016b0 <_cygwin_premain1>:
  4016b0:   55                      push   %ebp
  4016b1:   89 e5                   mov    %esp,%ebp
  4016b3:   5d                      pop    %ebp
  4016b4:   c3                      ret   
  4016b5:   90                      nop   
  4016b6:   90                      nop   
  4016b7:   90                      nop   
  4016b8:   90                      nop   
  4016b9:   90                      nop   
  4016ba:   90                      nop   
  4016bb:   90                      nop   
  4016bc:   90                      nop   
  4016bd:   90                      nop   
  4016be:   90                      nop   
  4016bf:   90                      nop   

004016c0 <_cygwin_premain0>:
  4016c0:   55                      push   %ebp
  4016c1:   89 e5                   mov    %esp,%ebp
  4016c3:   5d                      pop    %ebp
  4016c4:   c3                      ret   
  4016c5:   90                      nop   
  4016c6:   90                      nop   
  4016c7:   90                      nop   
  4016c8:   90                      nop   
  4016c9:   90                      nop   
  4016ca:   90                      nop   
  4016cb:   90                      nop   
  4016cc:   90                      nop   
  4016cd:   90                      nop   
  4016ce:   90                      nop   
  4016cf:   90                      nop   

004016d0 <_cygwin_internal>:
  4016d0:   ff 25 94 40 40 00       jmp    *0x404094
  4016d6:   90                      nop   
  4016d7:   90                      nop   
   ...

004016e0 <_FindAtomA@4>:
  4016e0:   ff 25 bc 40 40 00       jmp    *0x4040bc
  4016e6:   90                      nop   
  4016e7:   90                      nop   
   ...

004016f0 <_AddAtomA@4>:
  4016f0:   ff 25 b8 40 40 00       jmp    *0x4040b8
  4016f6:   90                      nop   
  4016f7:   90                      nop   
   ...

00401700 <_GetAtomNameA@12>:
  401700:   ff 25 c0 40 40 00       jmp    *0x4040c0
  401706:   90                      nop   
  401707:   90                      nop   
   ...

00401710 <_GetModuleHandleA@4>:
  401710:   ff 25 c4 40 40 00       jmp    *0x4040c4
  401716:   90                      nop   
  401717:   90                      nop   
   ...

00401720 <___sjlj_init_ctor>:
  401720:   55                      push   %ebp
  401721:   89 e5                   mov    %esp,%ebp
  401723:   5d                      pop    %ebp
  401724:   e9 27 f9 ff ff          jmp    401050 <___do_sjlj_init>
  401729:   90                      nop   
  40172a:   90                      nop   
  40172b:   90                      nop   
  40172c:   90                      nop   
  40172d:   90                      nop   
  40172e:   90                      nop   
  40172f:   90                      nop   

00401730 <__CTOR_LIST__>:
  401730:   ff                      (bad) 
  401731:   ff                      (bad) 
  401732:   ff                      (bad) 
  401733:   ff 20                   jmp    *(%eax)

00401734 <.ctors>:
  401734:   20 17                   and    %dl,(%edi)
  401736:   40                      inc    %eax
  401737:   00 00                   add    %al,(%eax)
  401739:   00 00                   add    %al,(%eax)
   ...

0040173c <__DTOR_LIST__>:
  40173c:   ff                      (bad) 
  40173d:   ff                      (bad) 
  40173e:   ff                      (bad) 
  40173f:   ff 00                   incl   (%eax)
  401741:   00 00                   add    %al,(%eax)
   ...


--
strip -s a.exe

objdump -d main.c

--->
_________________
death scream...

#24513 - f(DarkAngel) - Wed Aug 04, 2004 8:24 pm

Code:

a.exe:     file format pei-i386

Disassembly of section .text:

00401000 <.text>:
  401000:   55                      push   %ebp
  401001:   89 e5                   mov    %esp,%ebp
  401003:   83 ec 08                sub    $0x8,%esp
  401006:   83 e4 f0                and    $0xfffffff0,%esp
  401009:   a1 00 30 40 00          mov    0x403000,%eax
  40100e:   85 c0                   test   %eax,%eax
  401010:   74 01                   je     0x401013
  401012:   cc                      int3   
  401013:   d9 7d fe                fnstcw 0xfffffffe(%ebp)
  401016:   0f b7 45 fe             movzwl 0xfffffffe(%ebp),%eax
  40101a:   25 c0 f0 ff ff          and    $0xfffff0c0,%eax
  40101f:   66 89 45 fe             mov    %ax,0xfffffffe(%ebp)
  401023:   0f b7 45 fe             movzwl 0xfffffffe(%ebp),%eax
  401027:   0d 3f 03 00 00          or     $0x33f,%eax
  40102c:   66 89 45 fe             mov    %ax,0xfffffffe(%ebp)
  401030:   d9 6d fe                fldcw  0xfffffffe(%ebp)
  401033:   c7 04 24 6a 10 40 00    movl   $0x40106a,(%esp)
  40103a:   e8 c1 03 00 00          call   0x401400
  40103f:   89 ec                   mov    %ebp,%esp
  401041:   5d                      pop    %ebp
  401042:   c3                      ret   
  401043:   90                      nop   
  401044:   90                      nop   
  401045:   90                      nop   
  401046:   90                      nop   
  401047:   90                      nop   
  401048:   90                      nop   
  401049:   90                      nop   
  40104a:   90                      nop   
  40104b:   90                      nop   
  40104c:   90                      nop   
  40104d:   90                      nop   
  40104e:   90                      nop   
  40104f:   90                      nop   
  401050:   55                      push   %ebp
  401051:   89 e5                   mov    %esp,%ebp
  401053:   5d                      pop    %ebp
  401054:   e9 07 01 00 00          jmp    0x401160
  401059:   90                      nop   
  40105a:   90                      nop   
  40105b:   90                      nop   
  40105c:   90                      nop   
  40105d:   90                      nop   
  40105e:   90                      nop   
  40105f:   90                      nop   
  401060:   63 68 72                arpl   %bp,0x72(%eax)
  401063:   69 73 74 2e 2e 2e 00    imul   $0x2e2e2e,0x74(%ebx),%esi
  40106a:   55                      push   %ebp
  40106b:   89 e5                   mov    %esp,%ebp
  40106d:   83 ec 08                sub    $0x8,%esp
  401070:   83 e4 f0                and    $0xfffffff0,%esp
  401073:   b8 00 00 00 00          mov    $0x0,%eax
  401078:   89 45 fc                mov    %eax,0xfffffffc(%ebp)
  40107b:   8b 45 fc                mov    0xfffffffc(%ebp),%eax
  40107e:   e8 4d 03 00 00          call   0x4013d0
  401083:   e8 d8 03 00 00          call   0x401460
  401088:   c7 04 24 60 10 40 00    movl   $0x401060,(%esp)
  40108f:   e8 dc 03 00 00          call   0x401470
  401094:   c9                      leave 
  401095:   c3                      ret   
  401096:   90                      nop   
  401097:   90                      nop   
  401098:   90                      nop   
  401099:   90                      nop   
  40109a:   90                      nop   
  40109b:   90                      nop   
  40109c:   90                      nop   
  40109d:   90                      nop   
  40109e:   90                      nop   
  40109f:   90                      nop   
  4010a0:   74 65                   je     0x401107
  4010a2:   78 74                   js     0x401118
  4010a4:   00 55 89                add    %dl,0xffffff89(%ebp)
  4010a7:   e5 b8                   in     $0xb8,%eax
  4010a9:   9a 02 00 00 5d c3 90    lcall  $0x90c3,$0x5d000002
  4010b0:   2d 4c 49 42 47          sub    $0x4742494c,%eax
  4010b5:   43                      inc    %ebx
  4010b6:   43                      inc    %ebx
  4010b7:   57                      push   %edi
  4010b8:   33 32                   xor    (%edx),%esi
  4010ba:   2d 45 48 2d 53          sub    $0x532d4845,%eax
  4010bf:   4a                      dec    %edx
  4010c0:   4c                      dec    %esp
  4010c1:   4a                      dec    %edx
  4010c2:   2d 47 54 48 52          sub    $0x52485447,%eax
  4010c7:   2d 43 59 47 57          sub    $0x57475943,%eax
  4010cc:   49                      dec    %ecx
  4010cd:   4e                      dec    %esi
  4010ce:   00 90 55 89 e5 83       add    %dl,0x83e58955(%eax)
  4010d4:   ec                      in     (%dx),%al
  4010d5:   08 a1 40 30 40 00       or     %ah,0x403040(%ecx)
  4010db:   ff 50 04                call   *0x4(%eax)
  4010de:   89 ec                   mov    %ebp,%esp
  4010e0:   5d                      pop    %ebp
  4010e1:   c3                      ret   
  4010e2:   8d b4 26 00 00 00 00    lea    0x0(%esi),%esi
  4010e9:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  4010f0:   55                      push   %ebp
  4010f1:   31 c0                   xor    %eax,%eax
  4010f3:   89 e5                   mov    %esp,%ebp
  4010f5:   fc                      cld   
  4010f6:   83 ec 08                sub    $0x8,%esp
  4010f9:   b9 0c 00 00 00          mov    $0xc,%ecx
  4010fe:   89 1c 24                mov    %ebx,(%esp)
  401101:   8b 5d 08                mov    0x8(%ebp),%ebx
  401104:   89 7c 24 04             mov    %edi,0x4(%esp)
  401108:   89 df                   mov    %ebx,%edi
  40110a:   f3 ab                   repz stos %eax,%es:(%edi)
  40110c:   c7 03 30 00 00 00       movl   $0x30,(%ebx)
  401112:   a1 00 20 40 00          mov    0x402000,%eax
  401117:   c7 43 24 ff ff ff ff    movl   $0xffffffff,0x24(%ebx)
  40111e:   c7 43 04 b0 14 40 00    movl   $0x4014b0,0x4(%ebx)
  401125:   89 43 14                mov    %eax,0x14(%ebx)
  401128:   a1 10 30 40 00          mov    0x403010,%eax
  40112d:   c7 43 08 d0 10 40 00    movl   $0x4010d0,0x8(%ebx)
  401134:   8b 15 08 20 40 00       mov    0x402008,%edx
  40113a:   c7 43 1c 00 00 00 00    movl   $0x0,0x1c(%ebx)
  401141:   89 43 20                mov    %eax,0x20(%ebx)
  401144:   a1 04 20 40 00          mov    0x402004,%eax
  401149:   89 53 2c                mov    %edx,0x2c(%ebx)
  40114c:   89 43 28                mov    %eax,0x28(%ebx)
  40114f:   8b 1c 24                mov    (%esp),%ebx
  401152:   8b 7c 24 04             mov    0x4(%esp),%edi
  401156:   89 ec                   mov    %ebp,%esp
  401158:   5d                      pop    %ebp
  401159:   c3                      ret   
  40115a:   8d b6 00 00 00 00       lea    0x0(%esi),%esi
  401160:   55                      push   %ebp
  401161:   89 e5                   mov    %esp,%ebp
  401163:   83 ec 58                sub    $0x58,%esp
  401166:   89 75 f8                mov    %esi,0xfffffff8(%ebp)
  401169:   a1 40 30 40 00          mov    0x403040,%eax
  40116e:   89 7d fc                mov    %edi,0xfffffffc(%ebp)
  401171:   85 c0                   test   %eax,%eax
  401173:   74 0b                   je     0x401180
  401175:   8b 75 f8                mov    0xfffffff8(%ebp),%esi
  401178:   8b 7d fc                mov    0xfffffffc(%ebp),%edi
  40117b:   89 ec                   mov    %ebp,%esp
  40117d:   5d                      pop    %ebp
  40117e:   c3                      ret   
  40117f:   90                      nop   
  401180:   fc                      cld   
  401181:   be b0 10 40 00          mov    $0x4010b0,%esi
  401186:   c7 45 b8 41 41 41 41    movl   $0x41414141,0xffffffb8(%ebp)
  40118d:   8d 7d d8                lea    0xffffffd8(%ebp),%edi
  401190:   b9 07 00 00 00          mov    $0x7,%ecx
  401195:   c7 45 bc 41 41 41 41    movl   $0x41414141,0xffffffbc(%ebp)
  40119c:   c7 45 c0 41 41 41 41    movl   $0x41414141,0xffffffc0(%ebp)
  4011a3:   c7 45 c4 41 41 41 41    movl   $0x41414141,0xffffffc4(%ebp)
  4011aa:   c7 45 c8 41 41 41 41    movl   $0x41414141,0xffffffc8(%ebp)
  4011b1:   c7 45 cc 41 41 41 41    movl   $0x41414141,0xffffffcc(%ebp)
  4011b8:   c7 45 d0 41 41 41 41    movl   $0x41414141,0xffffffd0(%ebp)
  4011bf:   c7 45 d4 41 41 41 41    movl   $0x41414141,0xffffffd4(%ebp)
  4011c6:   0f b7 05 cc 10 40 00    movzwl 0x4010cc,%eax
  4011cd:   f3 a5                   repz movsl %ds:(%esi),%es:(%edi)
  4011cf:   66 89 07                mov    %ax,(%edi)
  4011d2:   0f b6 05 ce 10 40 00    movzbl 0x4010ce,%eax
  4011d9:   88 47 02                mov    %al,0x2(%edi)
  4011dc:   8d 7d b8                lea    0xffffffb8(%ebp),%edi
  4011df:   89 3c 24                mov    %edi,(%esp)
  4011e2:   e8 f9 04 00 00          call   0x4016e0
  4011e7:   0f b7 c0                movzwl %ax,%eax
  4011ea:   83 ec 04                sub    $0x4,%esp
  4011ed:   66 85 c0                test   %ax,%ax
  4011f0:   0f 85 8a 00 00 00       jne    0x401280
  4011f6:   c7 04 24 30 00 00 00    movl   $0x30,(%esp)
  4011fd:   e8 9e 02 00 00          call   0x4014a0
  401202:   85 c0                   test   %eax,%eax
  401204:   89 c6                   mov    %eax,%esi
  401206:   0f 84 80 00 00 00       je     0x40128c
  40120c:   89 04 24                mov    %eax,(%esp)
  40120f:   e8 dc fe ff ff          call   0x4010f0
  401214:   89 34 24                mov    %esi,(%esp)
  401217:   e8 84 00 00 00          call   0x4012a0
  40121c:   66 85 c0                test   %ax,%ax
  40121f:   74 3a                   je     0x40125b
  401221:   c7 44 24 08 a0 13 40    movl   $0x4013a0,0x8(%esp)
  401228:   00
  401229:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  401230:   00
  401231:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  401238:   e8 53 02 00 00          call   0x401490
  40123d:   8d 76 00                lea    0x0(%esi),%esi
  401240:   89 35 40 30 40 00       mov    %esi,0x403040
  401246:   8d 46 04                lea    0x4(%esi),%eax
  401249:   a3 30 30 40 00          mov    %eax,0x403030
  40124e:   8d 46 08                lea    0x8(%esi),%eax
  401251:   a3 50 30 40 00          mov    %eax,0x403050
  401256:   e9 1a ff ff ff          jmp    0x401175
  40125b:   89 34 24                mov    %esi,(%esp)
  40125e:   e8 1d 02 00 00          call   0x401480
  401263:   89 3c 24                mov    %edi,(%esp)
  401266:   e8 75 04 00 00          call   0x4016e0
  40126b:   83 ec 04                sub    $0x4,%esp
  40126e:   0f b7 c0                movzwl %ax,%eax
  401271:   eb 0d                   jmp    0x401280
  401273:   90                      nop   
  401274:   90                      nop   
  401275:   90                      nop   
  401276:   90                      nop   
  401277:   90                      nop   
  401278:   90                      nop   
  401279:   90                      nop   
  40127a:   90                      nop   
  40127b:   90                      nop   
  40127c:   90                      nop   
  40127d:   90                      nop   
  40127e:   90                      nop   
  40127f:   90                      nop   
  401280:   89 04 24                mov    %eax,(%esp)
  401283:   e8 a8 00 00 00          call   0x401330
  401288:   89 c6                   mov    %eax,%esi
  40128a:   eb b4                   jmp    0x401240
  40128c:   e8 1f 02 00 00          call   0x4014b0
  401291:   eb 0d                   jmp    0x4012a0
  401293:   90                      nop   
  401294:   90                      nop   
  401295:   90                      nop   
  401296:   90                      nop   
  401297:   90                      nop   
  401298:   90                      nop   
  401299:   90                      nop   
  40129a:   90                      nop   
  40129b:   90                      nop   
  40129c:   90                      nop   
  40129d:   90                      nop   
  40129e:   90                      nop   
  40129f:   90                      nop   
  4012a0:   55                      push   %ebp
  4012a1:   b8 1f 00 00 00          mov    $0x1f,%eax
  4012a6:   89 e5                   mov    %esp,%ebp
  4012a8:   57                      push   %edi
  4012a9:   ba 01 00 00 00          mov    $0x1,%edx
  4012ae:   56                      push   %esi
  4012af:   53                      push   %ebx
  4012b0:   83 ec 5c                sub    $0x5c,%esp
  4012b3:   8b 5d 08                mov    0x8(%ebp),%ebx
  4012b6:   8d 76 00                lea    0x0(%esi),%esi
  4012b9:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  4012c0:   85 da                   test   %ebx,%edx
  4012c2:   b1 41                   mov    $0x41,%cl
  4012c4:   75 02                   jne    0x4012c8
  4012c6:   b1 61                   mov    $0x61,%cl
  4012c8:   88 4c 28 a8             mov    %cl,0xffffffa8(%eax,%ebp,1)
  4012cc:   01 d2                   add    %edx,%edx
  4012ce:   48                      dec    %eax
  4012cf:   79 ef                   jns    0x4012c0
  4012d1:   fc                      cld   
  4012d2:   be b0 10 40 00          mov    $0x4010b0,%esi
  4012d7:   8d 7d c8                lea    0xffffffc8(%ebp),%edi
  4012da:   0f b7 05 cc 10 40 00    movzwl 0x4010cc,%eax
  4012e1:   b9 07 00 00 00          mov    $0x7,%ecx
  4012e6:   f3 a5                   repz movsl %ds:(%esi),%es:(%edi)
  4012e8:   66 89 07                mov    %ax,(%edi)
  4012eb:   0f b6 05 ce 10 40 00    movzbl 0x4010ce,%eax
  4012f2:   88 47 02                mov    %al,0x2(%edi)
  4012f5:   8d 45 a8                lea    0xffffffa8(%ebp),%eax
  4012f8:   89 04 24                mov    %eax,(%esp)
  4012fb:   e8 f0 03 00 00          call   0x4016f0
  401300:   0f b7 f0                movzwl %ax,%esi
  401303:   83 ec 04                sub    $0x4,%esp
  401306:   66 85 f6                test   %si,%si
  401309:   75 0c                   jne    0x401317
  40130b:   31 d2                   xor    %edx,%edx
  40130d:   8d 65 f4                lea    0xfffffff4(%ebp),%esp
  401310:   89 d0                   mov    %edx,%eax
  401312:   5b                      pop    %ebx
  401313:   5e                      pop    %esi
  401314:   5f                      pop    %edi
  401315:   5d                      pop    %ebp
  401316:   c3                      ret   
  401317:   89 34 24                mov    %esi,(%esp)
  40131a:   e8 11 00 00 00          call   0x401330
  40131f:   39 d8                   cmp    %ebx,%eax
  401321:   89 f2                   mov    %esi,%edx
  401323:   75 e6                   jne    0x40130b
  401325:   eb e6                   jmp    0x40130d
  401327:   89 f6                   mov    %esi,%esi
  401329:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401330:   55                      push   %ebp
  401331:   89 e5                   mov    %esp,%ebp
  401333:   8d 55 b8                lea    0xffffffb8(%ebp),%edx
  401336:   53                      push   %ebx
  401337:   83 ec 54                sub    $0x54,%esp
  40133a:   31 db                   xor    %ebx,%ebx
  40133c:   0f b7 45 08             movzwl 0x8(%ebp),%eax
  401340:   c7 44 24 08 3f 00 00    movl   $0x3f,0x8(%esp)
  401347:   00
  401348:   89 54 24 04             mov    %edx,0x4(%esp)
  40134c:   89 04 24                mov    %eax,(%esp)
  40134f:   e8 ac 03 00 00          call   0x401700
  401354:   83 ec 0c                sub    $0xc,%esp
  401357:   85 c0                   test   %eax,%eax
  401359:   74 31                   je     0x40138c
  40135b:   b8 1f 00 00 00          mov    $0x1f,%eax
  401360:   ba 01 00 00 00          mov    $0x1,%edx
  401365:   8d 74 26 00             lea    0x0(%esi),%esi
  401369:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401370:   80 7c 28 b8 41          cmpb   $0x41,0xffffffb8(%eax,%ebp,1)
  401375:   74 11                   je     0x401388
  401377:   01 d2                   add    %edx,%edx
  401379:   48                      dec    %eax
  40137a:   79 f4                   jns    0x401370
  40137c:   83 3b 30                cmpl   $0x30,(%ebx)
  40137f:   75 0b                   jne    0x40138c
  401381:   89 d8                   mov    %ebx,%eax
  401383:   8b 5d fc                mov    0xfffffffc(%ebp),%ebx
  401386:   c9                      leave 
  401387:   c3                      ret   
  401388:   09 d3                   or     %edx,%ebx
  40138a:   eb eb                   jmp    0x401377
  40138c:   e8 1f 01 00 00          call   0x4014b0
  401391:   eb 0d                   jmp    0x4013a0
  401393:   90                      nop   
  401394:   90                      nop   
  401395:   90                      nop   
  401396:   90                      nop   
  401397:   90                      nop   
  401398:   90                      nop   
  401399:   90                      nop   
  40139a:   90                      nop   
  40139b:   90                      nop   
  40139c:   90                      nop   
  40139d:   90                      nop   
  40139e:   90                      nop   
  40139f:   90                      nop   
  4013a0:   55                      push   %ebp
  4013a1:   89 e5                   mov    %esp,%ebp
  4013a3:   83 ec 08                sub    $0x8,%esp
  4013a6:   a1 40 30 40 00          mov    0x403040,%eax
  4013ab:   89 04 24                mov    %eax,(%esp)
  4013ae:   e8 ed fe ff ff          call   0x4012a0
  4013b3:   66 85 c0                test   %ax,%ax
  4013b6:   74 04                   je     0x4013bc
  4013b8:   89 ec                   mov    %ebp,%esp
  4013ba:   5d                      pop    %ebp
  4013bb:   c3                      ret   
  4013bc:   e8 ef 00 00 00          call   0x4014b0
  4013c1:   90                      nop   
  4013c2:   90                      nop   
  4013c3:   90                      nop   
  4013c4:   90                      nop   
  4013c5:   90                      nop   
  4013c6:   90                      nop   
  4013c7:   90                      nop   
  4013c8:   90                      nop   
  4013c9:   90                      nop   
  4013ca:   90                      nop   
  4013cb:   90                      nop   
  4013cc:   90                      nop   
  4013cd:   90                      nop   
  4013ce:   90                      nop   
  4013cf:   90                      nop   
  4013d0:   51                      push   %ecx
  4013d1:   89 e1                   mov    %esp,%ecx
  4013d3:   83 c1 08                add    $0x8,%ecx
  4013d6:   3d 00 10 00 00          cmp    $0x1000,%eax
  4013db:   72 10                   jb     0x4013ed
  4013dd:   81 e9 00 10 00 00       sub    $0x1000,%ecx
  4013e3:   83 09 00                orl    $0x0,(%ecx)
  4013e6:   2d 00 10 00 00          sub    $0x1000,%eax
  4013eb:   eb e9                   jmp    0x4013d6
  4013ed:   29 c1                   sub    %eax,%ecx
  4013ef:   83 09 00                orl    $0x0,(%ecx)
  4013f2:   89 e0                   mov    %esp,%eax
  4013f4:   89 cc                   mov    %ecx,%esp
  4013f6:   8b 08                   mov    (%eax),%ecx
  4013f8:   8b 40 04                mov    0x4(%eax),%eax
  4013fb:   ff e0                   jmp    *%eax
  4013fd:   90                      nop   
  4013fe:   90                      nop   
  4013ff:   90                      nop   
  401400:   55                      push   %ebp
  401401:   89 e5                   mov    %esp,%ebp
  401403:   83 ec 18                sub    $0x18,%esp
  401406:   89 75 fc                mov    %esi,0xfffffffc(%ebp)
  401409:   8b 75 08                mov    0x8(%ebp),%esi
  40140c:   89 5d f8                mov    %ebx,0xfffffff8(%ebp)
  40140f:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  401416:   00
  401417:   89 34 24                mov    %esi,(%esp)
  40141a:   e8 a1 00 00 00          call   0x4014c0
  40141f:   83 ec 08                sub    $0x8,%esp
  401422:   85 c0                   test   %eax,%eax
  401424:   74 0d                   je     0x401433
  401426:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  40142d:   ff 15 98 40 40 00       call   *0x404098
  401433:   81 ec b0 00 00 00       sub    $0xb0,%esp
  401439:   8d 5c 24 08             lea    0x8(%esp),%ebx
  40143d:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  401444:   00
  401445:   89 5c 24 04             mov    %ebx,0x4(%esp)
  401449:   89 34 24                mov    %esi,(%esp)
  40144c:   e8 6f 00 00 00          call   0x4014c0
  401451:   83 ec 08                sub    $0x8,%esp
  401454:   89 1c 24                mov    %ebx,(%esp)
  401457:   eb d4                   jmp    0x40142d
  401459:   90                      nop   
  40145a:   90                      nop   
  40145b:   90                      nop   
  40145c:   90                      nop   
  40145d:   90                      nop   
  40145e:   90                      nop   
  40145f:   90                      nop   
  401460:   ff 25 88 40 40 00       jmp    *0x404088
  401466:   90                      nop   
  401467:   90                      nop   
   ...
  401470:   ff 25 a4 40 40 00       jmp    *0x4040a4
  401476:   90                      nop   
  401477:   90                      nop   
   ...
  401480:   ff 25 9c 40 40 00       jmp    *0x40409c
  401486:   90                      nop   
  401487:   90                      nop   
   ...
  401490:   ff 25 a8 40 40 00       jmp    *0x4040a8
  401496:   90                      nop   
  401497:   90                      nop   
   ...
  4014a0:   ff 25 a0 40 40 00       jmp    *0x4040a0
  4014a6:   90                      nop   
  4014a7:   90                      nop   
   ...
  4014b0:   ff 25 8c 40 40 00       jmp    *0x40408c
  4014b6:   90                      nop   
  4014b7:   90                      nop   
   ...
  4014c0:   55                      push   %ebp
  4014c1:   31 c0                   xor    %eax,%eax
  4014c3:   89 e5                   mov    %esp,%ebp
  4014c5:   53                      push   %ebx
  4014c6:   83 ec 04                sub    $0x4,%esp
  4014c9:   8b 5d 0c                mov    0xc(%ebp),%ebx
  4014cc:   85 db                   test   %ebx,%ebx
  4014ce:   0f 84 ec 00 00 00       je     0x4015c0
  4014d4:   c7 43 04 a8 00 00 00    movl   $0xa8,0x4(%ebx)
  4014db:   31 c9                   xor    %ecx,%ecx
  4014dd:   ba 74 00 00 00          mov    $0x74,%edx
  4014e2:   c7 43 08 ed 03 00 00    movl   $0x3ed,0x8(%ebx)
  4014e9:   85 c0                   test   %eax,%eax
  4014eb:   c7 43 0c 0a 00 00 00    movl   $0xa,0xc(%ebx)
  4014f2:   89 8b 80 00 00 00       mov    %ecx,0x80(%ebx)
  4014f8:   89 93 84 00 00 00       mov    %edx,0x84(%ebx)
  4014fe:   c7 43 2c 30 17 40 00    movl   $0x401730,0x2c(%ebx)
  401505:   c7 43 30 3c 17 40 00    movl   $0x40173c,0x30(%ebx)
  40150c:   c7 43 14 20 30 40 00    movl   $0x403020,0x14(%ebx)
  401513:   0f 84 9b 00 00 00       je     0x4015b4
  401519:   8b 83 a4 00 00 00       mov    0xa4(%ebx),%eax
  40151f:   a3 24 30 40 00          mov    %eax,0x403024
  401524:   c7 43 78 00 00 00 00    movl   $0x0,0x78(%ebx)
  40152b:   8b 45 08                mov    0x8(%ebp),%eax
  40152e:   c7 43 48 c0 16 40 00    movl   $0x4016c0,0x48(%ebx)
  401535:   c7 43 4c b0 16 40 00    movl   $0x4016b0,0x4c(%ebx)
  40153c:   89 43 28                mov    %eax,0x28(%ebx)
  40153f:   8b 45 00                mov    0x0(%ebp),%eax
  401542:   c7 43 50 a0 16 40 00    movl   $0x4016a0,0x50(%ebx)
  401549:   c7 43 54 90 16 40 00    movl   $0x401690,0x54(%ebx)
  401550:   c7 43 24 28 30 40 00    movl   $0x403028,0x24(%ebx)
  401557:   89 03                   mov    %eax,(%ebx)
  401559:   c7 43 18 a0 14 40 00    movl   $0x4014a0,0x18(%ebx)
  401560:   c7 43 1c 80 14 40 00    movl   $0x401480,0x1c(%ebx)
  401567:   c7 43 20 80 16 40 00    movl   $0x401680,0x20(%ebx)
  40156e:   c7 43 44 70 16 40 00    movl   $0x401670,0x44(%ebx)
  401575:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  40157c:   e8 8f 01 00 00          call   0x401710
  401581:   89 43 7c                mov    %eax,0x7c(%ebx)
  401584:   83 ec 04                sub    $0x4,%esp
  401587:   c7 43 34 00 20 40 00    movl   $0x402000,0x34(%ebx)
  40158e:   c7 43 38 10 20 40 00    movl   $0x402010,0x38(%ebx)
  401595:   c7 43 3c 00 30 40 00    movl   $0x403000,0x3c(%ebx)
  40159c:   c7 43 40 80 30 40 00    movl   $0x403080,0x40(%ebx)
  4015a3:   e8 98 00 00 00          call   0x401640
  4015a8:   b8 01 00 00 00          mov    $0x1,%eax
  4015ad:   8b 5d fc                mov    0xfffffffc(%ebp),%ebx
  4015b0:   c9                      leave 
  4015b1:   c2 08 00                ret    $0x8
  4015b4:   c7 43 10 24 30 40 00    movl   $0x403024,0x10(%ebx)
  4015bb:   e9 64 ff ff ff          jmp    0x401524
  4015c0:   c7 04 24 08 00 00 00    movl   $0x8,(%esp)
  4015c7:   e8 04 01 00 00          call   0x4016d0
  4015cc:   89 c2                   mov    %eax,%edx
  4015ce:   31 c0                   xor    %eax,%eax
  4015d0:   83 fa ff                cmp    $0xffffffff,%edx
  4015d3:   74 d8                   je     0x4015ad
  4015d5:   89 d3                   mov    %edx,%ebx
  4015d7:   b8 01 00 00 00          mov    $0x1,%eax
  4015dc:   e9 f3 fe ff ff          jmp    0x4014d4
  4015e1:   90                      nop   
  4015e2:   90                      nop   
  4015e3:   90                      nop   
  4015e4:   90                      nop   
  4015e5:   90                      nop   
  4015e6:   90                      nop   
  4015e7:   90                      nop   
  4015e8:   90                      nop   
  4015e9:   90                      nop   
  4015ea:   90                      nop   
  4015eb:   90                      nop   
  4015ec:   90                      nop   
  4015ed:   90                      nop   
  4015ee:   90                      nop   
  4015ef:   90                      nop   
  4015f0:   ff 25 98 40 40 00       jmp    *0x404098
  4015f6:   90                      nop   
  4015f7:   90                      nop   
   ...
  401600:   55                      push   %ebp
  401601:   89 e5                   mov    %esp,%ebp
  401603:   8b 4d 08                mov    0x8(%ebp),%ecx
  401606:   56                      push   %esi
  401607:   8b 75 10                mov    0x10(%ebp),%esi
  40160a:   53                      push   %ebx
  40160b:   8b 5d 0c                mov    0xc(%ebp),%ebx
  40160e:   39 d9                   cmp    %ebx,%ecx
  401610:   73 20                   jae    0x401632
  401612:   8d b4 26 00 00 00 00    lea    0x0(%esi),%esi
  401619:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401620:   8b 41 04                mov    0x4(%ecx),%eax
  401623:   89 f2                   mov    %esi,%edx
  401625:   01 c2                   add    %eax,%edx
  401627:   8b 01                   mov    (%ecx),%eax
  401629:   83 c1 08                add    $0x8,%ecx
  40162c:   01 02                   add    %eax,(%edx)
  40162e:   39 d9                   cmp    %ebx,%ecx
  401630:   72 ee                   jb     0x401620
  401632:   5b                      pop    %ebx
  401633:   5e                      pop    %esi
  401634:   5d                      pop    %ebp
  401635:   c3                      ret   
  401636:   8d 76 00                lea    0x0(%esi),%esi
  401639:   8d bc 27 00 00 00 00    lea    0x0(%edi),%edi
  401640:   55                      push   %ebp
  401641:   89 e5                   mov    %esp,%ebp
  401643:   83 ec 18                sub    $0x18,%esp
  401646:   c7 44 24 08 00 00 40    movl   $0x400000,0x8(%esp)
  40164d:   00
  40164e:   c7 44 24 04 00 30 40    movl   $0x403000,0x4(%esp)
  401655:   00
  401656:   c7 04 24 00 30 40 00    movl   $0x403000,(%esp)
  40165d:   e8 9e ff ff ff          call   0x401600
  401662:   89 ec                   mov    %ebp,%esp
  401664:   5d                      pop    %ebp
  401665:   c3                      ret   
  401666:   90                      nop   
  401667:   90                      nop   
  401668:   90                      nop   
  401669:   90                      nop   
  40166a:   90                      nop   
  40166b:   90                      nop   
  40166c:   90                      nop   
  40166d:   90                      nop   
  40166e:   90                      nop   
  40166f:   90                      nop   
  401670:   ff 25 90 40 40 00       jmp    *0x404090
  401676:   90                      nop   
  401677:   90                      nop   
   ...
  401680:   ff 25 ac 40 40 00       jmp    *0x4040ac
  401686:   90                      nop   
  401687:   90                      nop   
   ...
  401690:   55                      push   %ebp
  401691:   89 e5                   mov    %esp,%ebp
  401693:   5d                      pop    %ebp
  401694:   c3                      ret   
  401695:   90                      nop   
  401696:   90                      nop   
  401697:   90                      nop   
  401698:   90                      nop   
  401699:   90                      nop   
  40169a:   90                      nop   
  40169b:   90                      nop   
  40169c:   90                      nop   
  40169d:   90                      nop   
  40169e:   90                      nop   
  40169f:   90                      nop   
  4016a0:   55                      push   %ebp
  4016a1:   89 e5                   mov    %esp,%ebp
  4016a3:   5d                      pop    %ebp
  4016a4:   c3                      ret   
  4016a5:   90                      nop   
  4016a6:   90                      nop   
  4016a7:   90                      nop   
  4016a8:   90                      nop   
  4016a9:   90                      nop   
  4016aa:   90                      nop   
  4016ab:   90                      nop   
  4016ac:   90                      nop   
  4016ad:   90                      nop   
  4016ae:   90                      nop   
  4016af:   90                      nop   
  4016b0:   55                      push   %ebp
  4016b1:   89 e5                   mov    %esp,%ebp
  4016b3:   5d                      pop    %ebp
  4016b4:   c3                      ret   
  4016b5:   90                      nop   
  4016b6:   90                      nop   
  4016b7:   90                      nop   
  4016b8:   90                      nop   
  4016b9:   90                      nop   
  4016ba:   90                      nop   
  4016bb:   90                      nop   
  4016bc:   90                      nop   
  4016bd:   90                      nop   
  4016be:   90                      nop   
  4016bf:   90                      nop   
  4016c0:   55                      push   %ebp
  4016c1:   89 e5                   mov    %esp,%ebp
  4016c3:   5d                      pop    %ebp
  4016c4:   c3                      ret   
  4016c5:   90                      nop   
  4016c6:   90                      nop   
  4016c7:   90                      nop   
  4016c8:   90                      nop   
  4016c9:   90                      nop   
  4016ca:   90                      nop   
  4016cb:   90                      nop   
  4016cc:   90                      nop   
  4016cd:   90                      nop   
  4016ce:   90                      nop   
  4016cf:   90                      nop   
  4016d0:   ff 25 94 40 40 00       jmp    *0x404094
  4016d6:   90                      nop   
  4016d7:   90                      nop   
   ...
  4016e0:   ff 25 bc 40 40 00       jmp    *0x4040bc
  4016e6:   90                      nop   
  4016e7:   90                      nop   
   ...
  4016f0:   ff 25 b8 40 40 00       jmp    *0x4040b8
  4016f6:   90                      nop   
  4016f7:   90                      nop   
   ...
  401700:   ff 25 c0 40 40 00       jmp    *0x4040c0
  401706:   90                      nop   
  401707:   90                      nop   
   ...
  401710:   ff 25 c4 40 40 00       jmp    *0x4040c4
  401716:   90                      nop   
  401717:   90                      nop   
   ...
  401720:   55                      push   %ebp
  401721:   89 e5                   mov    %esp,%ebp
  401723:   5d                      pop    %ebp
  401724:   e9 27 f9 ff ff          jmp    0x401050
  401729:   90                      nop   
  40172a:   90                      nop   
  40172b:   90                      nop   
  40172c:   90                      nop   
  40172d:   90                      nop   
  40172e:   90                      nop   
  40172f:   90                      nop   
  401730:   ff                      (bad) 
  401731:   ff                      (bad) 
  401732:   ff                      (bad) 
  401733:   ff 20                   jmp    *(%eax)
  401735:   17                      pop    %ss
  401736:   40                      inc    %eax
  401737:   00 00                   add    %al,(%eax)
  401739:   00 00                   add    %al,(%eax)
  40173b:   00 ff                   add    %bh,%bh
  40173d:   ff                      (bad) 
  40173e:   ff                      (bad) 
  40173f:   ff 00                   incl   (%eax)
  401741:   00 00                   add    %al,(%eax)
   ...


aren't you satisfied bitch? then read the output *line by line* several times.


whoa? this must be magic, both the body of _junkfunction and labels disappeared. what an idiot i am, i'm so ashamed...i must be. this must be a curse then. maybe i meanwhile changed the way gnu strip works and replaced all the copies in the world with my version that strips the unnecessary function body, more the "only symbols and debugging". or maybe we're living in the matrix and i'm probably an agent and made a change in the world.

wake up Neo, come to the real world. face what strip does.

(reminder)
torne wrote:
confusing programmers who don't have enough experience to realise that what you say is incorrect.

what is worse is confusing experienced programmers that relies on information given in a forum.

Is one example enough, you two? Do you want me to post the .c, .s and binary files? Do you want to lick what you spit more?

just fuck off, and stop twisting like politicans you rubbish. neither you, nor sajimori is correct, and here's the proof. what the fuck are you still talking about? but if you have a personal problem with me, anytime anywhere.

ps to forum owners: sorry for making such large post.
_________________
death scream...

#24514 - sajiimori - Wed Aug 04, 2004 8:30 pm

Thread lock plz?

#24515 - SimonB - Wed Aug 04, 2004 8:34 pm

shush. please. thread locked.

Si