home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / lib / src / lcccrt0.asm < prev    next >
Encoding:
Assembly Source File  |  1997-09-01  |  8.1 KB  |  504 lines

  1.     .text
  2.     .file "lcccrt0.c"
  3.     .data
  4.     .globl    _stdin
  5. _stdin:
  6.     .long    0x0
  7.     .globl    _stdout
  8. _stdout:
  9.     .long    0x0
  10.     .globl    _stderr
  11. _stderr:
  12.     .long    0x0
  13.     .globl __fmode
  14. __fmode:
  15.     .long 0x8000
  16.  
  17. _$ExcepData:
  18.     .long    0
  19.     .globl    ___argc
  20.     .align    4
  21.     .type    ___argc,object
  22.     .size    ___argc,4
  23. ___argc:
  24.     .long    0
  25.     .globl    ___argv
  26.     .align    4
  27.     .type    ___argv,object
  28.     .size    ___argv,4
  29. ___argv:
  30.     .long    0x0
  31.     .globl    __environ
  32.     .align    4
  33.     .type    __environ,object
  34.     .size    __environ,4
  35. __environ:
  36.     .long    0x0
  37.     .text
  38. _$unknownTrap:
  39.     xor    %eax,%eax
  40.     incl    %eax
  41.     movl    4(%esp),%ecx
  42.     testl    $6,4(%ecx)
  43.     jz    _$unknownTrapLabel1
  44.     movl    8(%esp),%eax
  45.     movl    16(%esp),%edx
  46.     movl    %eax,(%edx)
  47.     movl    $3,%eax
  48. _$unknownTrapLabel1:
  49.     ret
  50. _$local_unwind2:
  51.     pushl    %ebx
  52.     pushl    %esi
  53.     pushl    %edi
  54.     movl    16(%esp),%eax
  55.     pushl    %eax
  56.     pushl    $0xfffffffe
  57.     pushl    $_$unknownTrap
  58.     .byte    100
  59.     .byte    255
  60.     .byte    53
  61.     .long    0
  62.     .byte    100
  63.     .byte    137
  64.     .byte    37
  65.     .long    0
  66. _$local_unwindLabel0:
  67.     movl    32(%esp),%eax
  68.     movl    8(%eax),%ebx
  69.     movl    12(%eax),%esi
  70.     cmpl    $0xffffffff,%esi
  71.     jz    _$local_unwindLabel1
  72.     cmpl    36(%esp),%esi
  73.     jz    _$local_unwindLabel1
  74.     leal    (%esi,%esi,2),%esi
  75.     movl    (%ebx,%esi,4),%ecx
  76.     movl    8(%esp),%ecx
  77.     movl    12(%eax),%ecx
  78.     cmpl    $0,4(%ebx,%esi,4)
  79.     jnz    _$local_unwindLabel0
  80.     call    8(%ebx,%esi,4)
  81.     jmp    _$local_unwindLabel0
  82. _$local_unwindLabel1:
  83.     .byte    100
  84.     .byte    143
  85.     .byte    5
  86.     .long    0
  87.     addl    $12,%esp
  88.     pop    %edi
  89.     pop    %esi
  90.     pop    %ebx
  91.     ret
  92. __global_unwind2:
  93.     pushl    %ebp
  94.     movl    %esp,%ebp
  95.     pushl    %ebx
  96.     pushl    %esi
  97.     pushl    %edi
  98.     pushl    %ebp
  99.     pushl    $0
  100.     pushl    $0
  101.     pushl    $_$beyond
  102.     pushl    8(%ebp)
  103.     call    _RtlUnwind@16
  104. _$beyond:
  105.     pop    %ebp
  106.     pop    %edi
  107.     pop    %esi
  108.     pop    %ebx
  109.     mov    %ebp,%esp
  110.     pop    %ebp
  111.     ret
  112.     .globl    __except_handler3
  113. __except_handler3:
  114.     cld
  115.     pushl    %ebp
  116.     movl    %esp,%ebp
  117.     subl    $8,%esp
  118.     pushl    %ebx
  119.     pushl    %esi
  120.     pushl    %edi
  121.     pushl    %ebp
  122.     movl    12(%ebp),%ebx
  123.     movl    8(%ebp),%eax
  124.     movl    %eax,__CurrentException
  125.     movl    %ebx,__CurrentContext
  126.     testl    $6,4(%eax)
  127.     jne    exceptionHandler3label2
  128.     movl    %eax,-8(%ebp)
  129.     movl    16(%ebp),%eax
  130.     movl    %eax,-4(%ebp)
  131.     movl    %eax,__CurrentContext
  132.     leal    -8(%ebp),%eax
  133.     movl    %eax,-4(%ebx)
  134.     movl    12(%ebx),%esi
  135.     movl    8(%ebx),%edi
  136. _$exceptionHandler3LOOP:
  137.     cmp      $0xffffffff,%esi
  138.     jz    _$RetTr
  139.     leal    (%esi,%esi,2),%ecx
  140.     cmpl    $0,4(%edi,%ecx,4)
  141.     jz    exceptionHandler3label3
  142.     pushl    %esi
  143.     pushl    %ebp
  144.     leal    16(%ebx),%ebp
  145.     call    4(%edi,%ecx,4)
  146.     popl    %ebp
  147.     popl    %esi
  148.     movl    12(%ebp),%ebx
  149.     orl    %eax,%eax
  150.     jz    exceptionHandler3label3
  151.     js    exceptionHandler3label4
  152.     movl    8(%ebx),%edi
  153.     pushl    %ebx
  154.     call    __global_unwind2
  155.     addl    $4,%esp
  156.     leal    16(%ebx),%ebp
  157.     pushl    %esi
  158.     pushl    %ebx
  159.     call    _$local_unwind2
  160.     addl    $8,%esp
  161.     leal    (%esi,%esi,2),%ecx
  162.     movl    (%edi,%ecx,4),%eax
  163.     movl    12(%ebx),%eax
  164.     call    8(%edi,%ecx,4)
  165. exceptionHandler3label3:
  166.     movl    8(%ebx),%edi
  167.     leal    (%esi,%esi,2),%ecx
  168.     movl    (%edi,%ecx,4),%esi
  169.     jmp    _$exceptionHandler3LOOP
  170. exceptionHandler3label4:
  171.     xorl    %eax,%eax
  172.     jmp       exceptionHandler3Exit
  173. exceptionHandler3label2:
  174.     pushl    %ebp
  175.     leal    16(%ebx),%ebp
  176.     pushl    $0xffffffff
  177.     pushl    %ebx
  178.     call    _$local_unwind2
  179.     addl    $12,%esp
  180. _$RetTr:
  181.     pushl    $11
  182.     call    _raise
  183.     addl    $4,%esp
  184.     movl    $1,%eax
  185. exceptionHandler3Exit:
  186.     popl    %ebp
  187.     popl    %edi
  188.     popl    %esi
  189.     popl    %ebx
  190.     movl    %ebp,%esp
  191.     popl    %ebp
  192.     ret
  193.     .type    _mainCRTStartup,function
  194. _mainCRTStartup:
  195.     .byte    100
  196.     .byte    161
  197.     .long    0
  198.     pushl    %ebp
  199.     movl    %esp,%ebp
  200.     push    $0xffffffff
  201.     pushl    $_$ExcepData
  202.     pushl    $__except_handler3
  203.     push    %eax
  204.     .byte    100
  205.     .byte    137
  206.     .byte    37
  207.     .long    0
  208.     subl    $16,%esp
  209.     push    %ebx
  210.     push    %esi
  211.     push    %edi
  212.     mov    %esp,-24(%ebp)
  213.     .line    64
  214.     .line    70
  215.     call    __init_stdhandles
  216.     .line    75
  217.     pushl    $__environ
  218.     pushl    $___argv
  219.     pushl    $___argc
  220.     call    __GetMainArgs
  221.     addl    $12,%esp
  222.     pushl    $__signalHandler
  223.     pushl    $11
  224.     call    _signal
  225.     addl    $8,%esp
  226.     .line    83
  227.     pushl    __environ
  228.     pushl    ___argv
  229.     pushl    ___argc
  230.     call    _main
  231.     addl    $12,%esp
  232.     movl    $0,-4(%ebp)
  233.     push    %eax
  234. ;    call    _flushall
  235. ;    movl    -16(%ebp),%eax
  236. ;    .byte    100
  237. ;    .byte    163
  238. ;    .long    0x0
  239.     .line    89
  240.     call    _cexit
  241.     .line    94
  242.     call    __close_stdhandles
  243.     .line    96
  244.     call    _ExitProcess@4
  245. _$67:
  246.     .line    97
  247.     popl    %edi
  248.     leave
  249.     ret
  250. _$69:
  251.     .size    _mainCRTStartup,_$69-_mainCRTStartup
  252.     .globl    _mainCRTStartup
  253.     .type    __ioinit,function
  254. __ioinit:
  255.     pushl    %ebp
  256.     movl    %esp,%ebp
  257.     subl    $80,%esp
  258.     pushl    %edi
  259.     movw    $0,-24(%ebp)
  260.     leal    -68(%ebp),%edi
  261.     pushl    %edi
  262.     call    _GetStartupInfoA@4
  263.     xor    %eax,%eax
  264.     testw    $256,-24(%ebp)
  265.     je    _$127
  266.     pushl    $0
  267.     pushl    -12(%ebp)
  268.     call    _open_osfhandle
  269.     addl    $8,%esp
  270.     movl    %eax,-72(%ebp)
  271.     pushl    $0
  272.     pushl    -8(%ebp)
  273.     call    _open_osfhandle
  274.     addl    $8,%esp
  275.     movl    %eax,-76(%ebp)
  276.     pushl    $0
  277.     pushl    -4(%ebp)
  278.     call    _open_osfhandle
  279.     addl    $8,%esp
  280.     movl    %eax,-80(%ebp)
  281.     pushl    $_$133
  282.     pushl    -72(%ebp)
  283.     call    _fdopen
  284.     addl    $8,%esp
  285.     movl    %eax,_stdin
  286.     pushl    $_$134
  287.     pushl    -76(%ebp)
  288.     call    _fdopen
  289.     addl    $8,%esp
  290.     movl    %eax,_stdout
  291.     pushl    $_$134
  292.     pushl    -80(%ebp)
  293.     call    _fdopen
  294.     addl    $8,%esp
  295.     movl    %eax,_stderr
  296.     movl    $1,%eax
  297. _$127:
  298.     popl    %edi
  299.     leave
  300.     ret
  301. _$141:
  302.     .size    __ioinit,_$141-__ioinit
  303.     .globl    __init_stdhandles
  304.     .type    __init_stdhandles,function
  305. __init_stdhandles:
  306.     pushl    %ebp
  307.     movl    %esp,%ebp
  308.     subl    $12,%esp
  309.     call    __ioinit
  310.     or    %eax,%eax
  311.     jne    _$AfterStdHandlesInit
  312.     pushl    %edi
  313.     .line    120
  314.     .line    123
  315.     pushl    $0
  316.     pushl    $0xfffffff6
  317.     call    _open_osfhandle
  318.     movl    %eax,-8(%ebp)
  319.     .line    124
  320.     pushl    $0
  321.     pushl    $0xfffffff5
  322.     call    _open_osfhandle
  323.     movl    %eax,-4(%ebp)
  324.     .line    125
  325.     pushl    $0
  326.     pushl    $0xfffffff4
  327.     call    _open_osfhandle
  328.     movl    %eax,-12(%ebp)
  329.     pushl    $0x4000
  330.     pushl    -8(%ebp)
  331.     call    __setmode
  332.     add    $8,%esp
  333.     pushl    $_$73
  334.     pushl    -8(%ebp)
  335.     call    _fdopen
  336.     movl    %eax,_stdin
  337.     .line    128
  338.     pushl    $_$74
  339.     pushl    -4(%ebp)
  340.     call    _fdopen
  341.     movl    %eax,_stdout
  342.     .line    129
  343.     pushl    $_$74
  344.     pushl    -12(%ebp)
  345.     call    _fdopen
  346.     addl    $48,%esp
  347.     movl    %eax,_stderr
  348.     .line    136
  349. _$AfterStdHandlesInit:
  350.     movl    _stdout,%edi
  351.     or    %edi,%edi
  352.     je    _$75
  353.     .line    137
  354.     pushl    $0x0
  355.     pushl    %edi
  356.     call    _setbuf
  357.     addl    $8,%esp
  358. _$75:
  359.     .line    138
  360.     movl    _stderr,%edi
  361.     or    %edi,%edi
  362.     je    _$77
  363.     .line    139
  364.     pushl    $0x0
  365.     pushl    %edi
  366.     call    _setbuf
  367.     addl    $8,%esp
  368. _$77:
  369. _$72:
  370.     .line    140
  371.     popl    %edi
  372.     leave
  373.     ret
  374. _$85:
  375.     .size    __init_stdhandles,_$85-__init_stdhandles
  376.     .type    __close_stdhandles,function
  377. __close_stdhandles:
  378.     movl    _stderr,%eax
  379.     or    %eax,%eax
  380.     je    _$87
  381.     .line    156
  382.     pushl    %eax
  383.     call    _fclose
  384.     pop    %ecx
  385. _$87:
  386.     movl    _stdin,%eax
  387.     or    %eax,%eax
  388.     je    _$89
  389.     .line    158
  390.     pushl    %eax
  391.     call    _fclose
  392.     pop    %ecx
  393. _$89:
  394.     .line    159
  395.     movl    _stdout,%eax
  396.     or    %eax,%eax
  397.     je    _$91
  398.     .line    160
  399.     pushl    %eax
  400.     call    _fclose
  401.     pop    %ecx
  402. _$91:
  403.     .line    161
  404.     ret
  405.     .align    2
  406. _$93:
  407.     .size    __close_stdhandles,_$93-__close_stdhandles
  408. ; This returns %fs:0, but the assembler doesn't work for assembling that
  409. ; instruction, so it is written this way...
  410.     .globl    _NtCurrentTeb
  411. _NtCurrentTeb:
  412.     .byte    100
  413.     .byte    163
  414.     .long    0
  415.     ret
  416.     .extern    _open_osfhandle
  417.     .text
  418.     .extern    _signal
  419.     .extern    __GetMainArgs
  420.     .extern    _flushall
  421.     .extern    _cexit
  422.     .extern    _main
  423.     .extern    _ExitProcess@4
  424.     .extern    _setbuf
  425.     .extern    _fdopen
  426.     .extern    _fclose
  427.     .extern _RtlUnwind@16
  428.     .extern __setmode
  429.     .extern    _GetStartupInfoA@4
  430.     .extern    _raise
  431.     .extern    __signalHandler
  432.     .data
  433. __except_list:
  434.     .long    __except_list
  435.     .align    1
  436. _$74:
  437.     .byte    119,0
  438.     .align    1
  439. _$73:
  440.     .byte    114,116,0
  441. _$134:
  442.     .byte    119,0
  443.     .align    1
  444. _$133:
  445.     .byte    114,0
  446.     .align    2
  447.     .globl    __CurrentException
  448.     .globl    __CurrentContext
  449. __CurrentException:
  450.     .long    0
  451. __CurrentContext:
  452.     .long    0
  453.         .section .idata$3
  454.         .long   0
  455.         .long   0
  456.         .long   0
  457.         .long   0
  458.         .long   0
  459.         .long   0
  460.         .long   0
  461.         .long   0
  462.     .long    0
  463.     .long    0
  464.     .long    0
  465.     .long    0
  466.     .long    0
  467.     .long    0
  468.     .long    0
  469.     .long    0
  470.     .long    0
  471.     .long    0
  472.     .long    0
  473.     .long    0
  474.     .long    0
  475.     .long    0
  476.     .long    0
  477.     .long    0
  478.     .section .idata$6
  479.     .long    0
  480.         .section .rdata
  481.         .long   0
  482.         .long   0
  483.         .long   0
  484.         .long   0
  485.         .long   0
  486.         .long   0
  487.         .long   0
  488.         .long   0
  489.         .long   0
  490.         .long   0
  491.         .long   0
  492.         .long   0
  493.         .long   0
  494.         .long   0
  495.         .long   0
  496.         .long   0
  497.         .long   0
  498.         .long   0
  499.         .long   0
  500.         .long   0
  501.         .long   0
  502.     .long    0
  503.         .text
  504.