Advertisement
NaZaRa

Loader.S

Jun 29th, 2015
555
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     .file   "loader.c"
  2.     .comm   _r, 4, 2
  3.     .comm   _a, 4, 2
  4.     .text
  5.     .globl  _P
  6.     .def    _P; .scl    2;  .type   32; .endef
  7. _P:
  8.     pushl   %ebp
  9.     movl    %esp, %ebp
  10.     pushl   %ebx
  11.     movl    8(%ebp), %eax
  12.     movl    %eax, %edx
  13.     notl    %edx
  14.     movl    8(%ebp), %eax
  15.     movl    %eax, %ecx
  16.     subl    %edx, %ecx
  17.     movl    %ecx, %edx
  18.     movl    12(%ebp), %eax
  19.     movl    %edx, %ebx
  20.     movb    %al, %cl
  21.     sall    %cl, %ebx
  22.     movl    %ebx, %eax
  23.     popl    %ebx
  24.     popl    %ebp
  25.     ret
  26.     .globl  _Z
  27.     .def    _Z; .scl    2;  .type   32; .endef
  28. _Z:
  29.     pushl   %ebp
  30.     movl    %esp, %ebp
  31.     subl    $24, %esp
  32.     movl    8(%ebp), %eax
  33.     andl    $1, %eax
  34.     testl   %eax, %eax
  35.     jne L4
  36.     movl    8(%ebp), %eax
  37.     movl    %eax, %edx
  38.     shrl    $31, %edx
  39.     addl    %edx, %eax
  40.     sarl    %eax
  41.     movl    %eax, (%esp)
  42.     call    _Z
  43.     incl    %eax
  44.     jmp L5
  45. L4:
  46.     movl    $0, %eax
  47. L5:
  48.     movl    %eax, _r
  49.     movl    _r, %eax
  50.     leave
  51.     ret
  52.     .globl  _L
  53.     .def    _L; .scl    2;  .type   32; .endef
  54. _L:
  55.     pushl   %ebp
  56.     movl    %esp, %ebp
  57.     pushl   %ebx
  58.     subl    $20, %esp
  59.     movl    8(%ebp), %eax
  60.     movl    %eax, %edx
  61.     shrl    $31, %edx
  62.     addl    %edx, %eax
  63.     sarl    %eax
  64.     movl    %eax, %ebx
  65.     movl    8(%ebp), %eax
  66.     movl    %eax, (%esp)
  67.     call    _Z
  68.     movl    %ebx, %edx
  69.     movb    %al, %cl
  70.     sarl    %cl, %edx
  71.     movl    %edx, %eax
  72.     addl    $20, %esp
  73.     popl    %ebx
  74.     popl    %ebp
  75.     ret
  76.     .globl  _S
  77.     .def    _S; .scl    2;  .type   32; .endef
  78. _S:
  79.     pushl   %ebp
  80.     movl    %esp, %ebp
  81.     pushl   %ebx
  82.     subl    $36, %esp
  83.     movl    20(%ebp), %eax
  84.     movl    %eax, (%esp)
  85.     call    _L
  86.     movl    %eax, -12(%ebp)
  87.     movl    _r, %eax
  88.     movl    %eax, -16(%ebp)
  89.     cmpl    $2, -12(%ebp)
  90.     je  L10
  91.     cmpl    $2, -12(%ebp)
  92.     jle L11
  93.     movl    -12(%ebp), %eax
  94.     cmpl    8(%ebp), %eax
  95.     je  L12
  96.     movl    -12(%ebp), %eax
  97.     cmpl    8(%ebp), %eax
  98.     setg    %al
  99.     movzbl  %al, %eax
  100.     imull   16(%ebp), %eax
  101.     movl    20(%ebp), %edx
  102.     movl    %edx, %ecx
  103.     subl    %eax, %ecx
  104.     movl    %ecx, %eax
  105.     jmp L13
  106. L12:
  107.     movl    12(%ebp), %eax
  108. L13:
  109.     jmp L14
  110. L11:
  111.     movl    -16(%ebp), %eax
  112.     movl    %eax, (%esp)
  113.     call    _Z
  114.     movl    %eax, %ebx
  115.     movl    12(%ebp), %eax
  116.     movl    %eax, 12(%esp)
  117.     movl    $-4, 8(%esp)
  118.     movl    $13, 4(%esp)
  119.     movl    $4, (%esp)
  120.     call    _S
  121.     movl    %eax, 20(%ebp)
  122.     movl    8(%ebp), %eax
  123.     leal    2(%eax), %edx
  124.     movl    %ebx, 12(%esp)
  125.     movl    16(%ebp), %eax
  126.     movl    %eax, 8(%esp)
  127.     movl    20(%ebp), %eax
  128.     movl    %eax, 4(%esp)
  129.     movl    %edx, (%esp)
  130.     call    _S
  131.     movl    %eax, %ebx
  132.     movl    -16(%ebp), %eax
  133.     movl    %eax, (%esp)
  134.     call    _L
  135.     movl    %eax, 12(%esp)
  136.     movl    16(%ebp), %eax
  137.     movl    %eax, 8(%esp)
  138.     movl    12(%ebp), %eax
  139.     movl    %eax, 4(%esp)
  140.     movl    8(%ebp), %eax
  141.     movl    %eax, (%esp)
  142.     call    _S
  143.     movl    %ebx, 4(%esp)
  144.     movl    %eax, (%esp)
  145.     call    _P
  146.     movl    %eax, 4(%esp)
  147.     movl    -12(%ebp), %eax
  148.     movl    %eax, (%esp)
  149.     call    _P
  150. L14:
  151.     jmp L15
  152. L10:
  153.     movl    -16(%ebp), %eax
  154.     movl    %eax, (%esp)
  155.     call    _Z
  156.     movl    %eax, 12(%esp)
  157.     movl    16(%ebp), %eax
  158.     movl    %eax, 8(%esp)
  159.     movl    12(%ebp), %eax
  160.     movl    %eax, 4(%esp)
  161.     movl    8(%ebp), %eax
  162.     movl    %eax, (%esp)
  163.     call    _S
  164.     movl    %eax, %ebx
  165.     movl    -16(%ebp), %eax
  166.     movl    %eax, (%esp)
  167.     call    _L
  168.     movl    %eax, 12(%esp)
  169.     movl    16(%ebp), %eax
  170.     movl    %eax, 8(%esp)
  171.     movl    12(%ebp), %eax
  172.     movl    %eax, 4(%esp)
  173.     movl    8(%ebp), %eax
  174.     movl    %eax, (%esp)
  175.     call    _S
  176.     movl    %ebx, 4(%esp)
  177.     movl    %eax, (%esp)
  178.     call    _A
  179. L15:
  180.     addl    $36, %esp
  181.     popl    %ebx
  182.     popl    %ebp
  183.     ret
  184.     .globl  _A
  185.     .def    _A; .scl    2;  .type   32; .endef
  186. _A:
  187.     pushl   %ebp
  188.     movl    %esp, %ebp
  189.     pushl   %ebx
  190.     subl    $20, %esp
  191.     movl    8(%ebp), %eax
  192.     movl    %eax, (%esp)
  193.     call    _L
  194.     cmpl    $1, %eax
  195.     je  L18
  196.     movl    12(%ebp), %eax
  197.     movl    %eax, 4(%esp)
  198.     movl    8(%ebp), %eax
  199.     movl    %eax, (%esp)
  200.     call    _P
  201.     movl    $5, %edx
  202.     movl    %edx, %ebx
  203.     movb    %al, %cl
  204.     sall    %cl, %ebx
  205.     movl    %ebx, %eax
  206.     jmp L19
  207. L18:
  208.     movl    _r, %eax
  209.     movl    %eax, (%esp)
  210.     call    _Z
  211.     movl    %eax, 12(%esp)
  212.     movl    $4, 8(%esp)
  213.     movl    12(%ebp), %eax
  214.     movl    %eax, 4(%esp)
  215.     movl    $4, (%esp)
  216.     call    _S
  217. L19:
  218.     addl    $20, %esp
  219.     popl    %ebx
  220.     popl    %ebp
  221.     ret
  222.     .globl  _D
  223.     .def    _D; .scl    2;  .type   32; .endef
  224. _D:
  225.     pushl   %ebp
  226.     movl    %esp, %ebp
  227.     pushl   %esi
  228.     pushl   %ebx
  229.     subl    $48, %esp
  230.     movl    $0, -12(%ebp)
  231.     movl    $7, -16(%ebp)
  232.     movl    $14, -20(%ebp)
  233.     jmp L22
  234. L41:
  235.     movl    8(%ebp), %eax
  236.     movl    %eax, (%esp)
  237.     call    _D
  238.     movl    %eax, (%esp)
  239.     call    _L
  240.     movl    %eax, (%esp)
  241.     call    _L
  242.     movl    %eax, -24(%ebp)
  243.     movl    _r, %eax
  244.     movl    %eax, (%esp)
  245.     call    _L
  246.     movl    %eax, -28(%ebp)
  247.     movl    _r, %eax
  248.     movl    %eax, (%esp)
  249.     call    _L
  250.     movl    %eax, 8(%ebp)
  251.     movl    _r, %eax
  252.     cmpl    %eax, -12(%ebp)
  253.     jne L31
  254.     movl    -20(%ebp), %eax
  255.     movl    %eax, (%esp)
  256.     call    _L
  257.     testl   %eax, %eax
  258.     jne L43
  259.     movl    _r, %eax
  260.     movl    %eax, (%esp)
  261.     call    _L
  262.     cmpl    -28(%ebp), %eax
  263.     jne L43
  264.     movl    8(%ebp), %eax
  265.     movl    %eax, %edx
  266.     shrl    $31, %edx
  267.     addl    %edx, %eax
  268.     sarl    %eax
  269.     movl    %eax, 8(%ebp)
  270.     movl    8(%ebp), %eax
  271.     andl    $1, %eax
  272.     testl   %eax, %eax
  273.     je  L26
  274.     movl    _r, %eax
  275.     movl    %eax, 12(%esp)
  276.     movl    $4, 8(%esp)
  277.     movl    -24(%ebp), %eax
  278.     movl    %eax, 4(%esp)
  279.     movl    $4, (%esp)
  280.     call    _S
  281.     movl    %eax, -20(%ebp)
  282.     movl    -24(%ebp), %eax
  283.     movl    %eax, 4(%esp)
  284.     movl    -16(%ebp), %eax
  285.     movl    %eax, (%esp)
  286.     call    _A
  287.     movl    %eax, -16(%ebp)
  288.     cmpl    $0, -16(%ebp)
  289. L43:
  290.     nop
  291. L26:
  292.     movl    -28(%ebp), %eax
  293.     movl    %eax, %edx
  294.     shrl    $31, %edx
  295.     addl    %edx, %eax
  296.     sarl    %eax
  297.     movl    %eax, %edx
  298.     movl    8(%ebp), %eax
  299.     movl    %eax, %ecx
  300.     shrl    $31, %ecx
  301.     addl    %ecx, %eax
  302.     sarl    %eax
  303.     movl    %eax, 8(%ebp)
  304.     movl    8(%ebp), %eax
  305.     andl    $-2147483647, %eax
  306.     testl   %eax, %eax
  307.     jns L27
  308.     decl    %eax
  309.     orl $-2, %eax
  310.     incl    %eax
  311. L27:
  312.     andl    %edx, %eax
  313.     testl   %eax, %eax
  314.     je  L28
  315.     movl    -12(%ebp), %eax
  316.     movl    %eax, 4(%esp)
  317.     movl    -24(%ebp), %eax
  318.     movl    %eax, (%esp)
  319.     call    _P
  320.     movl    %eax, -12(%ebp)
  321.     movl    -16(%ebp), %eax
  322.     movl    %eax, 12(%esp)
  323.     movl    $-4, 8(%esp)
  324.     movl    $13, 4(%esp)
  325.     movl    $4, (%esp)
  326.     call    _S
  327.     movl    %eax, -16(%ebp)
  328.     movl    -20(%ebp), %eax
  329.     movl    %eax, 12(%esp)
  330.     movl    $-4, 8(%esp)
  331.     movl    $13, 4(%esp)
  332.     movl    $4, (%esp)
  333.     call    _S
  334.     movl    %eax, -20(%ebp)
  335.     cmpl    $0, -20(%ebp)
  336.     je  L28
  337.     movl    $1, %eax
  338.     jmp L29
  339. L28:
  340.     movl    $0, %eax
  341. L29:
  342.     testl   %eax, %eax
  343. L31:
  344.     cmpl    $0, -12(%ebp)
  345.     je  L36
  346.     movl    8(%ebp), %eax
  347.     movl    %eax, %edx
  348.     shrl    $31, %edx
  349.     addl    %edx, %eax
  350.     sarl    %eax
  351.     movl    %eax, 8(%ebp)
  352.     movl    8(%ebp), %eax
  353.     andl    $1, %eax
  354.     testl   %eax, %eax
  355.     je  L36
  356.     movl    -12(%ebp), %eax
  357.     movl    %eax, (%esp)
  358.     call    _L
  359.     movl    -16(%ebp), %edx
  360.     movl    %edx, 4(%esp)
  361.     movl    %eax, (%esp)
  362.     call    _P
  363.     movl    %eax, %ebx
  364.     movl    -20(%ebp), %eax
  365.     notl    %eax
  366.     movl    %eax, %edx
  367.     andl    $2, %edx
  368.     movl    8(%ebp), %eax
  369.     movl    %eax, %ecx
  370.     shrl    $31, %ecx
  371.     addl    %ecx, %eax
  372.     sarl    %eax
  373.     movl    %eax, 8(%ebp)
  374.     movl    8(%ebp), %eax
  375.     andl    $-2147483647, %eax
  376.     testl   %eax, %eax
  377.     jns L33
  378.     decl    %eax
  379.     orl $-2, %eax
  380.     incl    %eax
  381. L33:
  382.     orl %edx, %eax
  383.     testl   %eax, %eax
  384.     je  L34
  385.     movl    -12(%ebp), %eax
  386.     movl    %eax, (%esp)
  387.     call    _L
  388.     movl    -20(%ebp), %edx
  389.     movl    %edx, 4(%esp)
  390.     movl    %eax, (%esp)
  391.     call    _P
  392.     movl    $1, %edx
  393.     movl    %edx, %esi
  394.     movb    %al, %cl
  395.     sall    %cl, %esi
  396.     movl    %esi, %eax
  397.     movl    %eax, -20(%ebp)
  398.     cmpl    $0, -20(%ebp)
  399.     je  L34
  400.     movl    $1, %eax
  401.     jmp L35
  402. L34:
  403.     movl    $0, %eax
  404. L35:
  405.     movl    %ebx, 4(%esp)
  406.     movl    %eax, (%esp)
  407.     call    _P
  408.     movl    %eax, -16(%ebp)
  409.     movl    _r, %eax
  410.     movl    %eax, -12(%ebp)
  411.     cmpl    $0, -12(%ebp)
  412. L36:
  413.     movl    -20(%ebp), %eax
  414.     movl    %eax, %edx
  415.     shrl    $31, %edx
  416.     addl    %edx, %eax
  417.     sarl    %eax
  418.     movl    %eax, %edx
  419.     movl    8(%ebp), %eax
  420.     movl    %eax, %ecx
  421.     shrl    $31, %ecx
  422.     addl    %ecx, %eax
  423.     sarl    %eax
  424.     movl    %eax, 8(%ebp)
  425.     movl    8(%ebp), %eax
  426.     andl    $-2147483647, %eax
  427.     testl   %eax, %eax
  428.     jns L37
  429.     decl    %eax
  430.     orl $-2, %eax
  431.     incl    %eax
  432. L37:
  433.     andl    %edx, %eax
  434.     testl   %eax, %eax
  435.     je  L22
  436.     movl    -12(%ebp), %eax
  437.     movl    %eax, 4(%esp)
  438.     movl    -16(%ebp), %eax
  439.     movl    %eax, (%esp)
  440.     call    _P
  441.     movl    %eax, -12(%ebp)
  442.     movl    -16(%ebp), %eax
  443.     movl    %eax, 12(%esp)
  444.     movl    $-4, 8(%esp)
  445.     movl    $13, 4(%esp)
  446.     movl    $4, (%esp)
  447.     call    _S
  448.     movl    %eax, -20(%ebp)
  449.     movl    $9, -16(%ebp)
  450.     nop
  451. L22:
  452.     cmpl    $0, 8(%ebp)
  453.     je  L40
  454.     movl    8(%ebp), %eax
  455.     decl    %eax
  456.     movl    %eax, (%esp)
  457.     call    _D
  458.     testl   %eax, %eax
  459. L40:
  460.     movl    8(%ebp), %eax
  461.     movl    %eax, %edx
  462.     shrl    $31, %edx
  463.     addl    %edx, %eax
  464.     sarl    %eax
  465.     movl    %eax, 8(%ebp)
  466.     movl    8(%ebp), %eax
  467.     andl    $1, %eax
  468.     testl   %eax, %eax
  469.     jne L41
  470.     movl    _a, %ebx
  471.     movl    -12(%ebp), %eax
  472.     movl    %eax, 4(%esp)
  473.     movl    8(%ebp), %eax
  474.     movl    %eax, (%esp)
  475.     call    _P
  476.     movl    %eax, 4(%esp)
  477.     movl    -20(%ebp), %eax
  478.     movl    %eax, (%esp)
  479.     call    _P
  480.     movl    %eax, 4(%esp)
  481.     movl    -16(%ebp), %eax
  482.     movl    %eax, (%esp)
  483.     call    _P
  484.     movl    %ebx, 4(%esp)
  485.     movl    %eax, (%esp)
  486.     call    _P
  487.     movl    %eax, _a
  488.     movl    _a, %eax
  489.     addl    $48, %esp
  490.     popl    %ebx
  491.     popl    %esi
  492.     popl    %ebp
  493.     ret
  494.     .def    ___main;    .scl    2;  .type   32; .endef
  495.     .globl  _main
  496.     .def    _main;  .scl    2;  .type   32; .endef
  497. _main:
  498.     pushl   %ebp
  499.     movl    %esp, %ebp
  500.     andl    $-16, %esp
  501.     subl    $16, %esp
  502.     call    ___main
  503.     movl    $99, (%esp)
  504.     call    _D
  505.     movl    %eax, (%esp)
  506.     call    _D
  507.     movl    %eax, (%esp)
  508.     call    _D
  509.     movl    %eax, (%esp)
  510.     call    _D
  511.     movl    %eax, (%esp)
  512.     call    _D
  513.     leave
  514.     ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement