-
Notifications
You must be signed in to change notification settings - Fork 757
/
Copy pathFPU_PRNG_msvc_2010_Ox_ru.asm
executable file
·64 lines (49 loc) · 1.45 KB
/
FPU_PRNG_msvc_2010_Ox_ru.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
$SG4232 DB '%f', 0aH, 00H
__real@3ff0000000000000 DQ 03ff0000000000000r ; 1
tv140 = -4 ; size = 4
_tmp$ = -4 ; size = 4
_main PROC
push ebp
mov ebp, esp
and esp, -64 ; ffffffc0H
sub esp, 56 ; 00000038H
push esi
push edi
push 0
call __time64
add esp, 4
mov esi, eax
mov edi, 100 ; 00000064H
$LN3@main:
; ñîáñòâåííî, ãåíåðèðóåì ñëó÷àéíîå 32-áèòíîå ÷èñëî
imul esi, 1664525 ; 0019660dH
add esi, 1013904223 ; 3c6ef35fH
mov eax, esi
; îñòàâëÿåì áèòû íåîáõîäèìûå òîëüêî äëÿ ìàíòèññû
and eax, 8388607 ; 007fffffH
; âûñòàâëÿåì ýêñïîíåíòó â 1
or eax, 1065353216 ; 3f800000H
; çàïèñûâàåì ýòî çíà÷åíèå êàê int
mov DWORD PTR _tmp$[esp+64], eax
sub esp, 8
; çàãðóæàåì ýòî çíà÷åíèå óæå êàê float
fld DWORD PTR _tmp$[esp+72]
; îòíèìàåì åäèíèöó îò íåãî
fsub QWORD PTR __real@3ff0000000000000
fstp DWORD PTR tv140[esp+72]
fld DWORD PTR tv140[esp+72]
fstp QWORD PTR [esp]
push OFFSET $SG4232
call _printf
add esp, 12 ; 0000000cH
dec edi
jne SHORT $LN3@main
pop edi
xor eax, eax
pop esi
mov esp, ebp
pop ebp
ret 0
_main ENDP
_TEXT ENDS
END