Skip to content

Instantly share code, notes, and snippets.

@LuxXx
Created February 14, 2017 15:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save LuxXx/bdff5810fe8f120534466882c9c75096 to your computer and use it in GitHub Desktop.
Save LuxXx/bdff5810fe8f120534466882c9c75096 to your computer and use it in GitHub Desktop.
SAMP DrawNames ASM DUMP
samp.dll+86770 >/$ 55 PUSH EBP ; drawNames
samp.dll+86771 |. 8BEC MOV EBP,ESP
samp.dll+86773 |. 83E4 F8 AND ESP,FFFFFFF8
samp.dll+86776 |. 83EC 08 SUB ESP,8
samp.dll+86779 |. A1 802A2110 MOV EAX,DWORD PTR DS:[10212A80] ; LOAD SAMP_INFO
samp.dll+8677E |. 85C0 TEST EAX,EAX
samp.dll+86780 |. 53 PUSH EBX
samp.dll+86781 |. 55 PUSH EBP
samp.dll+86782 |. 56 PUSH ESI
samp.dll+86783 |. 57 PUSH EDI
samp.dll+86784 |. 0F84 58020000 JE <samp.endFunc> ; if SAMP_INFO is not loaded, end this function
samp.dll+8678A |. 8B80 D5030000 MOV EAX,DWORD PTR DS:[EAX+3D5] ; eax = SAMP_INFO + SAMP_SETTINGS
samp.dll+86790 |. 8A48 38 MOV CL,BYTE PTR DS:[EAX+38]
samp.dll+86793 |. 84C9 TEST CL,CL ; if (SAMP_SETTINGS + 38 == 1) { endFunc }
samp.dll+86795 |. 0F84 47020000 JE <samp.endFunc> ; stop function, jmp to end
samp.dll+8679B |. 8B0D 382A2110 MOV ECX,DWORD PTR DS:[10212A38]
samp.dll+867A1 |. E8 6A7FFFFF CALL samp.1007E710
samp.dll+867A6 |. 8B0D 802A2110 MOV ECX,DWORD PTR DS:[10212A80] ; LOAD SAMP_INFO
samp.dll+867AC |. 8B91 D9030000 MOV EDX,DWORD PTR DS:[ECX+3D9] ; edx = SAMP_INFO + 3d9
samp.dll+867B2 |. 8B0D 942A2110 MOV ECX,DWORD PTR DS:[10212A94]
samp.dll+867B8 |. 8B5A 14 MOV EBX,DWORD PTR DS:[EDX+14] ; SAMP_INFO + 3D9 + 14
samp.dll+867BB |. 68 08EE2010 PUSH samp.1020EE08
samp.dll+867C0 |. E8 4BA8F7FF CALL samp.10001010
samp.dll+867C5 |. 8BC8 MOV ECX,EAX
samp.dll+867C7 |. E8 74BBFDFF CALL samp.10062340
samp.dll+867CC |. 8B03 MOV EAX,DWORD PTR DS:[EBX] ; EAX = SAMP_INFO + 3D9 + 14
samp.dll+867CE |. 33FF XOR EDI,EDI ; edi = 0
samp.dll+867D0 |. 85C0 TEST EAX,EAX ; test SAMP_INFO + 3D9 + 14
samp.dll+867D2 |. 894424 14 MOV DWORD PTR SS:[ESP+14],EAX
samp.dll+867D6 |. 0F8C FB010000 JL <samp.endFunc_ButCallLastFunc> ; jump almost to end
samp.dll+867DC |. 8D6424 00 LEA ESP,DWORD PTR SS:[ESP]
samp.dll+867E0 |> 66:81FF EC03 /CMP DI,3EC ; for all peds in streaming range
samp.dll+867E5 |. 0F83 DF010000 |JNB <samp.endOfLoop> ; jump to end of for loop
samp.dll+867EB |. 0FB7C7 |MOVZX EAX,DI
samp.dll+867EE |. 8B8C83 DE0F000>|MOV ECX,DWORD PTR DS:[EBX+EAX*4+FDE]
samp.dll+867F5 |. 83F9 01 |CMP ECX,1
samp.dll+867F8 |. 8D0483 |LEA EAX,DWORD PTR DS:[EBX+EAX*4]
samp.dll+867FB |. 0F85 C9010000 |JNZ <samp.endOfLoop>
samp.dll+86801 |. 8B40 2E |MOV EAX,DWORD PTR DS:[EAX+2E]
samp.dll+86804 |. 85C0 |TEST EAX,EAX
samp.dll+86806 |. 0F84 BE010000 |JE <samp.endOfLoop>
samp.dll+8680C |. 8B70 08 |MOV ESI,DWORD PTR DS:[EAX+8]
samp.dll+8680F |. 85F6 |TEST ESI,ESI
samp.dll+86811 |. 0F84 B3010000 |JE <samp.endOfLoop>
samp.dll+86817 |. 8B6E 13 |MOV EBP,DWORD PTR DS:[ESI+13]
samp.dll+8681A |. 85ED |TEST EBP,EBP
samp.dll+8681C |. 0F84 A8010000 |JE <samp.endOfLoop>
samp.dll+86822 |. 8A46 05 |MOV AL,BYTE PTR DS:[ESI+5]
samp.dll+86825 |. 84C0 |TEST AL,AL
samp.dll+86827 |. 0F84 9D010000 |JE <samp.endOfLoop>
samp.dll+8682D |. 8B46 7F |MOV EAX,DWORD PTR DS:[ESI+7F]
samp.dll+86830 |. 85C0 |TEST EAX,EAX
samp.dll+86832 |. 0F84 92010000 |JE <samp.endOfLoop>
samp.dll+86838 |. 8BCD |MOV ECX,EBP
samp.dll+8683A |. E8 81C1FDFF |CALL <samp.funcD>
samp.dll+8683F >|. 8B0D 802A2110 |MOV ECX,DWORD PTR DS:[10212A80] ; Load Distance(SAMP_INFO)
samp.dll+86845 |. 8B91 D5030000 |MOV EDX,DWORD PTR DS:[ECX+3D5] ; Load Distance (SAMP_SETTINGS)
samp.dll+8684B |. D85A 27 |FCOMP DWORD PTR DS:[EDX+27] ; Load Distance
samp.dll+8684E |. DFE0 |FSTSW AX
samp.dll+86850 |. F6C4 41 |TEST AH,41
samp.dll+86853 |. 0F8A 71010000 |JPE <samp.endOfLoop> ; Jump if we are out of name range
samp.dll+86859 |. 807E 05 13 |CMP BYTE PTR DS:[ESI+5],13
samp.dll+8685D |. 75 41 |JNZ SHORT samp.samp.dll+868A0
samp.dll+8685F |. 8B4E 0F |MOV ECX,DWORD PTR DS:[ESI+F]
samp.dll+86862 |. 85C9 |TEST ECX,ECX
samp.dll+86864 |. 74 3A |JE SHORT samp.samp.dll+868A0
samp.dll+86866 |. E8 F518FFFF |CALL samp.10078160
samp.dll+8686B |. 85C0 |TEST EAX,EAX
samp.dll+8686D |. 74 31 |JE SHORT samp.samp.dll+868A0
samp.dll+8686F |. 8B4E 0F |MOV ECX,DWORD PTR DS:[ESI+F]
samp.dll+86872 |. 68 08ED2010 |PUSH samp.1020ED08
samp.dll+86877 |. E8 C4BAFDFF |CALL samp.10062340
samp.dll+8687C |. A1 38ED2010 |MOV EAX,DWORD PTR DS:[1020ED38]
samp.dll+86881 |. 8B0D 3CED2010 |MOV ECX,DWORD PTR DS:[1020ED3C]
samp.dll+86887 |. 8B15 40ED2010 |MOV EDX,DWORD PTR DS:[1020ED40]
samp.dll+8688D |. A3 4CEE2010 |MOV DWORD PTR DS:[1020EE4C],EAX
samp.dll+86892 |. 890D 50EE2010 |MOV DWORD PTR DS:[1020EE50],ECX
samp.dll+86898 |. 8915 54EE2010 |MOV DWORD PTR DS:[1020EE54],EDX
samp.dll+8689E |. EB 2E |JMP SHORT samp.samp.dll+868CE
samp.dll+868A0 |> 8BCD |MOV ECX,EBP
samp.dll+868A2 |. E8 59C3FDFF |CALL samp.10062C00
samp.dll+868A7 |. 85C0 |TEST EAX,EAX
samp.dll+868A9 |. 0F84 1B010000 |JE <samp.endOfLoop>
samp.dll+868AF |. 33C0 |XOR EAX,EAX
samp.dll+868B1 |. A3 4CEE2010 |MOV DWORD PTR DS:[1020EE4C],EAX ; save pos?
samp.dll+868B6 |. 68 4CEE2010 |PUSH samp.1020EE4C ; /Arg2 = 1020EE4C
samp.dll+868BB |. A3 50EE2010 |MOV DWORD PTR DS:[1020EE50],EAX ; |save pos?
samp.dll+868C0 |. 6A 08 |PUSH 8 ; |Arg1 = 00000008
samp.dll+868C2 |. 8BCD |MOV ECX,EBP ; |
samp.dll+868C4 |. A3 54EE2010 |MOV DWORD PTR DS:[1020EE54],EAX ; |
samp.dll+868C9 |. E8 029AFEFF |CALL samp.100702D0 ; \samp.100702D0
samp.dll+868CE |> 8B0D 4CEE2010 |MOV ECX,DWORD PTR DS:[1020EE4C] ; load pos?
samp.dll+868D4 |. 8B15 50EE2010 |MOV EDX,DWORD PTR DS:[1020EE50] ; load pos?
samp.dll+868DA |. A1 54EE2010 |MOV EAX,DWORD PTR DS:[1020EE54] ; load pos?
samp.dll+868DF |. 890D 74EE2010 |MOV DWORD PTR DS:[1020EE74],ECX ; store pos?
samp.dll+868E5 |. 8915 78EE2010 |MOV DWORD PTR DS:[1020EE78],EDX ; store pos?
samp.dll+868EB |. A3 7CEE2010 |MOV DWORD PTR DS:[1020EE7C],EAX ; store pos?
samp.dll+868F0 |. E8 7B9CFDFF |CALL samp.10060570
samp.dll+868F5 |. 8B15 802A2110 |MOV EDX,DWORD PTR DS:[10212A80] ; load SAMP_INFO
samp.dll+868FB |. 8B92 D5030000 |MOV EDX,DWORD PTR DS:[EDX+3D5] ; load SAMP_SETTINGS
samp.dll+86901 |. 33C9 |XOR ECX,ECX ; ecx = 0
samp.dll+86903 |. 384A 2F |CMP BYTE PTR DS:[EDX+2F],CL ; visible through wall == 0?
samp.dll+86906 |. 74 4B |JE SHORT <samp.loadThroughWall>
samp.dll+86908 |. D940 14 |FLD DWORD PTR DS:[EAX+14]
samp.dll+8690B |. 51 |PUSH ECX ; ecx == 0
samp.dll+8690C |. 6A 01 |PUSH 1
samp.dll+8690E |. 51 |PUSH ECX ; ecx == 0
samp.dll+8690F |. 51 |PUSH ECX ; ecx == 0
samp.dll+86910 |. 6A 01 |PUSH 1
samp.dll+86912 |. 83EC 30 |SUB ESP,30
samp.dll+86915 |. DD5C24 28 |FSTP QWORD PTR SS:[ESP+28]
samp.dll+86919 |. D940 10 |FLD DWORD PTR DS:[EAX+10]
samp.dll+8691C |. DD5C24 20 |FSTP QWORD PTR SS:[ESP+20]
samp.dll+86920 |. D940 0C |FLD DWORD PTR DS:[EAX+C]
samp.dll+86923 |. DD5C24 18 |FSTP QWORD PTR SS:[ESP+18]
samp.dll+86927 |. D905 7CEE2010 |FLD DWORD PTR DS:[1020EE7C]
samp.dll+8692D |. DD5C24 10 |FSTP QWORD PTR SS:[ESP+10]
samp.dll+86931 |. D905 78EE2010 |FLD DWORD PTR DS:[1020EE78]
samp.dll+86937 |. DD5C24 08 |FSTP QWORD PTR SS:[ESP+8]
samp.dll+8693B |. D905 74EE2010 |FLD DWORD PTR DS:[1020EE74]
samp.dll+86941 |. DD1C24 |FSTP QWORD PTR SS:[ESP]
samp.dll+86944 |. 68 B4430D10 |PUSH samp.100D43B4
samp.dll+86949 |. E8 72C2FEFF |CALL samp.10072BC0 ; calc pos? draw string? func(x,1,0,0,1,0)
samp.dll+8694E |. 83C4 48 |ADD ESP,48
samp.dll+86951 |. 8BC8 |MOV ECX,EAX ; ecx = pos?
samp.dll+86953 >|> A1 802A2110 |MOV EAX,DWORD PTR DS:[10212A80] ; Load ThroughWalls (SAMP_INFO)
samp.dll+86958 |. 8B90 D5030000 |MOV EDX,DWORD PTR DS:[EAX+3D5] ; Load ThroughWalls (SAMP_SETTINGS)
samp.dll+8695E |. 8A42 2F |MOV AL,BYTE PTR DS:[EDX+2F] ; Load ThroughWalls (1 if no wh, 0 if normal)
samp.dll+86961 |. 84C0 |TEST AL,AL
samp.dll+86963 |. 74 04 |JE SHORT <samp.dontEndLoop> ; jump if we dont see through walls
samp.dll+86965 |. 85C9 |TEST ECX,ECX ; test pos?
samp.dll+86967 |. 74 61 |JE SHORT <samp.endOfLoop> ; continue |
samp.dll+86969 >|> 57 |PUSH EDI ; <-----------
samp.dll+8696A |. 57 |PUSH EDI
samp.dll+8696B |. 8BCB |MOV ECX,EBX
samp.dll+8696D |. E8 5EBAF8FF |CALL <samp.funcA> ; func(edi,edi)
samp.dll+86972 |. 50 |PUSH EAX
samp.dll+86973 |. 68 C8430D10 |PUSH samp.100D43C8 ; ASCII "%s (%d)"
samp.dll+86978 |. 68 88ED2010 |PUSH samp.1020ED88 ; Name (ID)
samp.dll+8697D |. E8 B19F0200 |CALL <samp.funcB> ; funcB(name,namemask,funcA(edi,edi)) | Same func is used for drawing DL
samp.dll+86982 |. 8B46 07 |MOV EAX,DWORD PTR DS:[ESI+7] ; eax = something from stack
samp.dll+86985 |. 83C4 10 |ADD ESP,10
samp.dll+86988 |. 85C0 |TEST EAX,EAX
samp.dll+8698A |. 75 3E |JNZ SHORT <samp.endOfLoop> ; jump to end of loop if ESI+7 == 0
samp.dll+8698C |. 8BCE |MOV ECX,ESI
samp.dll+8698E |. E8 9DA9F8FF |CALL <samp.funcC>
samp.dll+86993 |. 50 |PUSH EAX
samp.dll+86994 |. A1 802A2110 |MOV EAX,DWORD PTR DS:[10212A80] ; Load SAMP_INFO into eax
samp.dll+86999 |. 33C9 |XOR ECX,ECX ; ECX = 0
samp.dll+8699B |. 8A88 C8030000 |MOV CL,BYTE PTR DS:[EAX+3C8] ; ecx = SAMP_INFO + 3c8
samp.dll+869A1 |. 51 |PUSH ECX
samp.dll+869A2 |. 8BCD |MOV ECX,EBP
samp.dll+869A4 |. E8 17C0FDFF |CALL <samp.funcD> ; nop this -> names at left upper corner | something with pos | func(eax,ecx)
samp.dll+869A9 |. 51 |PUSH ECX
samp.dll+869AA |. 8BCE |MOV ECX,ESI
samp.dll+869AC |. D91C24 |FSTP DWORD PTR SS:[ESP]
samp.dll+869AF |. E8 DCA7F8FF |CALL <samp.getColor~> ; getColor(somethingFromStack)
samp.dll+869B4 |. 8B0D 382A2110 |MOV ECX,DWORD PTR DS:[10212A38] ; |
samp.dll+869BA |. 50 |PUSH EAX ; |eax = color XXXXXXXX
samp.dll+869BB |. 68 88ED2010 |PUSH samp.1020ED88 ; |Name (ID)
samp.dll+869C0 |. 68 74EE2010 |PUSH samp.1020EE74 ; |pos?
samp.dll+869C5 |. E8 667DFFFF |CALL samp.1007E730 ; \samp.1007E730
samp.dll+869CA >|> 8B4424 14 |MOV EAX,DWORD PTR SS:[ESP+14] ; We jump here if we are out of name range
samp.dll+869CE |. 47 |INC EDI ; increment for
samp.dll+869CF |. 3BF8 |CMP EDI,EAX ; if for loop is done
samp.dll+869D1 |.^0F8E 09FEFFFF \JLE samp.samp.dll+867E0
samp.dll+869D7 >|> 8B0D 382A2110 MOV ECX,DWORD PTR DS:[10212A38]
samp.dll+869DD |. E8 3E7DFFFF CALL samp.1007E720
samp.dll+869E2 >|> 5F POP EDI
samp.dll+869E3 |. 5E POP ESI
samp.dll+869E4 |. 5D POP EBP
samp.dll+869E5 |. 5B POP EBX
samp.dll+869E6 |. 8BE5 MOV ESP,EBP
samp.dll+869E8 |. 5D POP EBP
samp.dll+869E9 \. C3 RETN
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment