| |
The assembly code of the program is split
in smaller parts : basic blocks. A basic block is a sequence
of one or more instructions with a single entry point and a single
exit point. Control transfer instructions (control transfer instructions,CT-instructions
for short, are conditional and unconditional jumps, call and return
instructions) are present only at the end of basic blocks. Based
on the basic blocks and on syntactic information gathered during
compilation, we build two logical representations of the analyzed
source code: a control-flow graph and a syntax tree.
CFG 0
|
|
|
_NumberOfBitsNeeded: |
| 0 |
push ebp |
| 1 |
mov ebp,esp |
| 3 |
sub esp,0x8 |
| 6 |
mov dword ptr [ebp+0xfffffffc],0x0 |
|
|
|
|
|
__halt2: |
|
L2: |
| 13 |
cmp dword ptr [ebp+0x8],0x1 |
| 17 |
je L5 |
|
|
|
|
|
L5: |
|
__halt3: |
| 21 |
mov edx,dword ptr [ebp+0x8] |
| 24 |
mov eax,edx |
| 26 |
shr eax,0x1 |
| 29 |
mov dword ptr [ebp+0x8],eax |
| 32 |
mov eax,dword ptr [ebp+0xfffffffc] |
| 35 |
mov dword ptr [ebp+0xfffffff8],eax |
|
|
|
|
|
__halt4: |
|
L4: |
| 38 |
inc dword ptr [ebp+0xfffffffc] |
| 41 |
jmp L2 |
|
|
|
|
|
L3: |
|
__halt5: |
|
__halt6: |
| 43 |
mov edx,dword ptr [ebp+0xfffffff8] |
| 46 |
mov eax,edx |
| 48 |
jmp L1 |
|
|
|
L1: |
| 50 |
mov esp,ebp |
| 52 |
pop ebp |
| 53 |
ret 0 |
|
|
|
|
CFG 1
|
|
|
_ReverseBits: |
| 54 |
push ebp |
| 55 |
mov ebp,esp |
| 57 |
sub esp,0x8 |
| 60 |
mov dword ptr [ebp+0xfffffff8],0x0 |
| 67 |
mov dword ptr [ebp+0xfffffffc],0x0 |
|
|
|
|
|
__halt8: |
|
L7: |
| 74 |
mov eax,dword ptr [ebp+0xfffffffc] |
| 77 |
cmp dword ptr [ebp+0xc],eax |
| 80 |
ja L10 |
|
|
|
|
|
L10: |
|
__halt9: |
| 84 |
mov ecx,dword ptr [ebp+0xfffffff8] |
| 87 |
mov eax,ecx |
| 89 |
add eax,ecx |
| 91 |
mov edx,dword ptr [ebp+0x8] |
| 94 |
and edx,0x1 |
| 97 |
mov ecx,eax |
| 99 |
or ecx,edx |
| 101 |
mov dword ptr [ebp+0xfffffff8],ecx |
| 104 |
shr dword ptr [ebp+0x8],0x1 |
|
|
|
|
|
__halt10: |
|
L9: |
| 108 |
inc dword ptr [ebp+0xfffffffc] |
| 111 |
jmp L7 |
|
|
|
|
|
L8: |
|
__halt11: |
|
__halt12: |
| 113 |
mov edx,dword ptr [ebp+0xfffffff8] |
| 116 |
mov eax,edx |
| 118 |
jmp L6 |
|
|
|
L6: |
| 120 |
mov esp,ebp |
| 122 |
pop ebp |
| 123 |
ret 0 |
|
|
|
|
CFG 2
|
|
|
_fft: |
| 124 |
push ebp |
| 125 |
mov ebp,esp |
| 127 |
sub esp,0x10124 |
| 133 |
push esi |
| 134 |
push ebx |
| 135 |
mov dword ptr [ebp+0xfffffffc],0x800 |
| 142 |
mov dword ptr [ebp+0xfffeff24],0x54442d18 |
| 152 |
mov dword ptr [ebp+0xfffeff28],0x401921fb |
| 162 |
mov dword ptr [ebp+0xfffeff4c],0x0 |
| 172 |
mov dword ptr [ebp+0xfffeff50],0x3ff00000 |
| 182 |
mov dword ptr [ebp+0xfffeff54],0x0 |
| 192 |
mov dword ptr [ebp+0xfffeff58],0x0 |
| 202 |
mov dword ptr [ebp+0xfffeff5c],0xdbf8b9bb |
| 212 |
mov dword ptr [ebp+0xfffeff60],0x3fe6a09e |
| 222 |
mov dword ptr [ebp+0xfffeff64],0x0 |
| 232 |
mov dword ptr [ebp+0xfffeff68],0x3ff00000 |
| 242 |
mov dword ptr [ebp+0xfffeff6c],0xd66f0cfe |
| 252 |
mov dword ptr [ebp+0xfffeff70],0x3fd87de0 |
| 262 |
mov dword ptr [ebp+0xfffeff74],0xdbf8b9bb |
| 272 |
mov dword ptr [ebp+0xfffeff78],0x3fe6a09e |
| 282 |
mov dword ptr [ebp+0xfffeff7c],0x88e368f1 |
| 292 |
mov dword ptr [ebp+0xfffeff80],0x3fc8f8b5 |
| 302 |
mov dword ptr [ebp+0xfffeff84],0xd66f0cfe |
| 312 |
mov dword ptr [ebp+0xfffeff88],0x3fd87de0 |
| 322 |
mov dword ptr [ebp+0xfffeff8c],0x6173b85f |
| 332 |
mov dword ptr [ebp+0xfffeff90],0x3fb917a4 |
| 342 |
mov dword ptr [ebp+0xfffeff94],0x88e368f1 |
| 352 |
mov dword ptr [ebp+0xfffeff98],0x3fc8f8b5 |
| 362 |
mov dword ptr [ebp+0xfffeff9c],0xde8f6cf0 |
| 372 |
mov dword ptr [ebp+0xfffeffa0],0x3fa91f70 |
| 382 |
mov dword ptr [ebp+0xfffeffa4],0x6173b85f |
| 392 |
mov dword ptr [ebp+0xfffeffa8],0x3fb917a4 |
| 402 |
mov dword ptr [ebp+0xfffeffac],0xa1a500d6 |
| 412 |
mov dword ptr [ebp+0xfffeffb0],0x3f992146 |
| 422 |
mov dword ptr [ebp+0xfffeffb4],0xde8f6cf0 |
| 432 |
mov dword ptr [ebp+0xfffeffb8],0x3fa91f70 |
| 442 |
mov dword ptr [ebp+0xfffeffbc],0xf540895d |
| 452 |
mov dword ptr [ebp+0xfffeffc0],0x3f89220f |
| 462 |
mov dword ptr [ebp+0xfffeffc4],0xa1a500d6 |
| 472 |
mov dword ptr [ebp+0xfffeffc8],0x3f992146 |
| 482 |
mov dword ptr [ebp+0xfffeffcc],0xf540895d |
| 492 |
mov dword ptr [ebp+0xfffeffd0],0x3f79220f |
| 502 |
mov dword ptr [ebp+0xfffeffd4],0xf540895d |
| 512 |
mov dword ptr [ebp+0xfffeffd8],0x3f89220f |
| 522 |
mov dword ptr [ebp+0xfffeffdc],0xf540895d |
| 532 |
mov dword ptr [ebp+0xfffeffe0],0x3f69220f |
| 542 |
mov dword ptr [ebp+0xfffeffe4],0xf540895d |
| 552 |
mov dword ptr [ebp+0xfffeffe8],0x3f79220f |
| 562 |
mov dword ptr [ebp+0xfffeffec],0xf540895d |
| 572 |
mov dword ptr [ebp+0xfffefff0],0x3f59220f |
| 582 |
mov dword ptr [ebp+0xfffefff4],0xf540895d |
| 592 |
mov dword ptr [ebp+0xfffefff8],0x3f69220f |
| 602 |
mov eax,dword ptr [ebp+0xfffffffc] |
| 605 |
push eax |
|
|
| 606 |
call _NumberOfBitsNeeded |
|
|
|
|
|
|
| 611 |
add esp,0x4 |
| 614 |
mov eax,eax |
| 616 |
mov dword ptr [ebp+0xfffeff48],eax |
| 622 |
mov dword ptr [ebp+0xfffeff44],0x0 |
|
|
|
|
|
__halt14: |
|
L12: |
| 632 |
mov eax,dword ptr [ebp+0xfffeff44] |
| 638 |
cmp dword ptr [ebp+0xfffffffc],eax |
| 641 |
ja L15 |
|
|
|
|
|
L15: |
|
__halt15: |
| 648 |
mov eax,dword ptr [ebp+0xfffeff48] |
| 654 |
push eax |
| 655 |
mov eax,dword ptr [ebp+0xfffeff44] |
| 661 |
push eax |
|
|
| 662 |
call _ReverseBits |
|
|
|
|
|
|
| 667 |
add esp,0x8 |
| 670 |
mov eax,eax |
| 672 |
mov dword ptr [ebp+0xfffeff40],eax |
| 678 |
mov eax,dword ptr [ebp+0xfffeff40] |
| 684 |
mov edx,eax |
| 686 |
lea eax,dword ptr [edx*8+0x0] |
| 693 |
lea edx,dword ptr [ebp+0xffff3ffc] |
| 699 |
mov ecx,dword ptr [ebp+0xfffeff44] |
| 705 |
mov ebx,ecx |
| 707 |
lea ecx,dword ptr [ebx*8+0x0] |
| 714 |
lea ebx,dword ptr [ebp+0xffffbffc] |
| 720 |
mov esi,dword ptr [ecx+ebx*1] |
| 723 |
mov dword ptr [eax+edx*1],esi |
| 726 |
mov esi,dword ptr [ecx+ebx*1+0x4] |
| 730 |
mov dword ptr [eax+edx*1+0x4],esi |
| 734 |
mov eax,dword ptr [ebp+0xfffeff40] |
| 740 |
mov edx,eax |
| 742 |
lea eax,dword ptr [edx*8+0x0] |
| 749 |
lea edx,dword ptr [ebp+0xfffefffc] |
| 755 |
mov ecx,dword ptr [ebp+0xfffeff44] |
| 761 |
mov ebx,ecx |
| 763 |
lea ecx,dword ptr [ebx*8+0x0] |
| 770 |
lea ebx,dword ptr [ebp+0xffff7ffc] |
| 776 |
mov esi,dword ptr [ecx+ebx*1] |
| 779 |
mov dword ptr [eax+edx*1],esi |
| 782 |
mov esi,dword ptr [ecx+ebx*1+0x4] |
| 786 |
mov dword ptr [eax+edx*1+0x4],esi |
|
|
|
|
|
__halt16: |
|
L14: |
| 790 |
inc dword ptr [ebp+0xfffeff44] |
| 796 |
jmp L12 |
|
|
|
|
|
L13: |
|
__halt17: |
|
__halt18: |
| 801 |
mov dword ptr [ebp+0xfffeff2c],0x1 |
| 811 |
mov dword ptr [ebp+0xfffeff3c],0x0 |
| 821 |
mov dword ptr [ebp+0xfffeff30],0x2 |
|
|
|
|
|
__halt19: |
|
L16: |
| 831 |
mov eax,dword ptr [ebp+0xfffeff30] |
| 837 |
cmp dword ptr [ebp+0xfffffffc],eax |
| 840 |
jae L19 |
|
|
|
|
|
L19: |
|
__halt20: |
| 847 |
mov ecx,dword ptr [ebp+0xfffeff30] |
| 853 |
mov eax,ecx |
| 855 |
xor edx,edx |
| 857 |
push edx |
| 858 |
push eax |
| 859 |
fild dword ptr [esp+1] |
| 862 |
add esp,0x8 |
| 865 |
fld dword ptr [ebp+0xfffeff24] |
| 871 |
fdivp st(1),st(0) |
| 873 |
fstp dword ptr [ebp+0xfffeff1c] |
| 879 |
mov eax,dword ptr [ebp+0xfffeff3c] |
| 885 |
mov edx,eax |
| 887 |
mov eax,edx |
| 889 |
shl eax,0x4 |
| 892 |
lea edx,dword ptr [ebp+0xfffeff4c] |
| 898 |
mov esi,dword ptr [eax+edx*1] |
| 901 |
mov dword ptr [ebp+0xfffeff14],esi |
| 907 |
mov esi,dword ptr [eax+edx*1+0x4] |
| 911 |
mov dword ptr [ebp+0xfffeff18],esi |
| 917 |
fld dword ptr [ebp+0xfffeff14] |
| 923 |
fstp dword ptr [ebp+0xfffefedc] |
| 929 |
fld dword ptr [ebp+0xfffefedc] |
| 935 |
fadd dword ptr [ebp+0xfffefedc] |
| 941 |
fld dword ptr [ebp+0xfffeff14] |
| 947 |
fmulp st(1),st(0) |
| 949 |
fstp dword ptr [ebp+0xfffeff14] |
| 955 |
mov eax,dword ptr [ebp+0xfffeff3c] |
| 961 |
mov edx,eax |
| 963 |
mov eax,edx |
| 965 |
shl eax,0x4 |
| 968 |
lea edx,dword ptr [ebp+0xfffeff4c] |
| 974 |
mov esi,dword ptr [eax+edx*1+0x8] |
| 978 |
mov dword ptr [ebp+0xfffeff0c],esi |
| 984 |
mov esi,dword ptr [eax+edx*1+0xc] |
| 988 |
mov dword ptr [ebp+0xfffeff10],esi |
| 994 |
inc dword ptr [ebp+0xfffeff3c] |
| 1000 |
mov dword ptr [ebp+0xfffeff44],0x0 |
|
|
|
|
|
__halt22: |
|
L20: |
| 1010 |
mov eax,dword ptr [ebp+0xfffeff44] |
| 1016 |
cmp dword ptr [ebp+0xfffffffc],eax |
| 1019 |
ja L23 |
|
|
|
|
|
L23: |
|
__halt23: |
| 1026 |
mov dword ptr [ebp+0xfffefeec],0x0 |
| 1036 |
mov dword ptr [ebp+0xfffefef0],0x3ff00000 |
| 1046 |
mov dword ptr [ebp+0xfffefee4],0x0 |
| 1056 |
mov dword ptr [ebp+0xfffefee8],0x0 |
| 1066 |
mov eax,dword ptr [ebp+0xfffeff44] |
| 1072 |
mov dword ptr [ebp+0xfffeff40],eax |
| 1078 |
mov dword ptr [ebp+0xfffeff34],0x0 |
|
|
|
|
|
__halt25: |
|
L24: |
| 1088 |
mov eax,dword ptr [ebp+0xfffeff34] |
| 1094 |
cmp dword ptr [ebp+0xfffeff2c],eax |
| 1100 |
ja L27 |
|
|
|
|
|
L27: |
|
__halt26: |
| 1107 |
mov eax,dword ptr [ebp+0xfffeff40] |
| 1113 |
mov edx,dword ptr [ebp+0xfffeff2c] |
| 1119 |
lea esi,dword ptr [edx+eax*1] |
| 1122 |
mov dword ptr [ebp+0xfffeff38],esi |
| 1128 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1134 |
mov edx,eax |
| 1136 |
lea eax,dword ptr [edx*8+0x0] |
| 1143 |
lea edx,dword ptr [ebp+0xffff3ffc] |
| 1149 |
fld dword ptr [ebp+0xfffefeec] |
| 1155 |
fmul dword ptr [eax+edx*1] |
| 1158 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1164 |
mov edx,eax |
| 1166 |
lea eax,dword ptr [edx*8+0x0] |
| 1173 |
lea edx,dword ptr [ebp+0xfffefffc] |
| 1179 |
fld dword ptr [ebp+0xfffefee4] |
| 1185 |
fmul dword ptr [eax+edx*1] |
| 1188 |
fsubrp st(1),st(0) |
| 1190 |
fstp dword ptr [ebp+0xfffefefc] |
| 1196 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1202 |
mov edx,eax |
| 1204 |
lea eax,dword ptr [edx*8+0x0] |
| 1211 |
lea edx,dword ptr [ebp+0xfffefffc] |
| 1217 |
fld dword ptr [ebp+0xfffefeec] |
| 1223 |
fmul dword ptr [eax+edx*1] |
| 1226 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1232 |
mov edx,eax |
| 1234 |
lea eax,dword ptr [edx*8+0x0] |
| 1241 |
lea edx,dword ptr [ebp+0xffff3ffc] |
| 1247 |
fld dword ptr [ebp+0xfffefee4] |
| 1253 |
fmul dword ptr [eax+edx*1] |
| 1256 |
faddp st(1),st(0) |
| 1258 |
fstp dword ptr [ebp+0xfffefef4] |
| 1264 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1270 |
mov edx,eax |
| 1272 |
lea eax,dword ptr [edx*8+0x0] |
| 1279 |
lea edx,dword ptr [ebp+0xffff3ffc] |
| 1285 |
mov ecx,dword ptr [ebp+0xfffeff40] |
| 1291 |
mov ebx,ecx |
| 1293 |
lea ecx,dword ptr [ebx*8+0x0] |
| 1300 |
lea ebx,dword ptr [ebp+0xffff3ffc] |
| 1306 |
fld dword ptr [ecx+ebx*1] |
| 1309 |
fsub dword ptr [ebp+0xfffefefc] |
| 1315 |
fstp dword ptr [eax+edx*1] |
| 1318 |
mov eax,dword ptr [ebp+0xfffeff38] |
| 1324 |
mov edx,eax |
| 1326 |
lea eax,dword ptr [edx*8+0x0] |
| 1333 |
lea edx,dword ptr [ebp+0xfffefffc] |
| 1339 |
mov ecx,dword ptr [ebp+0xfffeff40] |
| 1345 |
mov ebx,ecx |
| 1347 |
lea ecx,dword ptr [ebx*8+0x0] |
| 1354 |
lea ebx,dword ptr [ebp+0xfffefffc] |
| 1360 |
fld dword ptr [ecx+ebx*1] |
| 1363 |
fsub dword ptr [ebp+0xfffefef4] |
| 1369 |
fstp dword ptr [eax+edx*1] |
| 1372 |
mov eax,dword ptr [ebp+0xfffeff40] |
| 1378 |
mov edx,eax |
| 1380 |
lea eax,dword ptr [edx*8+0x0] |
| 1387 |
lea edx,dword ptr [ebp+0xffff3ffc] |
| 1393 |
mov ecx,dword ptr [ebp+0xfffeff40] |
| 1399 |
mov ebx,ecx |
| 1401 |
lea ecx,dword ptr [ebx*8+0x0] |
| 1408 |
lea ebx,dword ptr [ebp+0xffff3ffc] |
| 1414 |
fld dword ptr [ecx+ebx*1] |
| 1417 |
fadd dword ptr [ebp+0xfffefefc] |
| 1423 |
fstp dword ptr [eax+edx*1] |
| 1426 |
mov eax,dword ptr [ebp+0xfffeff40] |
| 1432 |
mov edx,eax |
| 1434 |
lea eax,dword ptr [edx*8+0x0] |
| 1441 |
lea edx,dword ptr [ebp+0xfffefffc] |
| 1447 |
mov ecx,dword ptr [ebp+0xfffeff40] |
| 1453 |
mov ebx,ecx |
| 1455 |
lea ecx,dword ptr [ebx*8+0x0] |
| 1462 |
lea ebx,dword ptr [ebp+0xfffefffc] |
| 1468 |
fld dword ptr [ecx+ebx*1] |
| 1471 |
fadd dword ptr [ebp+0xfffefef4] |
| 1477 |
fstp dword ptr [eax+edx*1] |
| 1480 |
fld dword ptr [ebp+0xfffeff14] |
| 1486 |
fmul dword ptr [ebp+0xfffefeec] |
| 1492 |
fld dword ptr [ebp+0xfffeff0c] |
| 1498 |
fmul dword ptr [ebp+0xfffefee4] |
| 1504 |
faddp st(1),st(0) |
| 1506 |
fstp dword ptr [ebp+0xfffeff04] |
| 1512 |
fld dword ptr [ebp+0xfffeff14] |
| 1518 |
fmul dword ptr [ebp+0xfffefee4] |
| 1524 |
fld dword ptr [ebp+0xfffeff0c] |
| 1530 |
fmul dword ptr [ebp+0xfffefeec] |
| 1536 |
fsubrp st(1),st(0) |
| 1538 |
fld dword ptr [ebp+0xfffefee4] |
| 1544 |
fsubp st(1),st(0) |
| 1546 |
fstp dword ptr [ebp+0xfffefee4] |
| 1552 |
fld dword ptr [ebp+0xfffefeec] |
| 1558 |
fsub dword ptr [ebp+0xfffeff04] |
| 1564 |
fstp dword ptr [ebp+0xfffefeec] |
|
|
|
|
|
__halt27: |
|
L26: |
| 1570 |
inc dword ptr [ebp+0xfffeff40] |
| 1576 |
inc dword ptr [ebp+0xfffeff34] |
| 1582 |
jmp L24 |
|
|
|
|
|
L25: |
|
__halt28: |
|
__halt24: |
|
L22: |
| 1587 |
mov eax,dword ptr [ebp+0xfffeff30] |
| 1593 |
add dword ptr [ebp+0xfffeff44],eax |
| 1599 |
jmp L20 |
|
|
|
|
|
L21: |
|
__halt29: |
|
__halt30: |
| 1604 |
mov eax,dword ptr [ebp+0xfffeff30] |
| 1610 |
mov dword ptr [ebp+0xfffeff2c],eax |
|
|
|
|
|
__halt21: |
|
L18: |
| 1616 |
shl dword ptr [ebp+0xfffeff30],0x1 |
| 1623 |
jmp L16 |
|
|
|
|
|
L17: |
|
__halt31: |
|
__halt32: |
|
L11: |
| 1628 |
lea esp,dword ptr [ebp+0xfffefed4] |
| 1634 |
pop ebx |
| 1635 |
pop esi |
| 1636 |
mov esp,ebp |
| 1638 |
pop ebp |
| 1639 |
ret 0 |
|
|
|