⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tstril.asm

📁 The Radio Interface Layer is the name for an interface that was developed especially for the Pocket
💻 ASM
📖 第 1 页 / 共 5 页
字号:

	mov       r3, #3
	str       r3, [sp]

; 305  :     wc.lpfnWndProc		= (WNDPROC) WndProc;

	ldr       r2, [pc, #0x5C]  ;  pc+8+92 = 00000D58
	str       r2, [sp, #4]

; 306  :     wc.cbClsExtra		= 0;

	mov       r1, #0
	str       r1, [sp, #8]

; 307  :     wc.cbWndExtra		= 0;

	mov       r0, #0
	str       r0, [sp, #0xC]  ; 0xC = 12

; 308  :     wc.hInstance		= hInstance;

	ldr       lr, [sp, #0x30]  ; 0x30 = 48
	str       lr, [sp, #0x10]  ; 0x10 = 16

; 309  :     wc.hIcon			= LoadIcon(hInstance, MAKEINTRESOURCE(IDI_TSTRIL));

	mov       r1, #0x65  ; 0x65 = 101
	ldr       r0, [sp, #0x30]  ; 0x30 = 48
	bl        LoadIconW  ; 00000D24
	str       r0, [sp, #0x14]  ; 0x14 = 20

; 310  :     wc.hCursor			= 0;

	mov       r3, #0
	str       r3, [sp, #0x18]  ; 0x18 = 24

; 311  :     wc.hbrBackground	= (HBRUSH) GetStockObject(WHITE_BRUSH);

	mov       r0, #0
	bl        GetStockObject  ; 00000D38
	str       r0, [sp, #0x1C]  ; 0x1C = 28

; 312  :     wc.lpszMenuName		= 0;

	mov       r2, #0
	str       r2, [sp, #0x20]  ; 0x20 = 32

; 313  :     wc.lpszClassName	= szWindowClass;

	ldr       r1, [sp, #0x34]  ; 0x34 = 52
	str       r1, [sp, #0x24]  ; 0x24 = 36

; 314  : 
; 315  : 	return RegisterClass(&wc);

	add       r0, sp, #0
	bl        RegisterClassW  ; 00000D54

; 316  : }

	add       sp, sp, #0x28  ; 0x28 = 40
	ldmia     sp, {sp, pc}  ; ldmfd
|$L27544|
	DCD       |?WndProc@@YAJPAUHWND__@@IIJ@Z|
|$M27542|

	ENDP  ; |?MyRegisterClass@@YAGPAUHINSTANCE__@@PAG@Z|, MyRegisterClass

	IMPORT	|MoveWindow|
	IMPORT	|GetWindowRect|
	IMPORT	|GetClientRect|
	IMPORT	|LoadStringW|
	IMPORT	|ShowWindow|
	IMPORT	|UpdateWindow|
	IMPORT	|FindWindowW|
	IMPORT	|CreateWindowExW|
	IMPORT	|SetForegroundWindow|

	AREA	|.pdata|, PDATA
|$T27548| DCD	|?InitInstance@@YAHPAUHINSTANCE__@@H@Z|
	DCD	0x40006204

	AREA	|.text|, CODE

|?InitInstance@@YAHPAUHINSTANCE__@@H@Z| PROC		; InitInstance

; 329  : {

	mov       r12, sp
	stmdb     sp!, {r0, r1}  ; stmfd
	stmdb     sp!, {r12, lr}  ; stmfd
	sub       sp, sp, #0x76, 30  ; 0x1D8 = 472
|$M27546|

; 330  : 	HWND	hWnd = NULL;

	mov       r3, #0
	str       r3, [sp, #0x20]  ; 0x20 = 32

; 331  : 	TCHAR	szTitle[MAX_LOADSTRING];			// The title bar text
; 332  : 	TCHAR	szWindowClass[MAX_LOADSTRING];		// The window class name
; 333  : 
; 334  : 	g_hInst = hInstance;		// Store instance handle in our global variable

	ldr       r2, [sp, #0x1E0]  ; 0x1E0 = 480
	ldr       r1, [pc, #0x60]  ;  pc+8+96 = 00000DE0
	str       r2, [r1]

; 335  : 	// Initialize global strings
; 336  : 	LoadString(hInstance, IDC_TSTRIL, szWindowClass, MAX_LOADSTRING);

	mov       r3, #0x64  ; 0x64 = 100
	mov       r2, #1, 24  ; 0x100 = 256
	add       r2, sp, r2
	mov       r1, #3
	ldr       r0, [sp, #0x1E0]  ; 0x1E0 = 480
	bl        LoadStringW  ; 00000D9C

; 337  : 	LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);

	mov       r3, #0x64  ; 0x64 = 100
	add       r2, sp, #0x38  ; 0x38 = 56
	mov       r1, #1
	ldr       r0, [sp, #0x1E0]  ; 0x1E0 = 480
	bl        LoadStringW  ; 00000DB0

; 338  : 
; 339  : 	//If it is already running, then focus on the window
; 340  : 	hWnd = FindWindow(szWindowClass, szTitle);	

	add       r1, sp, #0x38  ; 0x38 = 56
	mov       r0, #1, 24  ; 0x100 = 256
	add       r0, sp, r0
	bl        FindWindowW  ; 00000DC0
	str       r0, [sp, #0x20]  ; 0x20 = 32

; 341  : 	if (hWnd) 

	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	cmp       r0, #0
	beq       |$L27393|  ; 00000DE4

; 342  : 	{
; 343  : 		// set focus to foremost child window
; 344  : 		// The "| 0x01" is used to bring any owned windows to the foreground and
; 345  : 		// activate them.
; 346  : 		SetForegroundWindow((HWND)((ULONG) hWnd | 0x00000001));

	ldr       lr, [sp, #0x20]  ; 0x20 = 32
	orr       r0, lr, #1
	bl        SetForegroundWindow  ; 00000DDC

; 347  : 		return 0;

	mov       r0, #0
	b         |$L27389|  ; 00000ED8
|$L27549|
	DCD       |?g_hInst@@3PAUHINSTANCE__@@A|
|$L27393|

; 348  : 	} 
; 349  : 
; 350  : 	MyRegisterClass(hInstance, szWindowClass);

	mov       r1, #1, 24  ; 0x100 = 256
	add       r1, sp, r1
	ldr       r0, [sp, #0x1E0]  ; 0x1E0 = 480
	bl        |?MyRegisterClass@@YAGPAUHINSTANCE__@@PAG@Z|  ; 00000DF8

; 351  : 	
; 352  : 	RECT	rect;
; 353  : 	GetClientRect(hWnd, &rect);

	add       r1, sp, #0x28  ; 0x28 = 40
	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	bl        GetClientRect  ; 00000E04

; 354  : 	
; 355  : 	hWnd = CreateWindow(szWindowClass, szTitle, WS_VISIBLE,
; 356  : 		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

	mov       r3, #0
	str       r3, [sp, #0x1C]  ; 0x1C = 28
	ldr       r2, [sp, #0x1E0]  ; 0x1E0 = 480
	str       r2, [sp, #0x18]  ; 0x18 = 24
	mov       r1, #0
	str       r1, [sp, #0x14]  ; 0x14 = 20
	mov       r0, #0
	str       r0, [sp, #0x10]  ; 0x10 = 16
	mov       lr, #2, 2  ; 0x80000000 = 2147483648
	str       lr, [sp, #0xC]  ; 0xC = 12
	mov       r3, #2, 2  ; 0x80000000 = 2147483648
	str       r3, [sp, #8]
	mov       r2, #2, 2  ; 0x80000000 = 2147483648
	str       r2, [sp, #4]
	mov       r1, #2, 2  ; 0x80000000 = 2147483648
	str       r1, [sp]
	mov       r3, #1, 4  ; 0x10000000 = 268435456
	add       r2, sp, #0x38  ; 0x38 = 56
	mov       r1, #1, 24  ; 0x100 = 256
	add       r1, sp, r1
	mov       r0, #0
	bl        CreateWindowExW  ; 00000E5C
	str       r0, [sp, #0x20]  ; 0x20 = 32

; 357  : 	if (!hWnd)

	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	cmp       r0, #0
	bne       |$L27401|  ; 00000E70

; 358  : 	{	
; 359  : 		return FALSE;

	mov       r0, #0
	b         |$L27389|  ; 00000ED8
|$L27401|

; 360  : 	}
; 361  : 	//When the main window is created using CW_USEDEFAULT the height of the menubar (if one
; 362  : 	// is created is not taken into account). So we resize the window after creating it
; 363  : 	// if a menubar is present
; 364  : 	{
; 365  : 		RECT rc;
; 366  : 		GetWindowRect(hWnd, &rc);

	mov       r1, #0x72, 30  ; 0x1C8 = 456
	add       r1, sp, r1
	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	bl        GetWindowRect  ; 00000E84

; 367  : 		rc.bottom -= MENU_HEIGHT;

	ldr       lr, [sp, #0x1D4]  ; 0x1D4 = 468
	sub       r3, lr, #0x1A  ; 0x1A = 26
	str       r3, [sp, #0x1D4]  ; 0x1D4 = 468

; 368  : 		if (g_hwndCB)

	ldr       r2, [pc, #0x4C]  ;  pc+8+76 = 00000EE0
	ldr       r1, [r2]
	cmp       r1, #0
	beq       |$L27403|  ; 00000EC0

; 369  : 			MoveWindow(hWnd, rc.left, rc.top, rc.right, rc.bottom, FALSE);

	mov       r0, #0
	str       r0, [sp, #4]
	ldr       lr, [sp, #0x1D4]  ; 0x1D4 = 468
	str       lr, [sp]
	ldr       r3, [sp, #0x1D0]  ; 0x1D0 = 464
	ldr       r2, [sp, #0x1CC]  ; 0x1CC = 460
	ldr       r1, [sp, #0x1C8]  ; 0x1C8 = 456
	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	bl        MoveWindow  ; 00000EC4
|$L27403|

; 370  : 	}
; 371  : 
; 372  : 
; 373  : 	ShowWindow(hWnd, nCmdShow);

	ldr       r1, [sp, #0x1E4]  ; 0x1E4 = 484
	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	bl        ShowWindow  ; 00000ED0

; 374  : 	UpdateWindow(hWnd);

	ldr       r0, [sp, #0x20]  ; 0x20 = 32
	bl        UpdateWindow  ; 00000ED8

; 375  : 
; 376  : 	return TRUE;

	mov       r0, #1
|$L27389|

; 377  : }

	add       sp, sp, #0x76, 30  ; 0x1D8 = 472
	ldmia     sp, {sp, pc}  ; ldmfd
|$L27550|
	DCD       |?g_hwndCB@@3PAUHWND__@@A|
|$M27547|

	ENDP  ; |?InitInstance@@YAHPAUHINSTANCE__@@H@Z|, InitInstance

	EXPORT	|?About@@YAJPAUHWND__@@IIJ@Z|		; About
	EXPORT	|?CreateRpCommandBar@@YAPAUHWND__@@PAU1@@Z| ; CreateRpCommandBar
	IMPORT	|CloseHandle|
	IMPORT	|LoadResource|
	IMPORT	|FindResourceW|
	IMPORT	|CreateThread|
	IMPORT	|DefWindowProcW|
	IMPORT	|BeginPaint|
	IMPORT	|EndPaint|
	IMPORT	|SHHandleWMActivate|
	IMPORT	|memset|
	IMPORT	|SHHandleWMSettingChange|
	IMPORT	|DialogBoxIndirectParamW|
	IMPORT	|DestroyWindow|
	IMPORT	|PostQuitMessage|

	AREA	|.bss|, NOINIT
|s_sai|	%	0xc
|$SG27446| %	0x2

	AREA	|.pdata|, PDATA
|$T27555| DCD	|?WndProc@@YAJPAUHWND__@@IIJ@Z|
	DCD	0x4000f604

	AREA	|.data|, DATA
|$SG27447| DCB	"l", 0x0, "i", 0x0, "s", 0x0, "t", 0x0, "b", 0x0, "o", 0x0
	DCB	"x", 0x0, 0x0, 0x0
|$SG27450| DCB	"E", 0x0, "r", 0x0, "r", 0x0, "o", 0x0, "r", 0x0, 0x0, 0x0
|$SG27451| DCB	"U", 0x0, "n", 0x0, "a", 0x0, "b", 0x0, "l", 0x0, "e", 0x0
	DCB	" ", 0x0, "t", 0x0, "o", 0x0, " ", 0x0, "c", 0x0, "r", 0x0
	DCB	"e", 0x0, "a", 0x0, "t", 0x0, "e", 0x0, " ", 0x0, "t", 0x0
	DCB	"h", 0x0, "e", 0x0, " ", 0x0, "R", 0x0, "I", 0x0, "L", 0x0
	DCB	" ", 0x0, "t", 0x0, "h", 0x0, "r", 0x0, "e", 0x0, "a", 0x0
	DCB	"d", 0x0, 0x0, 0x0

	AREA	|.text|, CODE

|?WndProc@@YAJPAUHWND__@@IIJ@Z| PROC			; WndProc

; 390  : {

	mov       r12, sp
	stmdb     sp!, {r0 - r3}  ; stmfd
	stmdb     sp!, {r12, lr}  ; stmfd
	sub       sp, sp, #0x98  ; 0x98 = 152
|$M27553|

; 391  : 	HDC hdc;
; 392  : 	int wmId, wmEvent;
; 393  : 	PAINTSTRUCT ps;
; 394  : 	DWORD dwError, dwThreadID;
; 395  : 	HANDLE hReadThread = NULL;

	mov       r3, #0
	str       r3, [sp, #0x20]  ; 0x20 = 32

; 396  : 
; 397  : 	switch (message) 
; 398  : 	{

	ldr       r2, [sp, #0xA4]  ; 0xA4 = 164
	str       r2, [sp, #0x90]  ; 0x90 = 144
	ldr       r1, [sp, #0x90]  ; 0x90 = 144
	cmp       r1, #6
	bhi       |$L27552|  ; 00000F44
	ldr       r0, [sp, #0x90]  ; 0x90 = 144
	cmp       r0, #6
	beq       |$L27459|  ; 00001260
	ldr       lr, [sp, #0x90]  ; 0x90 = 144
	cmp       lr, #1
	beq       |$L27445|  ; 000010A4
	ldr       r3, [sp, #0x90]  ; 0x90 = 144
	cmp       r3, #2
	beq       |$L27458|  ; 00001248
	ldr       r2, [sp, #0x90]  ; 0x90 = 144
	cmp       r2, #5
	beq       |$L27452|  ; 000011BC
	b         |$L27461|  ; 00001298
|$L27552|
	ldr       r1, [sp, #0x90]  ; 0x90 = 144
	cmp       r1, #0xF  ; 0xF = 15
	beq       |$L27456|  ; 0000121C
	ldr       r0, [sp, #0x90]  ; 0x90 = 144
	cmp       r0, #0x1A  ; 0x1A = 26
	beq       |$L27460|  ; 00001280
	ldr       lr, [sp, #0x90]  ; 0x90 = 144
	mov       r3, #0x11, 28  ; 0x110 = 272
	orr       r2, r3, #1
	cmp       lr, r2
	beq       |$L27421|  ; 00000F74
	b         |$L27461|  ; 00001298
|$L27421|

; 399  : 		case WM_COMMAND:
; 400  : 			wmId    = LOWORD(wParam); 

	ldr       r1, [sp, #0xA8]  ; 0xA8 = 168
	mov       r0, r1, lsl #16
	mov       lr, r0, lsr #16
	mov       r3, lr, lsl #16
	mov       r2, r3, lsr #16
	str       r2, [sp, #0x28]  ; 0x28 = 40

; 401  : 			wmEvent = HIWORD(wParam); 

	ldr       r1, [sp, #0xA8]  ; 0xA8 = 168
	mov       r0, r1, lsr #16
	mov       lr, #0xFF, 24  ; 0xFF00 = 65280
	orr       r3, lr, #0xFF  ; 0xFF = 255
	and       r2, r0, r3
	mov       r1, r2, lsl #16
	mov       r0, r1, lsr #16
	mov       lr, r0, lsl #16
	mov       r3, lr, lsr #16
	str       r3, [sp, #0x78]  ; 0x78 = 120

; 402  : 			// Parse the menu selections:
; 403  : 			switch (wmId)
; 404  : 			{	

	ldr       r2, [sp, #0x28]  ; 0x28 = 40
	str       r2, [sp, #0x94]  ; 0x94 = 148
	ldr       r1, [sp, #0x94]  ; 0x94 = 148
	cmp       r1, #1
	beq       |$L27437|  ; 0000105C
	ldr       r0, [sp, #0x94]  ; 0x94 = 148
	mov       lr, #0x27, 22  ; 0x9C00 = 39936
	orr       r3, lr, #0x43  ; 0x43 = 67
	cmp       r0, r3
	beq       |$L27430|  ; 0000100C
	ldr       r2, [sp, #0x94]  ; 0x94 = 148
	mov       r1, #0x27, 22  ; 0x9C00 = 39936
	orr       r0, r1, #0x44  ; 0x44 = 68
	cmp       r2, r0
	beq       |$L27429|  ; 00000FF4
	b         |$L27444|  ; 00001088
|$L27429|

; 405  : 				case IDM_TOOLS_EXIT:
; 406  : 					return SendMessage (hWnd, WM_CLOSE, 0, 0);

	mov       r3, #0
	mov       r2, #0
	mov       r1, #0x10  ; 0x10 = 16
	ldr       r0, [sp, #0xA0]  ; 0xA0 = 160
	bl        SendMessageW  ; 0000100C
	b         |$L27409|  ; 000012B4
|$L27430|

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -