Advertisement
Guest User

result after segment modification

a guest
Nov 17th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.     section .text
  2. handleError:
  3.     push    ebp
  4.     mov ebp, esp
  5.     sub esp, 20
  6.     push    1
  7.     call    exit
  8. handleWindowClose:
  9.     push    ebp
  10.     mov ebp, esp
  11.     sub esp, 20
  12.     push    0
  13.     call    exit
  14. handleKey:
  15.     push    ebp
  16.     mov ebp, esp
  17.     push    ebx
  18.     push    eax
  19.     mov edx, DWORD [ebp+20]
  20.     mov ecx, DWORD [ebp+12]
  21.     mov ebx, DWORD [ebp+8]
  22.     cmp edx, 1
  23.     sete    al
  24.     cmp ecx, 256
  25.     jne L6
  26.     test    al, al
  27.     je  L6
  28.     sub esp, 12
  29.     push    0
  30.     call    exit
  31. L6:
  32.     cmp BYTE [app+10], 0
  33.     je  L7
  34.     cmp ecx, 65
  35.     jne L8
  36.     test    al, al
  37.     jne L30
  38.     test    edx, edx
  39.     jne L5
  40.     push    eax
  41.     push    eax
  42.     push    90
  43.     push    ebx
  44.     call    glfwGetKey
  45.     add esp, 16
  46.     dec eax
  47.     jne L14
  48.     movsd   xmm0, QWORD [player1+40]
  49.     movsd   QWORD [player1+32], xmm0
  50.     jmp L5
  51. L8:
  52.     cmp ecx, 90
  53.     jne L7
  54.     test    al, al
  55.     je  L12
  56.     movsd   xmm1, QWORD [player1+40]
  57.     movsd   QWORD [player1+32], xmm1
  58.     jmp L5
  59. L12:
  60.     test    edx, edx
  61.     jne L5
  62.     push    ecx
  63.     push    ecx
  64.     push    65
  65.     push    ebx
  66.     call    glfwGetKey
  67.     add esp, 16
  68.     dec eax
  69.     jne L14
  70. L30:
  71.     fld QWORD [player1+40]
  72.     fchs
  73.     fstp    QWORD [player1+32]
  74.     jmp L5
  75. L14:
  76.     fldz
  77.     fstp    QWORD [player1+32]
  78.     jmp L5
  79. L7:
  80.     cmp ecx, 39
  81.     jne L15
  82.     test    al, al
  83.     jne L31
  84.     test    edx, edx
  85.     jne L5
  86.     push    edx
  87.     push    edx
  88.     push    47
  89.     push    ebx
  90.     call    glfwGetKey
  91.     add esp, 16
  92.     dec eax
  93.     jne L22
  94.     movsd   xmm2, QWORD [player2+40]
  95.     movsd   QWORD [player2+32], xmm2
  96.     jmp L5
  97. L15:
  98.     cmp ecx, 47
  99.     jne L5
  100.     test    al, al
  101.     je  L21
  102.     movsd   xmm3, QWORD [player2+40]
  103.     movsd   QWORD [player2+32], xmm3
  104.     jmp L5
  105. L21:
  106.     test    edx, edx
  107.     jne L5
  108.     push    eax
  109.     push    eax
  110.     push    39
  111.     push    ebx
  112.     call    glfwGetKey
  113.     add esp, 16
  114.     dec eax
  115.     jne L22
  116. L31:
  117.     fld QWORD [player2+40]
  118.     fchs
  119.     fstp    QWORD [player2+32]
  120.     jmp L5
  121. L22:
  122.     fldz
  123.     fstp    QWORD [player2+32]
  124. L5:
  125.     mov ebx, DWORD [ebp-4]
  126.     leave
  127.     ret
  128. handleFramebufferSize:
  129.     push    ebp
  130.     mov ebp, esp
  131.     sub esp, 8
  132.     mov edx, DWORD [ebp+16]
  133.     mov eax, DWORD [ebp+12]
  134.     push    edx
  135.     push    eax
  136.     push    0
  137.     push    0
  138.     mov DWORD [app], eax
  139.     mov DWORD [app+4], edx
  140.     call    glViewport
  141.     mov DWORD [esp], 5889
  142.     call    glMatrixMode
  143.     call    glLoadIdentity
  144.     push    eax
  145.     push    eax
  146.     fld1
  147.     fst QWORD [esp]
  148.     push    -1074790400
  149.     push    0
  150.     sub esp, 32
  151.     fldz
  152.     fst QWORD [esp+24]
  153.     fxch    st1
  154.     fst QWORD [esp+16]
  155.     fstp    QWORD [esp+8]
  156.     fstp    QWORD [esp]
  157.     call    glOrtho
  158.     add esp, 64
  159.     leave
  160.     ret
  161. fps:
  162.     push    ebp
  163.     mov ebp, esp
  164.     sub esp, 8
  165.     call    glfwGetTime
  166.     fst QWORD [time.15415]
  167.     fld QWORD [time_old.15416]
  168.     fsubr   st0, st1
  169.     fld1
  170.     fdivrp  st1, st0
  171.     fst QWORD [ret_val.15417]
  172.     fxch    st1
  173.     fstp    QWORD [time_old.15416]
  174.     leave
  175.     ret
  176. reset:
  177.     push    ebp
  178.     mov ebp, esp
  179.     sub esp, 16
  180.     fld QWORD [LC4]
  181.     fst QWORD [ball]
  182.     fstp    QWORD [ball+8]
  183.     push    0
  184.     fld QWORD [LC7]
  185.     fst QWORD [player1+8]
  186.     push    0
  187.     fstp    QWORD [player2+8]
  188.     mov DWORD [ball+40], 1202590843
  189.     mov DWORD [ball+44], 1065646817
  190.     mov DWORD [ball+32], -1717986918
  191.     mov DWORD [ball+36], 1069128089
  192.     call    glfwSetTime
  193.     add esp, 16
  194.     leave
  195.     ret
  196. calcLineY:
  197.     push    ebp
  198.     mov ebp, esp
  199.     mov eax, DWORD [ebp+8]
  200.     fld QWORD [eax+8]
  201.     fadd    QWORD [eax+32]
  202.     fldz
  203.     fucomi  st0, st1
  204.     ja  L42
  205.     fstp    st0
  206.     fld QWORD [eax+24]
  207.     fld st1
  208.     fadd    st0, st1
  209.     fld1
  210.     fxch    st1
  211.     fucomip st0, st1
  212.     jbe L45
  213.     fstp    st2
  214.     fxch    st1
  215.     fsubrp  st1, st0
  216.     jmp L40
  217. L42:
  218.     fstp    st1
  219.     jmp L40
  220. L45:
  221.     fstp    st0
  222.     fstp    st0
  223. L40:
  224.     fstp    QWORD [eax+8]
  225.     pop ebp
  226.     ret
  227. flipY:
  228.     push    ebp
  229.     mov ebp, esp
  230.     fld QWORD [ebp+8]
  231.     fchs
  232.     pop ebp
  233.     ret
  234. flipX:
  235.     push    ebp
  236.     fld QWORD [LC8]
  237.     mov ebp, esp
  238.     fsub    QWORD [ebp+8]
  239.     pop ebp
  240.     ret
  241. calcBall:
  242.     push    ebp
  243.     mov ebp, esp
  244.     push    ebx
  245.     sub esp, 36
  246.     mov ebx, DWORD [ebp+8]
  247.     lea edx, [ebp-24]
  248.     lea eax, [ebp-16]
  249.     fld QWORD [ebx+32]
  250.     push    edx
  251.     push    eax
  252.     push    eax
  253.     push    eax
  254.     fst QWORD [esp]
  255.     fstp    QWORD [ebp-32]
  256.     call    sincos
  257.     add esp, 16
  258.     fld QWORD [ebp-16]
  259.     fld QWORD [ebx+40]
  260.     fld QWORD [ebp-24]
  261.     fmul    st0, st1
  262.     fadd    QWORD [ebx]
  263.     fld QWORD [ebx+8]
  264.     fldz
  265.     fucomi  st0, st2
  266.     fld QWORD [ebp-32]
  267.     jbe L64
  268.     fstp    st0
  269.     fstp    st0
  270.     fstp    st0
  271.     fstp    st0
  272.     fstp    st0
  273.     fstp    st0
  274.     inc DWORD [player1+48]
  275.     jmp L70
  276. L64:
  277.     fld1
  278.     fld QWORD [ebx+16]
  279.     fsubr   st0, st1
  280.     fxch    st5
  281.     fucomi  st0, st5
  282.     fstp    st5
  283.     jbe L65
  284.     fstp    st0
  285.     fstp    st0
  286.     fstp    st0
  287.     fstp    st0
  288.     fstp    st0
  289.     fstp    st0
  290.     fstp    st0
  291.     inc DWORD [player2+48]
  292. L70:
  293.     mov ebx, DWORD [ebp-4]
  294.     leave
  295.     jmp reset
  296. L65:
  297.     fxch    st6
  298.     fmul    st0, st5
  299.     faddp   st3, st0
  300.     fxch    st3
  301.     fstp    QWORD [ebx]
  302.     fucomip st0, st1
  303.     ja  L71
  304.     fxch    st3
  305.     fsub    QWORD [ebx+24]
  306.     fxch    st3
  307.     fucomi  st0, st3
  308.     fstp    st3
  309.     jbe L67
  310.     fstp    st2
  311.     fxch    st1
  312.     jmp L69
  313. L71:
  314.     fstp    st0
  315.     fstp    st2
  316.     fxch    st1
  317. L69:
  318.     fchs
  319.     fstp    QWORD [ebx+32]
  320.     jmp L57
  321. L67:
  322.     fstp    st0
  323.     fxch    st1
  324.     fstp    QWORD [ebx+8]
  325. L57:
  326.     fadd    QWORD [ebx+48]
  327.     fstp    QWORD [ebx+40]
  328.     mov ebx, DWORD [ebp-4]
  329.     leave
  330.     ret
  331. intersects:
  332.     push    ebp
  333.     mov ebp, esp
  334.     mov eax, DWORD [ebp+12]
  335.     mov edx, DWORD [ebp+8]
  336.     fld QWORD [eax]
  337.     fld QWORD [edx]
  338.     fld QWORD [edx+16]
  339.     fadd    st0, st1
  340.     fucomip st0, st2
  341.     jbe L87
  342.     fxch    st1
  343.     fadd    QWORD [eax+16]
  344.     fucomip st0, st1
  345.     fstp    st0
  346.     jbe L85
  347.     fld QWORD [eax+8]
  348.     fld QWORD [edx+8]
  349.     fld QWORD [edx+24]
  350.     fadd    st0, st1
  351.     fucomip st0, st2
  352.     jbe L88
  353.     fxch    st1
  354.     fadd    QWORD [eax+24]
  355.     fucomip st0, st1
  356.     fstp    st0
  357.     seta    al
  358.     jmp L73
  359. L87:
  360.     fstp    st0
  361.     fstp    st0
  362.     jmp L85
  363. L88:
  364.     fstp    st0
  365.     fstp    st0
  366. L85:
  367.     xor eax, eax
  368. L73:
  369.     pop ebp
  370.     ret
  371. getRelDistFromCenter:
  372.     push    ebp
  373.     mov ebp, esp
  374.     mov edx, DWORD [ebp+8]
  375.     mov eax, DWORD [ebp+12]
  376.     pop ebp
  377.     fld QWORD [edx+24]
  378.     fld DWORD [LC9]
  379.     fld st1
  380.     fmul    st0, st1
  381.     fadd    QWORD [edx+8]
  382.     fxch    st1
  383.     fmul    QWORD [eax+24]
  384.     fadd    QWORD [eax+8]
  385.     fsubp   st1, st0
  386.     fdivrp  st1, st0
  387.     ret
  388. calc:
  389.     push    ebp
  390.     mov ebp, esp
  391.     sub esp, 8
  392.     cmp BYTE [app+10], 0
  393.     jne L92
  394.     fld QWORD [ball+8]
  395.     fld QWORD [player1+8]
  396.     fucomi  st0, st1
  397.     jbe L110
  398.     fstp    st0
  399.     fstp    st0
  400.     fld QWORD [player1+40]
  401.     fchs
  402.     fdiv    QWORD [LC10]
  403.     jmp L113
  404. L110:
  405.     fxch    st1
  406.     fadd    QWORD [ball+24]
  407.     fxch    st1
  408.     fadd    QWORD [player1+24]
  409.     fxch    st1
  410.     fucomip st0, st1
  411.     fstp    st0
  412.     jbe L111
  413.     fld QWORD [LC10]
  414.     fdivr   QWORD [player1+40]
  415. L113:
  416.     fstp    QWORD [player1+32]
  417.     jmp L92
  418. L111:
  419.     fldz
  420.     fstp    QWORD [player1+32]
  421. L92:
  422.     push    eax
  423.     push    dword player1
  424.     call    calcLineY
  425.     mov DWORD [esp], dword player2
  426.     call    calcLineY
  427.     pop eax
  428.     pop edx
  429.     call    glfwGetTime
  430.     fld1
  431.     fxch    st1
  432.     fucomip st0, st1
  433.     fstp    st0
  434.     jbe L97
  435.     sub esp, 12
  436.     push    dword ball
  437.     call    calcBall
  438.     add esp, 16
  439. L97:
  440.     push    eax
  441.     push    eax
  442.     push    dword ball
  443.     push    dword player1
  444.     call    intersects
  445.     add esp, 16
  446.     test    al, al
  447.     je  L99
  448.     push    eax
  449.     push    eax
  450.     push    dword ball
  451.     push    dword player1
  452.     call    getRelDistFromCenter
  453.     add esp, 16
  454.     fmul    DWORD [LC11]
  455.     fstp    QWORD [ball+32]
  456. L99:
  457.     push    ecx
  458.     push    ecx
  459.     push    dword ball
  460.     push    dword player2
  461.     call    intersects
  462.     add esp, 16
  463.     test    al, al
  464.     je  L91
  465.     push    edx
  466.     push    edx
  467.     push    dword ball
  468.     push    dword player2
  469.     call    getRelDistFromCenter
  470.     add esp, 16
  471.     fadd    st0, st0
  472.     fadd    QWORD [LC8]
  473.     fstp    QWORD [ball+32]
  474. L91:
  475.     leave
  476.     ret
  477. draw:
  478.     push    ebp
  479.     mov ebp, esp
  480.     sub esp, 52
  481.     push    16384
  482.     call    glClear
  483.     sub esp, 16
  484.     fld QWORD [LC12]
  485.     fst QWORD [esp+16]
  486.     fld QWORD [LC13]
  487.     fst QWORD [esp+8]
  488.     fstp    QWORD [ebp-40]
  489.     fstp    QWORD [esp]
  490.     call    glColor3d
  491.     add esp, 20
  492.     push    1
  493.     call    glBegin
  494.     sub esp, 16
  495.     fldz
  496.     fst QWORD [esp+8]
  497.     fstp    QWORD [ebp-32]
  498.     fld DWORD [LC9]
  499.     fst QWORD [esp]
  500.     fstp    QWORD [ebp-24]
  501.     call    glVertex2d
  502.     add esp, 16
  503.     fld1
  504.     fst QWORD [esp+8]
  505.     fstp    QWORD [ebp-16]
  506.     fld QWORD [ebp-24]
  507.     fstp    QWORD [esp]
  508.     call    glVertex2d
  509.     call    glEnd
  510.     sub esp, 16
  511.     fld QWORD [ebp-40]
  512.     fst QWORD [esp+16]
  513.     fst QWORD [esp+8]
  514.     fstp    QWORD [esp]
  515.     call    glColor3d
  516.     add esp, 16
  517.     fld QWORD [player1+8]
  518.     fadd    QWORD [player1+24]
  519.     fstp    QWORD [esp+8]
  520.     fld QWORD [player1]
  521.     fadd    QWORD [player1+16]
  522.     fstp    QWORD [esp]
  523.     push    DWORD [player1+12]
  524.     push    DWORD [player1+8]
  525.     push    DWORD [player1+4]
  526.     push    DWORD [player1]
  527.     call    glRectd
  528.     add esp, 16
  529.     fld QWORD [player2+8]
  530.     fadd    QWORD [player2+24]
  531.     fstp    QWORD [esp+8]
  532.     fld QWORD [player2]
  533.     fadd    QWORD [player2+16]
  534.     fstp    QWORD [esp]
  535.     push    DWORD [player2+12]
  536.     push    DWORD [player2+8]
  537.     push    DWORD [player2+4]
  538.     push    DWORD [player2]
  539.     call    glRectd
  540.     fld QWORD [ebp-32]
  541.     fst QWORD [esp+16]
  542.     fld QWORD [ebp-16]
  543.     fstp    QWORD [esp+8]
  544.     fstp    QWORD [esp]
  545.     call    glColor3d
  546.     add esp, 16
  547.     fld QWORD [ball+8]
  548.     fadd    QWORD [ball+24]
  549.     fstp    QWORD [esp+8]
  550.     fld QWORD [ball]
  551.     fadd    QWORD [ball+16]
  552.     fstp    QWORD [esp]
  553.     push    DWORD [ball+12]
  554.     push    DWORD [ball+8]
  555.     push    DWORD [ball+4]
  556.     push    DWORD [ball]
  557.     call    glRectd
  558.     add esp, 32
  559.     call    glFlush
  560.     leave
  561.     jmp glGetError
  562. setTitle:
  563.     push    ebp
  564.     mov ebp, esp
  565.     push    esi
  566.     push    ebx
  567.     sub esp, 136
  568.     push    dword LC14
  569.     lea ebx, [ebp-108]
  570.     push    ebx
  571.     call    strcpy
  572.     pop esi
  573.     pop eax
  574.     lea esi, [ebp-124]
  575.     push    dword LC15
  576.     push    ebx
  577.     call    strcat
  578.     pop eax
  579.     pop edx
  580.     push    dword LC16
  581.     push    ebx
  582.     call    strcat
  583.     call    fps
  584.     fstp    QWORD [esp]
  585.     call    lround
  586.     push    eax
  587.     push    dword LC17
  588.     push    6
  589.     push    esi
  590.     call    snprintf
  591.     add esp, 24
  592.     push    esi
  593.     push    ebx
  594.     call    strcat
  595.     pop ecx
  596.     pop esi
  597.     lea esi, [ebp-118]
  598.     push    dword LC18
  599.     push    ebx
  600.     call    strcat
  601.     pop eax
  602.     push    DWORD [player2+48]
  603.     push    DWORD [player1+48]
  604.     push    dword LC19
  605.     push    10
  606.     push    esi
  607.     call    snprintf
  608.     add esp, 24
  609.     push    esi
  610.     push    ebx
  611.     call    strcat
  612.     pop eax
  613.     pop edx
  614.     push    ebx
  615.     push    DWORD [ebp+8]
  616.     call    glfwSetWindowTitle
  617.     add esp, 16
  618.     lea esp, [ebp-8]
  619.     pop ebx
  620.     pop esi
  621.     pop ebp
  622.     ret
  623. _start:
  624.     lea ecx, [esp+4]
  625.     and esp, -16
  626.     push    DWORD [ecx-4]
  627.     push    ebp
  628.     mov ebp, esp
  629.     push    ebx
  630.     push    ecx
  631.     sub esp, 12
  632.     push    dword handleError
  633.     call    glfwSetErrorCallback
  634.     call    glfwInit
  635.     add esp, 16
  636.     test    eax, eax
  637.     jne L119
  638.     sub esp, 12
  639.     push    1
  640.     call    exit
  641. L119:
  642.     cmp BYTE [app+8], 0
  643.     je  L120
  644.     sub esp, 12
  645.     push    0
  646.     push    0
  647.     jmp L124
  648. L120:
  649.     call    glfwGetPrimaryMonitor
  650.     sub esp, 12
  651.     push    eax
  652.     call    glfwGetVideoMode
  653.     mov edx, DWORD [eax]
  654.     mov eax, DWORD [eax+4]
  655.     mov DWORD [app], edx
  656.     mov DWORD [app+4], eax
  657.     call    glfwGetPrimaryMonitor
  658.     mov DWORD [esp], 0
  659.     push    eax
  660. L124:
  661.     push    dword LC14
  662.     push    DWORD [app+4]
  663.     push    DWORD [app]
  664.     call    glfwCreateWindow
  665.     add esp, 32
  666.     sub esp, 12
  667.     push    eax
  668.     mov ebx, eax
  669.     call    glfwMakeContextCurrent
  670.     add esp, 12
  671.     push    DWORD [app+4]
  672.     push    DWORD [app]
  673.     push    ebx
  674.     call    handleFramebufferSize
  675.     pop ecx
  676.     pop eax
  677.     push    dword handleWindowClose
  678.     push    ebx
  679.     call    glfwSetWindowCloseCallback
  680.     pop eax
  681.     pop edx
  682.     push    dword handleFramebufferSize
  683.     push    ebx
  684.     call    glfwSetFramebufferSizeCallback
  685.     pop ecx
  686.     pop eax
  687.     push    dword handleKey
  688.     push    ebx
  689.     call    glfwSetKeyCallback
  690.     push    0x00000000
  691.     push    0x3dcccccd
  692.     push    0x3dcccccd
  693.     push    0x3dcccccd
  694.     call    glClearColor
  695.     add esp, 20
  696.     push    2852
  697.     call    glEnable
  698.     pop eax
  699.     pop edx
  700.     push    65280
  701.     push    1
  702.     call    glLineStipple
  703.     call    reset
  704. L125:
  705.     add esp, 16
  706.     sub esp, 12
  707.     push    ebx
  708.     call    setTitle
  709.     call    glfwPollEvents
  710.     call    calc
  711.     call    draw
  712.     mov DWORD [esp], ebx
  713.     call    glfwSwapBuffers
  714.     jmp L125
  715.     common  ret_val.15417 8:8
  716.     common  time_old.15416 8:8
  717.     common  time.15415 8:8
  718.  
  719.     section .bss
  720. ball:
  721.     resd    3092376453
  722.     resd    1071613214
  723.     resd    3092376453
  724.     resd    1071613214
  725.     resd    3951369912
  726.     resd    1066317905
  727.     resd    3951369912
  728.     resd    1066317905
  729.     resd    2576980378
  730.     resd    1069128089
  731.     resd    1202590843
  732.     resd    1065646817
  733.     resd    2296604913
  734.     resd    1055193269
  735. player2:
  736.     resd    2405181686
  737.     resd    1072494018
  738.     resd    3435973837
  739.     resd    1071434956
  740.     resd    1202590843
  741.     resd    1065646817
  742.     resd    2576980378
  743.     resd    1069128089
  744.     resd    0
  745.     resd    0
  746.     resd    3951369912
  747.     resd    1066317905
  748.     resd    0
  749. player1:
  750.     resd    2233382994
  751.     resd    1069044203
  752.     resd    3435973837
  753.     resd    1071434956
  754.     resd    1202590843
  755.     resd    1065646817
  756.     resd    2576980378
  757.     resd    1069128089
  758.     resd    0
  759.     resd    0
  760.     resd    3951369912
  761.     resd    1066317905
  762.     resd    0
  763. app:
  764.     resd    800
  765.     resd    600
  766.     resb    1
  767.     resb    1
  768.     resb    0
  769.     resb    1
  770.  
  771.     section .data
  772.     align 8
  773. LC4:
  774.     dd  3092376453
  775.     dd  1071613214
  776.     align 8
  777. LC7:
  778.     dd  3435973837
  779.     dd  1071434956
  780.     align 8
  781. LC8:
  782.     dd  1413754136
  783.     dd  1074340347
  784.     align 4
  785. LC9:
  786.     dd  1056964608
  787.     align 8
  788. LC10:
  789.     dd  2576980378
  790.     dd  1072798105
  791.     align 4
  792. LC11:
  793.     dd  3221225472
  794.     align 8
  795. LC12:
  796.     dd  2576980378
  797.     dd  1070176665
  798.     align 8
  799. LC13:
  800.     dd  3435973837
  801.     dd  1072483532
  802. LC14:
  803.     db  ""
  804. LC15:
  805.     db  "Pong clone  "
  806. LC16:
  807.     db  "FPS: "
  808. LC17:
  809.     db  "%d  "
  810. LC18:
  811.     db  "Score: "
  812. LC19:
  813.     db  "%d:%d  "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement