; Listing generated by Microsoft (R) Optimizing Compiler Version 15.00.21022.08 

	TITLE	c:\Develop\DScaler423a\DScaler\BitmapAsButton.cpp
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB OLDNAMES

PUBLIC	??1CBitmapHolder@@QAE@XZ			; CBitmapHolder::~CBitmapHolder
EXTRN	__imp__DestroyWindow@4:PROC
EXTRN	__imp__RegisterClassW@4:PROC
EXTRN	__imp__GetClassInfoW@12:PROC
EXTRN	__imp__CreateWindowExW@48:PROC
EXTRN	__imp__LoadCursorW@8:PROC
EXTRN	__imp__SetWindowRgn@12:PROC
EXTRN	__imp__GetWindowRect@8:PROC
EXTRN	__imp__BeginPaint@8:PROC
EXTRN	__imp__EndPaint@8:PROC
EXTRN	__imp__SetCursor@4:PROC
EXTRN	__imp__GetCursor@0:PROC
EXTRN	__imp___TrackMouseEvent@4:PROC
EXTRN	__imp__SetWindowLongW@12:PROC
PUBLIC	?RestoreBack@CBitmapAsButton@@QAEHPAUHWND__@@@Z	; CBitmapAsButton::RestoreBack
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\bitmapasbutton.cpp
;	COMDAT ?RestoreBack@CBitmapAsButton@@QAEHPAUHWND__@@@Z
_TEXT	SEGMENT
_this$ = -4						; size = 4
_hWnd$ = 8						; size = 4
?RestoreBack@CBitmapAsButton@@QAEHPAUHWND__@@@Z PROC	; CBitmapAsButton::RestoreBack, COMDAT
; _this$ = ecx

; 204  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	51		 push	 ecx
  00004	89 4d fc	 mov	 DWORD PTR _this$[ebp], ecx

; 205  :     if (hWnd == NULL)

  00007	83 7d 08 00	 cmp	 DWORD PTR _hWnd$[ebp], 0
  0000b	75 09		 jne	 SHORT $LN3@RestoreBac

; 206  :     {
; 207  :         hWnd = hWndButton;

  0000d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00010	8b 48 28	 mov	 ecx, DWORD PTR [eax+40]
  00013	89 4d 08	 mov	 DWORD PTR _hWnd$[ebp], ecx
$LN3@RestoreBac:

; 208  :     }
; 209  :     if ((pOriginalProc != NULL) && (hWnd != NULL) && (hWnd==hWndButton))

  00016	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00019	83 7a 5c 00	 cmp	 DWORD PTR [edx+92], 0
  0001d	0f 84 a9 00 00
	00		 je	 $LN2@RestoreBac
  00023	83 7d 08 00	 cmp	 DWORD PTR _hWnd$[ebp], 0
  00027	0f 84 9f 00 00
	00		 je	 $LN2@RestoreBac
  0002d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00030	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  00033	3b 48 28	 cmp	 ecx, DWORD PTR [eax+40]
  00036	0f 85 90 00 00
	00		 jne	 $LN2@RestoreBac

; 210  :     {
; 211  :         SetWindowRgn(hWnd, NULL, FALSE);

  0003c	6a 00		 push	 0
  0003e	6a 00		 push	 0
  00040	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  00043	52		 push	 edx
  00044	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowRgn@12

; 212  :         SetWindowLongPtr(hWnd, GWLP_WNDPROC, (LONG_PTR)pOriginalProc);

  0004a	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0004d	8b 48 5c	 mov	 ecx, DWORD PTR [eax+92]
  00050	51		 push	 ecx
  00051	6a fc		 push	 -4			; fffffffcH
  00053	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  00056	52		 push	 edx
  00057	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowLongW@12

; 213  :         pOriginalProc = NULL;

  0005d	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  00060	c7 40 5c 00 00
	00 00		 mov	 DWORD PTR [eax+92], 0

; 214  :         if ((OriginalWidth>0) && (OriginalHeight>0))

  00067	8b 4d fc	 mov	 ecx, DWORD PTR _this$[ebp]
  0006a	83 79 60 00	 cmp	 DWORD PTR [ecx+96], 0
  0006e	7e 29		 jle	 SHORT $LN1@RestoreBac
  00070	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00073	83 7a 64 00	 cmp	 DWORD PTR [edx+100], 0
  00077	7e 20		 jle	 SHORT $LN1@RestoreBac

; 215  :         {
; 216  :             SetWindowPos(hWnd, NULL, 0,0, OriginalWidth, OriginalHeight, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

  00079	6a 16		 push	 22			; 00000016H
  0007b	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  0007e	8b 48 64	 mov	 ecx, DWORD PTR [eax+100]
  00081	51		 push	 ecx
  00082	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  00085	8b 42 60	 mov	 eax, DWORD PTR [edx+96]
  00088	50		 push	 eax
  00089	6a 00		 push	 0
  0008b	6a 00		 push	 0
  0008d	6a 00		 push	 0
  0008f	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  00092	51		 push	 ecx
  00093	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowPos@28
$LN1@RestoreBac:

; 217  :         }
; 218  :         OriginalWidth = -1;

  00099	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  0009c	c7 42 60 ff ff
	ff ff		 mov	 DWORD PTR [edx+96], -1

; 219  :         OriginalHeight = -1;

  000a3	8b 45 fc	 mov	 eax, DWORD PTR _this$[ebp]
  000a6	c7 40 64 ff ff
	ff ff		 mov	 DWORD PTR [eax+100], -1

; 220  :         InvalidateRect(hWnd, NULL, FALSE);

  000ad	6a 00		 push	 0
  000af	6a 00		 push	 0
  000b1	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  000b4	51		 push	 ecx
  000b5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 221  :         hWndButton = NULL;

  000bb	8b 55 fc	 mov	 edx, DWORD PTR _this$[ebp]
  000be	c7 42 28 00 00
	00 00		 mov	 DWORD PTR [edx+40], 0

; 222  :         return TRUE;

  000c5	b8 01 00 00 00	 mov	 eax, 1
  000ca	eb 02		 jmp	 SHORT $LN4@RestoreBac
$LN2@RestoreBac:

; 223  :     }
; 224  :     return FALSE;

  000cc	33 c0		 xor	 eax, eax
$LN4@RestoreBac:

; 225  : }

  000ce	8b e5		 mov	 esp, ebp
  000d0	5d		 pop	 ebp
  000d1	c2 04 00	 ret	 4
?RestoreBack@CBitmapAsButton@@QAEHPAUHWND__@@@Z ENDP	; CBitmapAsButton::RestoreBack
PUBLIC	?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z ; CBitmapAsButton::Draw
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$1
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$2
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$3
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$4
__ehfuncinfo$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z DD 019930522H
	DD	05H
	DD	FLAT:__unwindtable$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z
_TEXT	SEGMENT
tv260 = -208						; size = 4
tv265 = -204						; size = 4
tv258 = -200						; size = 4
tv264 = -196						; size = 4
tv256 = -192						; size = 4
tv263 = -188						; size = 4
tv254 = -184						; size = 4
tv262 = -180						; size = 4
tv252 = -176						; size = 4
tv261 = -172						; size = 4
_this$ = -168						; size = 4
$T325750 = -164						; size = 8
$T325749 = -156						; size = 4
$T325748 = -152						; size = 8
$T325747 = -144						; size = 4
$T325746 = -140						; size = 8
$T325745 = -132						; size = 4
$T325744 = -128						; size = 8
$T325743 = -120						; size = 4
$T325742 = -116						; size = 8
$T325741 = -108						; size = 4
_State3$141968 = -104					; size = 4
_rcRight$141965 = -100					; size = 16
_P1$141967 = -84					; size = 8
_SliderX$141963 = -76					; size = 4
_rcLeft$141964 = -72					; size = 16
_rc$141966 = -56					; size = 16
_P1$141958 = -40					; size = 8
_pPBmpStart$141959 = -32				; size = 4
_P1$141945 = -28					; size = 8
_pPBmpStart$141946 = -20				; size = 4
_State$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_hDC$ = 8						; size = 4
_lpRect$ = 12						; size = 4
?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z PROC ; CBitmapAsButton::Draw, COMDAT
; _this$ = ecx

; 268  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	81 ec c4 00 00
	00		 sub	 esp, 196		; 000000c4H
  00017	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001c	33 c5		 xor	 eax, ebp
  0001e	50		 push	 eax
  0001f	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  00022	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00028	89 8d 58 ff ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 269  :     int State = 0;

  0002e	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _State$[ebp], 0

; 270  :     if (m_mouseldown||m_mouserdown)

  00035	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0003b	83 78 6c 00	 cmp	 DWORD PTR [eax+108], 0
  0003f	75 0c		 jne	 SHORT $LN21@Draw@5
  00041	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00047	83 79 70 00	 cmp	 DWORD PTR [ecx+112], 0
  0004b	74 09		 je	 SHORT $LN22@Draw@5
$LN21@Draw@5:

; 271  :     {
; 272  :         State = 2;

  0004d	c7 45 f0 02 00
	00 00		 mov	 DWORD PTR _State$[ebp], 2
  00054	eb 13		 jmp	 SHORT $LN20@Draw@5
$LN22@Draw@5:

; 273  :     }
; 274  :     else if (m_mouseover)

  00056	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0005c	83 7a 74 00	 cmp	 DWORD PTR [edx+116], 0
  00060	74 07		 je	 SHORT $LN20@Draw@5

; 275  :     {
; 276  :         State = 1;

  00062	c7 45 f0 01 00
	00 00		 mov	 DWORD PTR _State$[ebp], 1
$LN20@Draw@5:

; 277  :     }
; 278  : 
; 279  :     if (ButtonType == BITMAPASBUTTON_PUSH)

  00069	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0006f	83 78 1c 00	 cmp	 DWORD PTR [eax+28], 0
  00073	0f 85 a7 00 00
	00		 jne	 $LN18@Draw@5

; 280  :     {
; 281  :         if (m_bhBmp.GetBitmap(State) == NULL) { State = 0; }

  00079	8b 4d f0	 mov	 ecx, DWORD PTR _State$[ebp]
  0007c	51		 push	 ecx
  0007d	8d 55 8c	 lea	 edx, DWORD PTR $T325742[ebp]
  00080	52		 push	 edx
  00081	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00087	83 c1 30	 add	 ecx, 48			; 00000030H
  0008a	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  0008f	89 85 54 ff ff
	ff		 mov	 DWORD PTR tv261[ebp], eax
  00095	8b 85 54 ff ff
	ff		 mov	 eax, DWORD PTR tv261[ebp]
  0009b	89 85 50 ff ff
	ff		 mov	 DWORD PTR tv252[ebp], eax
  000a1	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  000a8	6a 00		 push	 0
  000aa	8b 8d 50 ff ff
	ff		 mov	 ecx, DWORD PTR tv252[ebp]
  000b0	e8 00 00 00 00	 call	 ??8?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator==
  000b5	89 45 94	 mov	 DWORD PTR $T325741[ebp], eax
  000b8	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000bf	8d 4d 8c	 lea	 ecx, DWORD PTR $T325742[ebp]
  000c2	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  000c7	83 7d 94 00	 cmp	 DWORD PTR $T325741[ebp], 0
  000cb	74 07		 je	 SHORT $LN17@Draw@5
  000cd	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _State$[ebp], 0
$LN17@Draw@5:

; 282  : 
; 283  :         POINT P1;
; 284  :         POINT *pPBmpStart = NULL;

  000d4	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _pPBmpStart$141946[ebp], 0

; 285  :         if (lpRect != NULL)

  000db	83 7d 0c 00	 cmp	 DWORD PTR _lpRect$[ebp], 0
  000df	74 1c		 je	 SHORT $LN16@Draw@5

; 286  :         {
; 287  :             pPBmpStart = &P1;

  000e1	8d 4d e4	 lea	 ecx, DWORD PTR _P1$141945[ebp]
  000e4	89 4d ec	 mov	 DWORD PTR _pPBmpStart$141946[ebp], ecx

; 288  :             pPBmpStart->x = lpRect->left;

  000e7	8b 55 ec	 mov	 edx, DWORD PTR _pPBmpStart$141946[ebp]
  000ea	8b 45 0c	 mov	 eax, DWORD PTR _lpRect$[ebp]
  000ed	8b 08		 mov	 ecx, DWORD PTR [eax]
  000ef	89 0a		 mov	 DWORD PTR [edx], ecx

; 289  :             pPBmpStart->y = lpRect->top;

  000f1	8b 55 ec	 mov	 edx, DWORD PTR _pPBmpStart$141946[ebp]
  000f4	8b 45 0c	 mov	 eax, DWORD PTR _lpRect$[ebp]
  000f7	8b 48 04	 mov	 ecx, DWORD PTR [eax+4]
  000fa	89 4a 04	 mov	 DWORD PTR [edx+4], ecx
$LN16@Draw@5:

; 290  :         }
; 291  : 
; 292  :         m_bhBmp.Draw(hDC,pPBmpStart,lpRect,State);

  000fd	8b 55 f0	 mov	 edx, DWORD PTR _State$[ebp]
  00100	52		 push	 edx
  00101	8b 45 0c	 mov	 eax, DWORD PTR _lpRect$[ebp]
  00104	50		 push	 eax
  00105	8b 4d ec	 mov	 ecx, DWORD PTR _pPBmpStart$141946[ebp]
  00108	51		 push	 ecx
  00109	8b 55 08	 mov	 edx, DWORD PTR _hDC$[ebp]
  0010c	52		 push	 edx
  0010d	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00113	83 c1 30	 add	 ecx, 48			; 00000030H
  00116	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw

; 293  :     }
; 294  :     else if ((ButtonType == BITMAPASBUTTON_CHECKBOX)

  0011b	e9 8a 03 00 00	 jmp	 $LN23@Draw@5
$LN18@Draw@5:

; 295  :             || (ButtonType == BITMAPASBUTTON_3STATE) || (ButtonType == BITMAPASBUTTON_4STATE))

  00120	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00126	83 78 1c 01	 cmp	 DWORD PTR [eax+28], 1
  0012a	74 1c		 je	 SHORT $LN13@Draw@5
  0012c	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00132	83 79 1c 03	 cmp	 DWORD PTR [ecx+28], 3
  00136	74 10		 je	 SHORT $LN13@Draw@5
  00138	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0013e	83 7a 1c 04	 cmp	 DWORD PTR [edx+28], 4
  00142	0f 85 39 01 00
	00		 jne	 $LN14@Draw@5
$LN13@Draw@5:

; 296  :     {
; 297  :         State += 3*ButtonState;

  00148	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0014e	8b 48 20	 mov	 ecx, DWORD PTR [eax+32]
  00151	6b c9 03	 imul	 ecx, 3
  00154	03 4d f0	 add	 ecx, DWORD PTR _State$[ebp]
  00157	89 4d f0	 mov	 DWORD PTR _State$[ebp], ecx

; 298  : 
; 299  :         if (m_bhBmp.GetBitmap(State) == NULL)

  0015a	8b 55 f0	 mov	 edx, DWORD PTR _State$[ebp]
  0015d	52		 push	 edx
  0015e	8d 45 80	 lea	 eax, DWORD PTR $T325744[ebp]
  00161	50		 push	 eax
  00162	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00168	83 c1 30	 add	 ecx, 48			; 00000030H
  0016b	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  00170	89 85 4c ff ff
	ff		 mov	 DWORD PTR tv262[ebp], eax
  00176	8b 8d 4c ff ff
	ff		 mov	 ecx, DWORD PTR tv262[ebp]
  0017c	89 8d 48 ff ff
	ff		 mov	 DWORD PTR tv254[ebp], ecx
  00182	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  00189	6a 00		 push	 0
  0018b	8b 8d 48 ff ff
	ff		 mov	 ecx, DWORD PTR tv254[ebp]
  00191	e8 00 00 00 00	 call	 ??8?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator==
  00196	89 45 88	 mov	 DWORD PTR $T325743[ebp], eax
  00199	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001a0	8d 4d 80	 lea	 ecx, DWORD PTR $T325744[ebp]
  001a3	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  001a8	83 7d 88 00	 cmp	 DWORD PTR $T325743[ebp], 0
  001ac	74 20		 je	 SHORT $LN12@Draw@5

; 300  :         {
; 301  :             if (State>(3*ButtonState))

  001ae	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  001b4	8b 42 20	 mov	 eax, DWORD PTR [edx+32]
  001b7	6b c0 03	 imul	 eax, 3
  001ba	39 45 f0	 cmp	 DWORD PTR _State$[ebp], eax
  001bd	7e 0f		 jle	 SHORT $LN12@Draw@5

; 302  :             {
; 303  :                 State=3*ButtonState;

  001bf	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001c5	8b 51 20	 mov	 edx, DWORD PTR [ecx+32]
  001c8	6b d2 03	 imul	 edx, 3
  001cb	89 55 f0	 mov	 DWORD PTR _State$[ebp], edx
$LN12@Draw@5:

; 304  :             }
; 305  :         }
; 306  :         if (m_bhBmp.GetBitmap(State) == NULL)

  001ce	8b 45 f0	 mov	 eax, DWORD PTR _State$[ebp]
  001d1	50		 push	 eax
  001d2	8d 8d 74 ff ff
	ff		 lea	 ecx, DWORD PTR $T325746[ebp]
  001d8	51		 push	 ecx
  001d9	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001df	83 c1 30	 add	 ecx, 48			; 00000030H
  001e2	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  001e7	89 85 44 ff ff
	ff		 mov	 DWORD PTR tv263[ebp], eax
  001ed	8b 95 44 ff ff
	ff		 mov	 edx, DWORD PTR tv263[ebp]
  001f3	89 95 40 ff ff
	ff		 mov	 DWORD PTR tv256[ebp], edx
  001f9	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 2
  00200	6a 00		 push	 0
  00202	8b 8d 40 ff ff
	ff		 mov	 ecx, DWORD PTR tv256[ebp]
  00208	e8 00 00 00 00	 call	 ??8?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator==
  0020d	89 85 7c ff ff
	ff		 mov	 DWORD PTR $T325745[ebp], eax
  00213	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0021a	8d 8d 74 ff ff
	ff		 lea	 ecx, DWORD PTR $T325746[ebp]
  00220	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  00225	83 bd 7c ff ff
	ff 00		 cmp	 DWORD PTR $T325745[ebp], 0
  0022c	74 07		 je	 SHORT $LN10@Draw@5

; 307  :         {
; 308  :             State = 0;

  0022e	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _State$[ebp], 0
$LN10@Draw@5:

; 309  :         }
; 310  : 
; 311  :         POINT P1;
; 312  :         POINT *pPBmpStart = NULL;

  00235	c7 45 e0 00 00
	00 00		 mov	 DWORD PTR _pPBmpStart$141959[ebp], 0

; 313  :         if (lpRect != NULL)

  0023c	83 7d 0c 00	 cmp	 DWORD PTR _lpRect$[ebp], 0
  00240	74 1c		 je	 SHORT $LN9@Draw@5

; 314  :         {
; 315  :             pPBmpStart = &P1;

  00242	8d 45 d8	 lea	 eax, DWORD PTR _P1$141958[ebp]
  00245	89 45 e0	 mov	 DWORD PTR _pPBmpStart$141959[ebp], eax

; 316  :             pPBmpStart->x = lpRect->left;

  00248	8b 4d e0	 mov	 ecx, DWORD PTR _pPBmpStart$141959[ebp]
  0024b	8b 55 0c	 mov	 edx, DWORD PTR _lpRect$[ebp]
  0024e	8b 02		 mov	 eax, DWORD PTR [edx]
  00250	89 01		 mov	 DWORD PTR [ecx], eax

; 317  :             pPBmpStart->y = lpRect->top;

  00252	8b 4d e0	 mov	 ecx, DWORD PTR _pPBmpStart$141959[ebp]
  00255	8b 55 0c	 mov	 edx, DWORD PTR _lpRect$[ebp]
  00258	8b 42 04	 mov	 eax, DWORD PTR [edx+4]
  0025b	89 41 04	 mov	 DWORD PTR [ecx+4], eax
$LN9@Draw@5:

; 318  :         }
; 319  : 
; 320  :         m_bhBmp.Draw(hDC,pPBmpStart,lpRect,State);

  0025e	8b 4d f0	 mov	 ecx, DWORD PTR _State$[ebp]
  00261	51		 push	 ecx
  00262	8b 55 0c	 mov	 edx, DWORD PTR _lpRect$[ebp]
  00265	52		 push	 edx
  00266	8b 45 e0	 mov	 eax, DWORD PTR _pPBmpStart$141959[ebp]
  00269	50		 push	 eax
  0026a	8b 4d 08	 mov	 ecx, DWORD PTR _hDC$[ebp]
  0026d	51		 push	 ecx
  0026e	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00274	83 c1 30	 add	 ecx, 48			; 00000030H
  00277	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw
  0027c	e9 29 02 00 00	 jmp	 $LN23@Draw@5
$LN14@Draw@5:

; 321  :     }
; 322  :     else if (ButtonType == BITMAPASBUTTON_SLIDER)

  00281	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00287	83 7a 1c 02	 cmp	 DWORD PTR [edx+28], 2
  0028b	0f 85 19 02 00
	00		 jne	 $LN23@Draw@5

; 323  :     {
; 324  :         int SliderX = (SliderPos-SliderRangeMin)*ButtonWidth/(SliderRangeMax-SliderRangeMin);

  00291	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00297	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0029d	8b 40 7c	 mov	 eax, DWORD PTR [eax+124]
  002a0	2b 81 80 00 00
	00		 sub	 eax, DWORD PTR [ecx+128]
  002a6	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002ac	0f af 42 4c	 imul	 eax, DWORD PTR [edx+76]
  002b0	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  002b6	8b 95 58 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002bc	8b 89 84 00 00
	00		 mov	 ecx, DWORD PTR [ecx+132]
  002c2	2b 8a 80 00 00
	00		 sub	 ecx, DWORD PTR [edx+128]
  002c8	99		 cdq
  002c9	f7 f9		 idiv	 ecx
  002cb	89 45 b4	 mov	 DWORD PTR _SliderX$141963[ebp], eax

; 325  :         RECT rcLeft;
; 326  :         RECT rcRight;
; 327  :         RECT rc;
; 328  :         POINT P1;
; 329  : 
; 330  :         int State3 = State+3;

  002ce	8b 55 f0	 mov	 edx, DWORD PTR _State$[ebp]
  002d1	83 c2 03	 add	 edx, 3
  002d4	89 55 98	 mov	 DWORD PTR _State3$141968[ebp], edx

; 331  : 
; 332  :         ::SetRect(&rcLeft, 0, 0, SliderX, ButtonHeight);

  002d7	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  002dd	8b 48 50	 mov	 ecx, DWORD PTR [eax+80]
  002e0	51		 push	 ecx
  002e1	8b 55 b4	 mov	 edx, DWORD PTR _SliderX$141963[ebp]
  002e4	52		 push	 edx
  002e5	6a 00		 push	 0
  002e7	6a 00		 push	 0
  002e9	8d 45 b8	 lea	 eax, DWORD PTR _rcLeft$141964[ebp]
  002ec	50		 push	 eax
  002ed	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetRect@20

; 333  :         ::SetRect(&rcRight, SliderX, 0, ButtonWidth, ButtonHeight);

  002f3	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  002f9	8b 51 50	 mov	 edx, DWORD PTR [ecx+80]
  002fc	52		 push	 edx
  002fd	8b 85 58 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00303	8b 48 4c	 mov	 ecx, DWORD PTR [eax+76]
  00306	51		 push	 ecx
  00307	6a 00		 push	 0
  00309	8b 55 b4	 mov	 edx, DWORD PTR _SliderX$141963[ebp]
  0030c	52		 push	 edx
  0030d	8d 45 9c	 lea	 eax, DWORD PTR _rcRight$141965[ebp]
  00310	50		 push	 eax
  00311	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetRect@20

; 334  : 
; 335  :         if (m_bhBmp.GetBitmap(State) == NULL)

  00317	8b 4d f0	 mov	 ecx, DWORD PTR _State$[ebp]
  0031a	51		 push	 ecx
  0031b	8d 95 68 ff ff
	ff		 lea	 edx, DWORD PTR $T325748[ebp]
  00321	52		 push	 edx
  00322	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00328	83 c1 30	 add	 ecx, 48			; 00000030H
  0032b	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  00330	89 85 3c ff ff
	ff		 mov	 DWORD PTR tv264[ebp], eax
  00336	8b 85 3c ff ff
	ff		 mov	 eax, DWORD PTR tv264[ebp]
  0033c	89 85 38 ff ff
	ff		 mov	 DWORD PTR tv258[ebp], eax
  00342	c7 45 fc 03 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 3
  00349	6a 00		 push	 0
  0034b	8b 8d 38 ff ff
	ff		 mov	 ecx, DWORD PTR tv258[ebp]
  00351	e8 00 00 00 00	 call	 ??8?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator==
  00356	89 85 70 ff ff
	ff		 mov	 DWORD PTR $T325747[ebp], eax
  0035c	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00363	8d 8d 68 ff ff
	ff		 lea	 ecx, DWORD PTR $T325748[ebp]
  00369	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  0036e	83 bd 70 ff ff
	ff 00		 cmp	 DWORD PTR $T325747[ebp], 0
  00375	74 07		 je	 SHORT $LN6@Draw@5

; 336  :         {
; 337  :             State = 0;

  00377	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR _State$[ebp], 0
$LN6@Draw@5:

; 338  :         }
; 339  :         if (m_bhBmp.GetBitmap(State3) == NULL)

  0037e	8b 4d 98	 mov	 ecx, DWORD PTR _State3$141968[ebp]
  00381	51		 push	 ecx
  00382	8d 95 5c ff ff
	ff		 lea	 edx, DWORD PTR $T325750[ebp]
  00388	52		 push	 edx
  00389	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0038f	83 c1 30	 add	 ecx, 48			; 00000030H
  00392	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  00397	89 85 34 ff ff
	ff		 mov	 DWORD PTR tv265[ebp], eax
  0039d	8b 85 34 ff ff
	ff		 mov	 eax, DWORD PTR tv265[ebp]
  003a3	89 85 30 ff ff
	ff		 mov	 DWORD PTR tv260[ebp], eax
  003a9	c7 45 fc 04 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 4
  003b0	6a 00		 push	 0
  003b2	8b 8d 30 ff ff
	ff		 mov	 ecx, DWORD PTR tv260[ebp]
  003b8	e8 00 00 00 00	 call	 ??8?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator==
  003bd	89 85 64 ff ff
	ff		 mov	 DWORD PTR $T325749[ebp], eax
  003c3	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  003ca	8d 8d 5c ff ff
	ff		 lea	 ecx, DWORD PTR $T325750[ebp]
  003d0	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  003d5	83 bd 64 ff ff
	ff 00		 cmp	 DWORD PTR $T325749[ebp], 0
  003dc	74 07		 je	 SHORT $LN5@Draw@5

; 340  :         {
; 341  :             State3 = 3;

  003de	c7 45 98 03 00
	00 00		 mov	 DWORD PTR _State3$141968[ebp], 3
$LN5@Draw@5:

; 342  :         }
; 343  : 
; 344  :         if (lpRect == NULL)

  003e5	83 7d 0c 00	 cmp	 DWORD PTR _lpRect$[ebp], 0
  003e9	75 3f		 jne	 SHORT $LN4@Draw@5

; 345  :         {
; 346  :             m_bhBmp.Draw(hDC,NULL,&rcLeft,State3);

  003eb	8b 4d 98	 mov	 ecx, DWORD PTR _State3$141968[ebp]
  003ee	51		 push	 ecx
  003ef	8d 55 b8	 lea	 edx, DWORD PTR _rcLeft$141964[ebp]
  003f2	52		 push	 edx
  003f3	6a 00		 push	 0
  003f5	8b 45 08	 mov	 eax, DWORD PTR _hDC$[ebp]
  003f8	50		 push	 eax
  003f9	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003ff	83 c1 30	 add	 ecx, 48			; 00000030H
  00402	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw

; 347  :             m_bhBmp.Draw(hDC,&P1,&rcRight,State);

  00407	8b 4d f0	 mov	 ecx, DWORD PTR _State$[ebp]
  0040a	51		 push	 ecx
  0040b	8d 55 9c	 lea	 edx, DWORD PTR _rcRight$141965[ebp]
  0040e	52		 push	 edx
  0040f	8d 45 ac	 lea	 eax, DWORD PTR _P1$141967[ebp]
  00412	50		 push	 eax
  00413	8b 4d 08	 mov	 ecx, DWORD PTR _hDC$[ebp]
  00416	51		 push	 ecx
  00417	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0041d	83 c1 30	 add	 ecx, 48			; 00000030H
  00420	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw

; 348  :         }
; 349  :         else

  00425	e9 80 00 00 00	 jmp	 $LN23@Draw@5
$LN4@Draw@5:

; 350  :         {
; 351  :             if (IntersectRect(&rc, &rcLeft,lpRect))

  0042a	8b 55 0c	 mov	 edx, DWORD PTR _lpRect$[ebp]
  0042d	52		 push	 edx
  0042e	8d 45 b8	 lea	 eax, DWORD PTR _rcLeft$141964[ebp]
  00431	50		 push	 eax
  00432	8d 4d c8	 lea	 ecx, DWORD PTR _rc$141966[ebp]
  00435	51		 push	 ecx
  00436	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__IntersectRect@12
  0043c	85 c0		 test	 eax, eax
  0043e	74 2a		 je	 SHORT $LN2@Draw@5

; 352  :             {
; 353  :                 P1.x=rc.left;

  00440	8b 55 c8	 mov	 edx, DWORD PTR _rc$141966[ebp]
  00443	89 55 ac	 mov	 DWORD PTR _P1$141967[ebp], edx

; 354  :                 P1.y=rc.top;

  00446	8b 45 cc	 mov	 eax, DWORD PTR _rc$141966[ebp+4]
  00449	89 45 b0	 mov	 DWORD PTR _P1$141967[ebp+4], eax

; 355  :                 m_bhBmp.Draw(hDC,&P1,&rc,State3);

  0044c	8b 4d 98	 mov	 ecx, DWORD PTR _State3$141968[ebp]
  0044f	51		 push	 ecx
  00450	8d 55 c8	 lea	 edx, DWORD PTR _rc$141966[ebp]
  00453	52		 push	 edx
  00454	8d 45 ac	 lea	 eax, DWORD PTR _P1$141967[ebp]
  00457	50		 push	 eax
  00458	8b 4d 08	 mov	 ecx, DWORD PTR _hDC$[ebp]
  0045b	51		 push	 ecx
  0045c	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00462	83 c1 30	 add	 ecx, 48			; 00000030H
  00465	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw
$LN2@Draw@5:

; 356  :             }
; 357  :             if (IntersectRect(&rc, &rcRight,lpRect))

  0046a	8b 55 0c	 mov	 edx, DWORD PTR _lpRect$[ebp]
  0046d	52		 push	 edx
  0046e	8d 45 9c	 lea	 eax, DWORD PTR _rcRight$141965[ebp]
  00471	50		 push	 eax
  00472	8d 4d c8	 lea	 ecx, DWORD PTR _rc$141966[ebp]
  00475	51		 push	 ecx
  00476	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__IntersectRect@12
  0047c	85 c0		 test	 eax, eax
  0047e	74 2a		 je	 SHORT $LN23@Draw@5

; 358  :             {
; 359  :                 P1.x=rc.left;

  00480	8b 55 c8	 mov	 edx, DWORD PTR _rc$141966[ebp]
  00483	89 55 ac	 mov	 DWORD PTR _P1$141967[ebp], edx

; 360  :                 P1.y=rc.top;

  00486	8b 45 cc	 mov	 eax, DWORD PTR _rc$141966[ebp+4]
  00489	89 45 b0	 mov	 DWORD PTR _P1$141967[ebp+4], eax

; 361  :                 m_bhBmp.Draw(hDC,&P1,&rc,State);

  0048c	8b 4d f0	 mov	 ecx, DWORD PTR _State$[ebp]
  0048f	51		 push	 ecx
  00490	8d 55 c8	 lea	 edx, DWORD PTR _rc$141966[ebp]
  00493	52		 push	 edx
  00494	8d 45 ac	 lea	 eax, DWORD PTR _P1$141967[ebp]
  00497	50		 push	 eax
  00498	8b 4d 08	 mov	 ecx, DWORD PTR _hDC$[ebp]
  0049b	51		 push	 ecx
  0049c	8b 8d 58 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  004a2	83 c1 30	 add	 ecx, 48			; 00000030H
  004a5	e8 00 00 00 00	 call	 ?Draw@CBitmapHolder@@QAEXPAUHDC__@@PAUtagPOINT@@PAUtagRECT@@H@Z ; CBitmapHolder::Draw
$LN23@Draw@5:

; 362  :             }
; 363  :         }
; 364  : 
; 365  :     }
; 366  : }

  004aa	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  004ad	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  004b4	59		 pop	 ecx
  004b5	8b e5		 mov	 esp, ebp
  004b7	5d		 pop	 ebp
  004b8	c2 08 00	 ret	 8
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$0:
  00000	8d 4d 8c	 lea	 ecx, DWORD PTR $T325742[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$1:
  00008	8d 4d 80	 lea	 ecx, DWORD PTR $T325744[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$2:
  00010	8d 8d 74 ff ff
	ff		 lea	 ecx, DWORD PTR $T325746[ebp]
  00016	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$3:
  0001b	8d 8d 68 ff ff
	ff		 lea	 ecx, DWORD PTR $T325748[ebp]
  00021	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__unwindfunclet$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z$4:
  00026	8d 8d 5c ff ff
	ff		 lea	 ecx, DWORD PTR $T325750[ebp]
  0002c	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__ehhandler$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z:
  00031	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00035	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00038	8b 8a 38 ff ff
	ff		 mov	 ecx, DWORD PTR [edx-200]
  0003e	33 c8		 xor	 ecx, eax
  00040	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00045	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z
  0004a	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z ENDP ; CBitmapAsButton::Draw
PUBLIC	__$ArrayPad$
PUBLIC	?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z ; CBitmapAsButton::ButtonProc
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z$0
	DD	0ffffffffH
	DD	FLAT:__unwindfunclet$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z$1
__ehfuncinfo$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z
_TEXT	SEGMENT
tv409 = -256						; size = 4
tv432 = -252						; size = 4
tv431 = -248						; size = 4
tv434 = -244						; size = 4
tv422 = -240						; size = 4
tv421 = -236						; size = 4
tv433 = -232						; size = 4
tv67 = -228						; size = 4
_this$ = -224						; size = 4
$T331468 = -220						; size = 4
$T331465 = -216						; size = 4
_MouseFlags$142083 = -212				; size = 4
_Result$142082 = -208					; size = 4
_ps$142053 = -204					; size = 64
_bRight$142045 = -136					; size = 4
_ps$142046 = -132					; size = 64
__$ArrayPad$ = -68					; size = 4
_NewPos$142043 = -64					; size = 4
_yPos$142038 = -60					; size = 4
_xPos$142033 = -56					; size = 4
_lpEventTrack$142026 = -52				; size = 16
_bRight$142016 = -36					; size = 4
_NewPos$142014 = -32					; size = 4
_yPos$142009 = -28					; size = 4
_xPos$142004 = -24					; size = 4
_MouseFlags$141995 = -20				; size = 4
_Result$141993 = -16					; size = 4
__$EHRec$ = -12						; size = 12
_hDlg$ = 8						; size = 4
_message$ = 12						; size = 4
_wParam$ = 16						; size = 4
_lParam$ = 20						; size = 4
?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z PROC	; CBitmapAsButton::ButtonProc, COMDAT
; _this$ = ecx

; 370  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	81 ec f4 00 00
	00		 sub	 esp, 244		; 000000f4H
  00017	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  0001c	33 c5		 xor	 eax, ebp
  0001e	89 45 bc	 mov	 DWORD PTR __$ArrayPad$[ebp], eax
  00021	50		 push	 eax
  00022	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  00025	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  0002b	89 8d 20 ff ff
	ff		 mov	 DWORD PTR _this$[ebp], ecx

; 371  :     if (message == WM_NCCREATE)

  00031	81 7d 0c 81 00
	00 00		 cmp	 DWORD PTR _message$[ebp], 129 ; 00000081H
  00038	75 0a		 jne	 SHORT $LN62@ButtonProc@2

; 372  :         return TRUE;

  0003a	b8 01 00 00 00	 mov	 eax, 1
  0003f	e9 56 08 00 00	 jmp	 $LN63@ButtonProc@2
$LN62@ButtonProc@2:

; 373  : 
; 374  :     if (hDlg != hWndButton)

  00044	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0004a	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  0004d	3b 48 28	 cmp	 ecx, DWORD PTR [eax+40]
  00050	74 07		 je	 SHORT $LN61@ButtonProc@2

; 375  :     {
; 376  :         return FALSE;

  00052	33 c0		 xor	 eax, eax
  00054	e9 41 08 00 00	 jmp	 $LN63@ButtonProc@2
$LN61@ButtonProc@2:

; 377  :     }
; 378  :     switch(message)

  00059	8b 55 0c	 mov	 edx, DWORD PTR _message$[ebp]
  0005c	89 95 1c ff ff
	ff		 mov	 DWORD PTR tv67[ebp], edx
  00062	81 bd 1c ff ff
	ff 00 02 00 00	 cmp	 DWORD PTR tv67[ebp], 512 ; 00000200H
  0006c	77 43		 ja	 SHORT $LN65@ButtonProc@2
  0006e	81 bd 1c ff ff
	ff 00 02 00 00	 cmp	 DWORD PTR tv67[ebp], 512 ; 00000200H
  00078	0f 84 ee 02 00
	00		 je	 $LN42@ButtonProc@2
  0007e	8b 85 1c ff ff
	ff		 mov	 eax, DWORD PTR tv67[ebp]
  00084	83 e8 0f	 sub	 eax, 15			; 0000000fH
  00087	89 85 1c ff ff
	ff		 mov	 DWORD PTR tv67[ebp], eax
  0008d	81 bd 1c ff ff
	ff e2 00 00 00	 cmp	 DWORD PTR tv67[ebp], 226 ; 000000e2H
  00097	0f 87 f7 06 00
	00		 ja	 $LN59@ButtonProc@2
  0009d	8b 8d 1c ff ff
	ff		 mov	 ecx, DWORD PTR tv67[ebp]
  000a3	0f b6 91 00 00
	00 00		 movzx	 edx, BYTE PTR $LN69@ButtonProc@2[ecx]
  000aa	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN71@ButtonProc@2[edx*4]
$LN65@ButtonProc@2:
  000b1	81 bd 1c ff ff
	ff a3 02 00 00	 cmp	 DWORD PTR tv67[ebp], 675 ; 000002a3H
  000bb	77 3b		 ja	 SHORT $LN66@ButtonProc@2
  000bd	81 bd 1c ff ff
	ff a3 02 00 00	 cmp	 DWORD PTR tv67[ebp], 675 ; 000002a3H
  000c7	0f 84 4b 04 00
	00		 je	 $LN33@ButtonProc@2
  000cd	8b 85 1c ff ff
	ff		 mov	 eax, DWORD PTR tv67[ebp]
  000d3	2d 01 02 00 00	 sub	 eax, 513		; 00000201H
  000d8	89 85 1c ff ff
	ff		 mov	 DWORD PTR tv67[ebp], eax
  000de	83 bd 1c ff ff
	ff 04		 cmp	 DWORD PTR tv67[ebp], 4
  000e5	0f 87 a9 06 00
	00		 ja	 $LN59@ButtonProc@2
  000eb	8b 8d 1c ff ff
	ff		 mov	 ecx, DWORD PTR tv67[ebp]
  000f1	ff 24 8d 00 00
	00 00		 jmp	 DWORD PTR $LN72@ButtonProc@2[ecx*4]
$LN66@ButtonProc@2:
  000f8	81 bd 1c ff ff
	ff 00 04 00 00	 cmp	 DWORD PTR tv67[ebp], 1024 ; 00000400H
  00102	0f 84 72 06 00
	00		 je	 $LN8@ButtonProc@2
  00108	81 bd 1c ff ff
	ff 05 04 00 00	 cmp	 DWORD PTR tv67[ebp], 1029 ; 00000405H
  00112	0f 84 e4 05 00
	00		 je	 $LN15@ButtonProc@2
  00118	81 bd 1c ff ff
	ff 06 04 00 00	 cmp	 DWORD PTR tv67[ebp], 1030 ; 00000406H
  00122	0f 84 7e 05 00
	00		 je	 $LN18@ButtonProc@2
  00128	e9 67 06 00 00	 jmp	 $LN59@ButtonProc@2
$LN58@ButtonProc@2:

; 379  :     {
; 380  :     case WM_NCHITTEST:
; 381  :         {
; 382  :             LONG Result;
; 383  :             if (pfnButtonProc != NULL)

  0012d	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00133	83 7a 54 00	 cmp	 DWORD PTR [edx+84], 0
  00137	0f 84 bb 00 00
	00		 je	 $LN57@ButtonProc@2

; 384  :             {
; 385  :                 UINT MouseFlags = 0;

  0013d	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR _MouseFlags$141995[ebp], 0

; 386  :                 if (m_mouseldown)

  00144	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0014a	83 78 6c 00	 cmp	 DWORD PTR [eax+108], 0
  0014e	74 09		 je	 SHORT $LN56@ButtonProc@2

; 387  :                 {
; 388  :                     MouseFlags |= MK_LBUTTON;

  00150	8b 4d ec	 mov	 ecx, DWORD PTR _MouseFlags$141995[ebp]
  00153	83 c9 01	 or	 ecx, 1
  00156	89 4d ec	 mov	 DWORD PTR _MouseFlags$141995[ebp], ecx
$LN56@ButtonProc@2:

; 389  :                 }
; 390  :                 if (m_mouserdown)

  00159	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0015f	83 7a 70 00	 cmp	 DWORD PTR [edx+112], 0
  00163	74 09		 je	 SHORT $LN55@ButtonProc@2

; 391  :                 {
; 392  :                     MouseFlags |= MK_RBUTTON;

  00165	8b 45 ec	 mov	 eax, DWORD PTR _MouseFlags$141995[ebp]
  00168	83 c8 02	 or	 eax, 2
  0016b	89 45 ec	 mov	 DWORD PTR _MouseFlags$141995[ebp], eax
$LN55@ButtonProc@2:

; 393  :                 }
; 394  : 
; 395  :                 Result = pfnButtonProc(sID,pfnButtonProc_pThis,hWndParent,MouseFlags,hDlg,message,wParam,lParam);

  0016e	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  00171	51		 push	 ecx
  00172	8b 55 10	 mov	 edx, DWORD PTR _wParam$[ebp]
  00175	52		 push	 edx
  00176	8b 45 0c	 mov	 eax, DWORD PTR _message$[ebp]
  00179	50		 push	 eax
  0017a	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  0017d	51		 push	 ecx
  0017e	8b 55 ec	 mov	 edx, DWORD PTR _MouseFlags$141995[ebp]
  00181	52		 push	 edx
  00182	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00188	8b 48 24	 mov	 ecx, DWORD PTR [eax+36]
  0018b	51		 push	 ecx
  0018c	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00192	8b 42 58	 mov	 eax, DWORD PTR [edx+88]
  00195	50		 push	 eax
  00196	83 ec 1c	 sub	 esp, 28			; 0000001cH
  00199	8b cc		 mov	 ecx, esp
  0019b	89 a5 28 ff ff
	ff		 mov	 DWORD PTR $T331465[ebp], esp
  001a1	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  001a7	52		 push	 edx
  001a8	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  001ad	89 85 18 ff ff
	ff		 mov	 DWORD PTR tv433[ebp], eax
  001b3	8b 85 18 ff ff
	ff		 mov	 eax, DWORD PTR tv433[ebp]
  001b9	89 85 14 ff ff
	ff		 mov	 DWORD PTR tv421[ebp], eax
  001bf	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  001c6	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001cd	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  001d3	8b 51 54	 mov	 edx, DWORD PTR [ecx+84]
  001d6	ff d2		 call	 edx
  001d8	83 c4 38	 add	 esp, 56			; 00000038H
  001db	89 85 10 ff ff
	ff		 mov	 DWORD PTR tv422[ebp], eax
  001e1	8b 85 10 ff ff
	ff		 mov	 eax, DWORD PTR tv422[ebp]
  001e7	89 45 f0	 mov	 DWORD PTR _Result$141993[ebp], eax

; 396  :                 if (Result)

  001ea	83 7d f0 00	 cmp	 DWORD PTR _Result$141993[ebp], 0
  001ee	74 08		 je	 SHORT $LN57@ButtonProc@2

; 397  :                 {
; 398  :                     return Result;

  001f0	8b 45 f0	 mov	 eax, DWORD PTR _Result$141993[ebp]
  001f3	e9 a2 06 00 00	 jmp	 $LN63@ButtonProc@2
$LN57@ButtonProc@2:

; 399  :                 }
; 400  :             }
; 401  :         }
; 402  :         return HTCLIENT;

  001f8	b8 01 00 00 00	 mov	 eax, 1
  001fd	e9 98 06 00 00	 jmp	 $LN63@ButtonProc@2
$LN53@ButtonProc@2:

; 403  : 
; 404  :     ///// Mouse ///////////////////////////////////////////////
; 405  : 
; 406  :     case WM_RBUTTONDOWN:
; 407  :         m_mouserdown = TRUE;

  00202	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00208	c7 41 70 01 00
	00 00		 mov	 DWORD PTR [ecx+112], 1

; 408  :         ::InvalidateRect( hDlg, NULL, FALSE );

  0020f	6a 00		 push	 0
  00211	6a 00		 push	 0
  00213	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  00216	52		 push	 edx
  00217	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 409  :         break;

  0021d	e9 72 05 00 00	 jmp	 $LN59@ButtonProc@2
$LN52@ButtonProc@2:

; 410  :     case WM_RBUTTONUP:
; 411  :         m_mouserdown = FALSE;

  00222	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00228	c7 40 70 00 00
	00 00		 mov	 DWORD PTR [eax+112], 0

; 412  :         ::InvalidateRect( hDlg, NULL, FALSE );

  0022f	6a 00		 push	 0
  00231	6a 00		 push	 0
  00233	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  00236	51		 push	 ecx
  00237	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 413  :         break;

  0023d	e9 52 05 00 00	 jmp	 $LN59@ButtonProc@2
$LN51@ButtonProc@2:

; 414  : 
; 415  :     case WM_LBUTTONDOWN:
; 416  :         m_mouseldown = TRUE;

  00242	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00248	c7 42 6c 01 00
	00 00		 mov	 DWORD PTR [edx+108], 1

; 417  : 
; 418  :         if (ButtonType == BITMAPASBUTTON_SLIDER)

  0024f	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00255	83 78 1c 02	 cmp	 DWORD PTR [eax+28], 2
  00259	0f 85 b6 00 00
	00		 jne	 $LN50@ButtonProc@2

; 419  :         {
; 420  :             int xPos = GET_X_LPARAM(lParam);

  0025f	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  00262	81 e1 ff ff 00
	00		 and	 ecx, 65535		; 0000ffffH
  00268	0f bf d1	 movsx	 edx, cx
  0026b	89 55 e8	 mov	 DWORD PTR _xPos$142004[ebp], edx

; 421  :             int yPos = GET_Y_LPARAM(lParam);

  0026e	8b 45 14	 mov	 eax, DWORD PTR _lParam$[ebp]
  00271	c1 e8 10	 shr	 eax, 16			; 00000010H
  00274	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  00279	0f bf c8	 movsx	 ecx, ax
  0027c	89 4d e4	 mov	 DWORD PTR _yPos$142009[ebp], ecx

; 422  :             int NewPos = SliderRangeMin + xPos*(SliderRangeMax-SliderRangeMin)/(ButtonWidth-1);

  0027f	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00285	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0028b	8b 8a 84 00 00
	00		 mov	 ecx, DWORD PTR [edx+132]
  00291	2b 88 80 00 00
	00		 sub	 ecx, DWORD PTR [eax+128]
  00297	8b c1		 mov	 eax, ecx
  00299	0f af 45 e8	 imul	 eax, DWORD PTR _xPos$142004[ebp]
  0029d	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002a3	8b 4a 4c	 mov	 ecx, DWORD PTR [edx+76]
  002a6	83 e9 01	 sub	 ecx, 1
  002a9	99		 cdq
  002aa	f7 f9		 idiv	 ecx
  002ac	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002b2	03 82 80 00 00
	00		 add	 eax, DWORD PTR [edx+128]
  002b8	89 45 e0	 mov	 DWORD PTR _NewPos$142014[ebp], eax

; 423  :             if (NewPos != SliderPos)

  002bb	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  002c1	8b 4d e0	 mov	 ecx, DWORD PTR _NewPos$142014[ebp]
  002c4	3b 48 7c	 cmp	 ecx, DWORD PTR [eax+124]
  002c7	74 4c		 je	 SHORT $LN50@ButtonProc@2

; 424  :             {
; 425  :                 BOOL bRight = (NewPos>SliderPos);

  002c9	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002cf	8b 45 e0	 mov	 eax, DWORD PTR _NewPos$142014[ebp]
  002d2	33 c9		 xor	 ecx, ecx
  002d4	3b 42 7c	 cmp	 eax, DWORD PTR [edx+124]
  002d7	0f 9f c1	 setg	 cl
  002da	89 4d dc	 mov	 DWORD PTR _bRight$142016[ebp], ecx

; 426  :                 SliderPos = NewPos;

  002dd	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  002e3	8b 45 e0	 mov	 eax, DWORD PTR _NewPos$142014[ebp]
  002e6	89 42 7c	 mov	 DWORD PTR [edx+124], eax

; 427  :                 SendMessage(hWndParent, WM_HSCROLL, bRight?SB_RIGHT:SB_LEFT, (LPARAM)hWndButton);

  002e9	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  002ef	8b 51 28	 mov	 edx, DWORD PTR [ecx+40]
  002f2	52		 push	 edx
  002f3	33 c0		 xor	 eax, eax
  002f5	83 7d dc 00	 cmp	 DWORD PTR _bRight$142016[ebp], 0
  002f9	0f 95 c0	 setne	 al
  002fc	83 c0 06	 add	 eax, 6
  002ff	50		 push	 eax
  00300	68 14 01 00 00	 push	 276			; 00000114H
  00305	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0030b	8b 51 24	 mov	 edx, DWORD PTR [ecx+36]
  0030e	52		 push	 edx
  0030f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SendMessageW@16
$LN50@ButtonProc@2:

; 428  :             }
; 429  :         }
; 430  :         ::InvalidateRect( hDlg, NULL, FALSE );

  00315	6a 00		 push	 0
  00317	6a 00		 push	 0
  00319	8b 45 08	 mov	 eax, DWORD PTR _hDlg$[ebp]
  0031c	50		 push	 eax
  0031d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 431  :         break;

  00323	e9 6c 04 00 00	 jmp	 $LN59@ButtonProc@2
$LN48@ButtonProc@2:

; 432  :     case WM_LBUTTONUP:
; 433  :         m_mouseldown = FALSE;

  00328	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0032e	c7 41 6c 00 00
	00 00		 mov	 DWORD PTR [ecx+108], 0

; 434  :         if (ButtonType == BITMAPASBUTTON_CHECKBOX)

  00335	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0033b	83 7a 1c 01	 cmp	 DWORD PTR [edx+28], 1
  0033f	75 18		 jne	 SHORT $LN46@ButtonProc@2

; 435  :         {
; 436  :             ButtonState = (ButtonState)?0:1;

  00341	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00347	33 c9		 xor	 ecx, ecx
  00349	83 78 20 00	 cmp	 DWORD PTR [eax+32], 0
  0034d	0f 94 c1	 sete	 cl
  00350	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00356	89 4a 20	 mov	 DWORD PTR [edx+32], ecx
$LN46@ButtonProc@2:

; 437  :         }
; 438  :         else if (ButtonType == BITMAPASBUTTON_3STATE)
; 439  :         {
; 440  :             /*ButtonState++;
; 441  :             if (ButtonState>=3)
; 442  :             {
; 443  :                 ButtonState=0;
; 444  :             }*/
; 445  :         }
; 446  :         else if (ButtonType == BITMAPASBUTTON_4STATE)
; 447  :         {
; 448  :             /*ButtonState++;
; 449  :             if (ButtonState>=4)
; 450  :             {
; 451  :                 ButtonState=0;
; 452  :             }*/
; 453  :         }
; 454  :         ::InvalidateRect( hDlg, NULL, FALSE );

  00359	6a 00		 push	 0
  0035b	6a 00		 push	 0
  0035d	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  00360	52		 push	 edx
  00361	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 455  :         break;

  00367	e9 28 04 00 00	 jmp	 $LN59@ButtonProc@2
$LN42@ButtonProc@2:

; 456  : 
; 457  :     case WM_MOUSEMOVE:
; 458  :         {
; 459  :             if(!m_trackmouse)

  0036c	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00372	83 78 78 00	 cmp	 DWORD PTR [eax+120], 0
  00376	75 2b		 jne	 SHORT $LN41@ButtonProc@2

; 460  :             {
; 461  :                 TRACKMOUSEEVENT lpEventTrack;
; 462  : 
; 463  :                 lpEventTrack.cbSize      = sizeof( TRACKMOUSEEVENT );

  00378	c7 45 cc 10 00
	00 00		 mov	 DWORD PTR _lpEventTrack$142026[ebp], 16 ; 00000010H

; 464  :                 lpEventTrack.dwFlags     = TME_LEAVE;

  0037f	c7 45 d0 02 00
	00 00		 mov	 DWORD PTR _lpEventTrack$142026[ebp+4], 2

; 465  :                 lpEventTrack.hwndTrack   = hDlg;

  00386	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  00389	89 4d d4	 mov	 DWORD PTR _lpEventTrack$142026[ebp+8], ecx

; 466  : 
; 467  :                 if(!::_TrackMouseEvent(&lpEventTrack))

  0038c	8d 55 cc	 lea	 edx, DWORD PTR _lpEventTrack$142026[ebp]
  0038f	52		 push	 edx
  00390	ff 15 00 00 00
	00		 call	 DWORD PTR __imp___TrackMouseEvent@4

; 468  :                 {
; 469  :                     //Failed
; 470  :                 }
; 471  :                 m_trackmouse = TRUE;

  00396	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0039c	c7 40 78 01 00
	00 00		 mov	 DWORD PTR [eax+120], 1
$LN41@ButtonProc@2:

; 472  :             }
; 473  : 
; 474  :             if (wParam != MK_LBUTTON )

  003a3	83 7d 10 01	 cmp	 DWORD PTR _wParam$[ebp], 1
  003a7	74 0d		 je	 SHORT $LN39@ButtonProc@2

; 475  :             {
; 476  :                 m_mouseldown = FALSE;

  003a9	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003af	c7 41 6c 00 00
	00 00		 mov	 DWORD PTR [ecx+108], 0
$LN39@ButtonProc@2:

; 477  :             }
; 478  :             if (wParam != MK_RBUTTON )

  003b6	83 7d 10 02	 cmp	 DWORD PTR _wParam$[ebp], 2
  003ba	74 0d		 je	 SHORT $LN38@ButtonProc@2

; 479  :             {
; 480  :                 m_mouserdown = FALSE;

  003bc	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  003c2	c7 42 70 00 00
	00 00		 mov	 DWORD PTR [edx+112], 0
$LN38@ButtonProc@2:

; 481  :             }
; 482  : 
; 483  :             if (m_mouseldown)

  003c9	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  003cf	83 78 6c 00	 cmp	 DWORD PTR [eax+108], 0
  003d3	0f 84 07 01 00
	00		 je	 $LN37@ButtonProc@2

; 484  :             {
; 485  :                 if (ButtonType == BITMAPASBUTTON_SLIDER)

  003d9	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  003df	83 79 1c 02	 cmp	 DWORD PTR [ecx+28], 2
  003e3	0f 85 f7 00 00
	00		 jne	 $LN37@ButtonProc@2

; 486  :                 {
; 487  :                     int xPos = GET_X_LPARAM(lParam);

  003e9	8b 55 14	 mov	 edx, DWORD PTR _lParam$[ebp]
  003ec	81 e2 ff ff 00
	00		 and	 edx, 65535		; 0000ffffH
  003f2	0f bf c2	 movsx	 eax, dx
  003f5	89 45 c8	 mov	 DWORD PTR _xPos$142033[ebp], eax

; 488  :                     int yPos = GET_Y_LPARAM(lParam);

  003f8	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  003fb	c1 e9 10	 shr	 ecx, 16			; 00000010H
  003fe	81 e1 ff ff 00
	00		 and	 ecx, 65535		; 0000ffffH
  00404	0f bf d1	 movsx	 edx, cx
  00407	89 55 c4	 mov	 DWORD PTR _yPos$142038[ebp], edx

; 489  :                     int NewPos = SliderRangeMin + xPos*(SliderRangeMax-SliderRangeMin)/(ButtonWidth-1);

  0040a	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00410	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00416	8b 90 84 00 00
	00		 mov	 edx, DWORD PTR [eax+132]
  0041c	2b 91 80 00 00
	00		 sub	 edx, DWORD PTR [ecx+128]
  00422	8b c2		 mov	 eax, edx
  00424	0f af 45 c8	 imul	 eax, DWORD PTR _xPos$142033[ebp]
  00428	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0042e	8b 49 4c	 mov	 ecx, DWORD PTR [ecx+76]
  00431	83 e9 01	 sub	 ecx, 1
  00434	99		 cdq
  00435	f7 f9		 idiv	 ecx
  00437	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0043d	03 82 80 00 00
	00		 add	 eax, DWORD PTR [edx+128]
  00443	89 45 c0	 mov	 DWORD PTR _NewPos$142043[ebp], eax

; 490  :                     if (NewPos != SliderPos)

  00446	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0044c	8b 4d c0	 mov	 ecx, DWORD PTR _NewPos$142043[ebp]
  0044f	3b 48 7c	 cmp	 ecx, DWORD PTR [eax+124]
  00452	0f 84 88 00 00
	00		 je	 $LN37@ButtonProc@2

; 491  :                     {
; 492  :                         BOOL bRight = (NewPos>SliderPos);

  00458	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0045e	8b 45 c0	 mov	 eax, DWORD PTR _NewPos$142043[ebp]
  00461	33 c9		 xor	 ecx, ecx
  00463	3b 42 7c	 cmp	 eax, DWORD PTR [edx+124]
  00466	0f 9f c1	 setg	 cl
  00469	89 8d 78 ff ff
	ff		 mov	 DWORD PTR _bRight$142045[ebp], ecx

; 493  :                         SliderPos = NewPos;

  0046f	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00475	8b 45 c0	 mov	 eax, DWORD PTR _NewPos$142043[ebp]
  00478	89 42 7c	 mov	 DWORD PTR [edx+124], eax

; 494  :                         PAINTSTRUCT ps;
; 495  :                         ::BeginPaint(hDlg,&ps);

  0047b	8d 8d 7c ff ff
	ff		 lea	 ecx, DWORD PTR _ps$142046[ebp]
  00481	51		 push	 ecx
  00482	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  00485	52		 push	 edx
  00486	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__BeginPaint@8

; 496  :                         Draw(ps.hdc,NULL);

  0048c	6a 00		 push	 0
  0048e	8b 85 7c ff ff
	ff		 mov	 eax, DWORD PTR _ps$142046[ebp]
  00494	50		 push	 eax
  00495	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0049b	e8 00 00 00 00	 call	 ?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z ; CBitmapAsButton::Draw

; 497  :                         ::EndPaint(hDlg,&ps);

  004a0	8d 8d 7c ff ff
	ff		 lea	 ecx, DWORD PTR _ps$142046[ebp]
  004a6	51		 push	 ecx
  004a7	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  004aa	52		 push	 edx
  004ab	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EndPaint@8

; 498  :                         SendMessage(hWndParent, WM_HSCROLL, bRight?SB_RIGHT:SB_LEFT, (LPARAM)hWndButton);

  004b1	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  004b7	8b 48 28	 mov	 ecx, DWORD PTR [eax+40]
  004ba	51		 push	 ecx
  004bb	33 d2		 xor	 edx, edx
  004bd	83 bd 78 ff ff
	ff 00		 cmp	 DWORD PTR _bRight$142045[ebp], 0
  004c4	0f 95 c2	 setne	 dl
  004c7	83 c2 06	 add	 edx, 6
  004ca	52		 push	 edx
  004cb	68 14 01 00 00	 push	 276			; 00000114H
  004d0	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  004d6	8b 48 24	 mov	 ecx, DWORD PTR [eax+36]
  004d9	51		 push	 ecx
  004da	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SendMessageW@16
$LN37@ButtonProc@2:

; 499  :                     }
; 500  :                 }
; 501  :             }
; 502  : 
; 503  :             if (!m_mouseldown && !m_mouserdown)

  004e0	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  004e6	83 7a 6c 00	 cmp	 DWORD PTR [edx+108], 0
  004ea	75 27		 jne	 SHORT $LN34@ButtonProc@2
  004ec	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  004f2	83 78 70 00	 cmp	 DWORD PTR [eax+112], 0
  004f6	75 1b		 jne	 SHORT $LN34@ButtonProc@2

; 504  :             {
; 505  :                 m_mouseover = TRUE;

  004f8	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  004fe	c7 41 74 01 00
	00 00		 mov	 DWORD PTR [ecx+116], 1

; 506  :                 ::InvalidateRect( hDlg, NULL, FALSE );

  00505	6a 00		 push	 0
  00507	6a 00		 push	 0
  00509	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  0050c	52		 push	 edx
  0050d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12
$LN34@ButtonProc@2:

; 507  :             }
; 508  :         }
; 509  :         break;

  00513	e9 7c 02 00 00	 jmp	 $LN59@ButtonProc@2
$LN33@ButtonProc@2:

; 510  :     case WM_MOUSELEAVE:
; 511  :         m_mouseover = FALSE;

  00518	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0051e	c7 40 74 00 00
	00 00		 mov	 DWORD PTR [eax+116], 0

; 512  :         m_mouseldown = FALSE;

  00525	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0052b	c7 41 6c 00 00
	00 00		 mov	 DWORD PTR [ecx+108], 0

; 513  :         m_mouserdown = FALSE;

  00532	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00538	c7 42 70 00 00
	00 00		 mov	 DWORD PTR [edx+112], 0

; 514  :         ::InvalidateRect( hDlg, NULL, FALSE );

  0053f	6a 00		 push	 0
  00541	6a 00		 push	 0
  00543	8b 45 08	 mov	 eax, DWORD PTR _hDlg$[ebp]
  00546	50		 push	 eax
  00547	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12

; 515  :         m_trackmouse = FALSE;

  0054d	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00553	c7 41 78 00 00
	00 00		 mov	 DWORD PTR [ecx+120], 0

; 516  :         break;

  0055a	e9 35 02 00 00	 jmp	 $LN59@ButtonProc@2
$LN32@ButtonProc@2:

; 517  : 
; 518  :     case WM_SETCURSOR:
; 519  :         if (GetCursor() != hCursorHand)

  0055f	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetCursor@0
  00565	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0056b	3b 42 68	 cmp	 eax, DWORD PTR [edx+104]
  0056e	74 10		 je	 SHORT $LN31@ButtonProc@2

; 520  :         {
; 521  :             SetCursor(hCursorHand);

  00570	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00576	8b 48 68	 mov	 ecx, DWORD PTR [eax+104]
  00579	51		 push	 ecx
  0057a	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetCursor@4
$LN31@ButtonProc@2:

; 522  :         }
; 523  :         break;

  00580	e9 0f 02 00 00	 jmp	 $LN59@ButtonProc@2
$LN30@ButtonProc@2:

; 524  :     ///////////////////////////////////////////////////////////
; 525  : 
; 526  :     case WM_PAINT:
; 527  :         {
; 528  :             PAINTSTRUCT ps;
; 529  :             ::BeginPaint(hDlg,&ps);

  00585	8d 95 34 ff ff
	ff		 lea	 edx, DWORD PTR _ps$142053[ebp]
  0058b	52		 push	 edx
  0058c	8b 45 08	 mov	 eax, DWORD PTR _hDlg$[ebp]
  0058f	50		 push	 eax
  00590	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__BeginPaint@8

; 530  :             //LOG(2,_T("BitmapButton: 0x%08x: [%s] wm_paint: %d %d,%d,%d,%d"),hDlg,sID.c_str(),ps.fErase,ps.rcPaint.left,ps.rcPaint.top,ps.rcPaint.right,ps.rcPaint.bottom);
; 531  :             if (ps.fErase)

  00596	83 bd 38 ff ff
	ff 00		 cmp	 DWORD PTR _ps$142053[ebp+4], 0
  0059d	74 16		 je	 SHORT $LN29@ButtonProc@2

; 532  :             {
; 533  :                 Draw(ps.hdc,NULL);

  0059f	6a 00		 push	 0
  005a1	8b 8d 34 ff ff
	ff		 mov	 ecx, DWORD PTR _ps$142053[ebp]
  005a7	51		 push	 ecx
  005a8	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  005ae	e8 00 00 00 00	 call	 ?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z ; CBitmapAsButton::Draw

; 534  :             }
; 535  :             else

  005b3	eb 19		 jmp	 SHORT $LN28@ButtonProc@2
$LN29@ButtonProc@2:

; 536  :             {
; 537  :                 Draw(ps.hdc,&ps.rcPaint);

  005b5	8d 95 3c ff ff
	ff		 lea	 edx, DWORD PTR _ps$142053[ebp+8]
  005bb	52		 push	 edx
  005bc	8b 85 34 ff ff
	ff		 mov	 eax, DWORD PTR _ps$142053[ebp]
  005c2	50		 push	 eax
  005c3	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  005c9	e8 00 00 00 00	 call	 ?Draw@CBitmapAsButton@@IAEXPAUHDC__@@PAUtagRECT@@@Z ; CBitmapAsButton::Draw
$LN28@ButtonProc@2:

; 538  :             }
; 539  :             ::EndPaint(hDlg,&ps);

  005ce	8d 8d 34 ff ff
	ff		 lea	 ecx, DWORD PTR _ps$142053[ebp]
  005d4	51		 push	 ecx
  005d5	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  005d8	52		 push	 edx
  005d9	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__EndPaint@8

; 540  :         }
; 541  :         return TRUE;

  005df	b8 01 00 00 00	 mov	 eax, 1
  005e4	e9 b1 02 00 00	 jmp	 $LN63@ButtonProc@2

; 542  :         break;

  005e9	e9 a6 01 00 00	 jmp	 $LN59@ButtonProc@2
$LN27@ButtonProc@2:

; 543  :     case WM_ERASEBKGND:
; 544  :         //LOG(2,_T("BitmapButton: 0x%08x: [%s] erase bg"),hDlg,sID.c_str());
; 545  :         return TRUE;

  005ee	b8 01 00 00 00	 mov	 eax, 1
  005f3	e9 a2 02 00 00	 jmp	 $LN63@ButtonProc@2
$LN26@ButtonProc@2:

; 546  :     /////////////////////// Checkbox //////////////////////////////
; 547  :     /////////////////////// 3/4state //////////////////////////////
; 548  :     case BM_GETCHECK:
; 549  :         if (ButtonType == BITMAPASBUTTON_CHECKBOX)

  005f8	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  005fe	83 78 1c 01	 cmp	 DWORD PTR [eax+28], 1
  00602	75 14		 jne	 SHORT $LN25@ButtonProc@2

; 550  :         {
; 551  :             return (ButtonState)?BST_CHECKED:BST_UNCHECKED;

  00604	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0060a	33 c0		 xor	 eax, eax
  0060c	83 79 20 00	 cmp	 DWORD PTR [ecx+32], 0
  00610	0f 95 c0	 setne	 al
  00613	e9 82 02 00 00	 jmp	 $LN63@ButtonProc@2
$LN25@ButtonProc@2:

; 552  :         }
; 553  :         if ((ButtonType == BITMAPASBUTTON_3STATE)||(ButtonType == BITMAPASBUTTON_4STATE))

  00618	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0061e	83 7a 1c 03	 cmp	 DWORD PTR [edx+28], 3
  00622	74 0c		 je	 SHORT $LN23@ButtonProc@2
  00624	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0062a	83 78 1c 04	 cmp	 DWORD PTR [eax+28], 4
  0062e	75 0e		 jne	 SHORT $LN24@ButtonProc@2
$LN23@ButtonProc@2:

; 554  :         {
; 555  :             return ButtonState;

  00630	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00636	8b 41 20	 mov	 eax, DWORD PTR [ecx+32]
  00639	e9 5c 02 00 00	 jmp	 $LN63@ButtonProc@2
$LN24@ButtonProc@2:

; 556  :         }
; 557  :         break;

  0063e	e9 51 01 00 00	 jmp	 $LN59@ButtonProc@2
$LN22@ButtonProc@2:

; 558  : 
; 559  :     case BM_SETCHECK:
; 560  :         if (ButtonType == BITMAPASBUTTON_CHECKBOX)

  00643	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00649	83 7a 1c 01	 cmp	 DWORD PTR [edx+28], 1
  0064d	75 20		 jne	 SHORT $LN21@ButtonProc@2

; 561  :         {
; 562  :             ButtonState = (wParam == BST_CHECKED) ? 1:0;

  0064f	33 c0		 xor	 eax, eax
  00651	83 7d 10 01	 cmp	 DWORD PTR _wParam$[ebp], 1
  00655	0f 94 c0	 sete	 al
  00658	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0065e	89 41 20	 mov	 DWORD PTR [ecx+32], eax

; 563  :             InvalidateRect(hDlg, NULL, FALSE);

  00661	6a 00		 push	 0
  00663	6a 00		 push	 0
  00665	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  00668	52		 push	 edx
  00669	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12
$LN21@ButtonProc@2:

; 564  :         }
; 565  :         if ((ButtonType == BITMAPASBUTTON_3STATE)||(ButtonType == BITMAPASBUTTON_4STATE))

  0066f	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00675	83 78 1c 03	 cmp	 DWORD PTR [eax+28], 3
  00679	74 0c		 je	 SHORT $LN19@ButtonProc@2
  0067b	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00681	83 79 1c 04	 cmp	 DWORD PTR [ecx+28], 4
  00685	75 1a		 jne	 SHORT $LN20@ButtonProc@2
$LN19@ButtonProc@2:

; 566  :         {
; 567  :             ButtonState = wParam;

  00687	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0068d	8b 45 10	 mov	 eax, DWORD PTR _wParam$[ebp]
  00690	89 42 20	 mov	 DWORD PTR [edx+32], eax

; 568  :             InvalidateRect(hDlg, NULL, FALSE);

  00693	6a 00		 push	 0
  00695	6a 00		 push	 0
  00697	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  0069a	51		 push	 ecx
  0069b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12
$LN20@ButtonProc@2:

; 569  :         }
; 570  :         break;

  006a1	e9 ee 00 00 00	 jmp	 $LN59@ButtonProc@2
$LN18@ButtonProc@2:

; 571  : 
; 572  :     ////////////////////////// Slider //////////////////////////////
; 573  :     case TBM_SETRANGE:
; 574  :         if (ButtonType == BITMAPASBUTTON_SLIDER)

  006a6	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  006ac	83 7a 1c 02	 cmp	 DWORD PTR [edx+28], 2
  006b0	75 45		 jne	 SHORT $LN17@ButtonProc@2

; 575  :         {
; 576  :             SliderRangeMin = LOWORD(lParam);

  006b2	8b 45 14	 mov	 eax, DWORD PTR _lParam$[ebp]
  006b5	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  006ba	0f b7 c8	 movzx	 ecx, ax
  006bd	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  006c3	89 8a 80 00 00
	00		 mov	 DWORD PTR [edx+128], ecx

; 577  :             SliderRangeMax = HIWORD(lParam);

  006c9	8b 45 14	 mov	 eax, DWORD PTR _lParam$[ebp]
  006cc	c1 e8 10	 shr	 eax, 16			; 00000010H
  006cf	25 ff ff 00 00	 and	 eax, 65535		; 0000ffffH
  006d4	0f b7 c8	 movzx	 ecx, ax
  006d7	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  006dd	89 8a 84 00 00
	00		 mov	 DWORD PTR [edx+132], ecx

; 578  :             if (wParam)

  006e3	83 7d 10 00	 cmp	 DWORD PTR _wParam$[ebp], 0
  006e7	74 0e		 je	 SHORT $LN17@ButtonProc@2

; 579  :             {
; 580  :                 ::InvalidateRect( hDlg, NULL, FALSE );

  006e9	6a 00		 push	 0
  006eb	6a 00		 push	 0
  006ed	8b 45 08	 mov	 eax, DWORD PTR _hDlg$[ebp]
  006f0	50		 push	 eax
  006f1	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12
$LN17@ButtonProc@2:

; 581  :             }
; 582  :         }
; 583  :         break;

  006f7	e9 98 00 00 00	 jmp	 $LN59@ButtonProc@2
$LN15@ButtonProc@2:

; 584  :     case TBM_SETPOS:
; 585  :         if (ButtonType == BITMAPASBUTTON_SLIDER)

  006fc	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00702	83 79 1c 02	 cmp	 DWORD PTR [ecx+28], 2
  00706	75 70		 jne	 SHORT $LN14@ButtonProc@2

; 586  :         {
; 587  :             if (lParam< SliderRangeMin)

  00708	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0070e	8b 45 14	 mov	 eax, DWORD PTR _lParam$[ebp]
  00711	3b 82 80 00 00
	00		 cmp	 eax, DWORD PTR [edx+128]
  00717	7d 17		 jge	 SHORT $LN13@ButtonProc@2

; 588  :             {
; 589  :                 SliderPos = SliderRangeMin;

  00719	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0071f	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00725	8b 82 80 00 00
	00		 mov	 eax, DWORD PTR [edx+128]
  0072b	89 41 7c	 mov	 DWORD PTR [ecx+124], eax
  0072e	eb 34		 jmp	 SHORT $LN12@ButtonProc@2
$LN13@ButtonProc@2:

; 590  :             }
; 591  :             else if (lParam > SliderRangeMax)

  00730	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  00736	8b 55 14	 mov	 edx, DWORD PTR _lParam$[ebp]
  00739	3b 91 84 00 00
	00		 cmp	 edx, DWORD PTR [ecx+132]
  0073f	7e 17		 jle	 SHORT $LN11@ButtonProc@2

; 592  :             {
; 593  :                 SliderPos = SliderRangeMax;

  00741	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00747	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0074d	8b 91 84 00 00
	00		 mov	 edx, DWORD PTR [ecx+132]
  00753	89 50 7c	 mov	 DWORD PTR [eax+124], edx

; 594  :             }
; 595  :             else

  00756	eb 0c		 jmp	 SHORT $LN12@ButtonProc@2
$LN11@ButtonProc@2:

; 596  :             {
; 597  :                 SliderPos = lParam;

  00758	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  0075e	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  00761	89 48 7c	 mov	 DWORD PTR [eax+124], ecx
$LN12@ButtonProc@2:

; 598  :             }
; 599  : 
; 600  :             if (wParam)

  00764	83 7d 10 00	 cmp	 DWORD PTR _wParam$[ebp], 0
  00768	74 0e		 je	 SHORT $LN14@ButtonProc@2

; 601  :             {
; 602  :                 ::InvalidateRect( hDlg, NULL, FALSE );

  0076a	6a 00		 push	 0
  0076c	6a 00		 push	 0
  0076e	8b 55 08	 mov	 edx, DWORD PTR _hDlg$[ebp]
  00771	52		 push	 edx
  00772	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__InvalidateRect@12
$LN14@ButtonProc@2:

; 603  :             }
; 604  :         }
; 605  :         break;

  00778	eb 1a		 jmp	 SHORT $LN59@ButtonProc@2
$LN8@ButtonProc@2:

; 606  :     case TBM_GETPOS:
; 607  :         if (ButtonType == BITMAPASBUTTON_SLIDER)

  0077a	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00780	83 78 1c 02	 cmp	 DWORD PTR [eax+28], 2
  00784	75 0e		 jne	 SHORT $LN59@ButtonProc@2

; 608  :         {
; 609  :             return SliderPos;

  00786	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0078c	8b 41 7c	 mov	 eax, DWORD PTR [ecx+124]
  0078f	e9 06 01 00 00	 jmp	 $LN63@ButtonProc@2
$LN59@ButtonProc@2:

; 610  :         }
; 611  :         break;
; 612  : 
; 613  :     }
; 614  : 
; 615  :     // Call button proc
; 616  : 
; 617  :     if (pfnButtonProc != NULL)

  00794	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0079a	83 7a 54 00	 cmp	 DWORD PTR [edx+84], 0
  0079e	0f 84 f4 00 00
	00		 je	 $LN6@ButtonProc@2

; 618  :     {
; 619  :         LONG Result;
; 620  :         UINT MouseFlags = 0;

  007a4	c7 85 2c ff ff
	ff 00 00 00 00	 mov	 DWORD PTR _MouseFlags$142083[ebp], 0

; 621  :         if (m_mouseldown)

  007ae	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  007b4	83 78 6c 00	 cmp	 DWORD PTR [eax+108], 0
  007b8	74 0f		 je	 SHORT $LN5@ButtonProc@2

; 622  :         {
; 623  :             MouseFlags |= MK_LBUTTON;

  007ba	8b 8d 2c ff ff
	ff		 mov	 ecx, DWORD PTR _MouseFlags$142083[ebp]
  007c0	83 c9 01	 or	 ecx, 1
  007c3	89 8d 2c ff ff
	ff		 mov	 DWORD PTR _MouseFlags$142083[ebp], ecx
$LN5@ButtonProc@2:

; 624  :         }
; 625  :         if (m_mouserdown)

  007c9	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  007cf	83 7a 70 00	 cmp	 DWORD PTR [edx+112], 0
  007d3	74 0f		 je	 SHORT $LN4@ButtonProc@2

; 626  :         {
; 627  :             MouseFlags |= MK_RBUTTON;

  007d5	8b 85 2c ff ff
	ff		 mov	 eax, DWORD PTR _MouseFlags$142083[ebp]
  007db	83 c8 02	 or	 eax, 2
  007de	89 85 2c ff ff
	ff		 mov	 DWORD PTR _MouseFlags$142083[ebp], eax
$LN4@ButtonProc@2:

; 628  :         }
; 629  :         Result = pfnButtonProc(sID,pfnButtonProc_pThis,hWndParent, MouseFlags, hDlg,message,wParam,lParam);

  007e4	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  007e7	51		 push	 ecx
  007e8	8b 55 10	 mov	 edx, DWORD PTR _wParam$[ebp]
  007eb	52		 push	 edx
  007ec	8b 45 0c	 mov	 eax, DWORD PTR _message$[ebp]
  007ef	50		 push	 eax
  007f0	8b 4d 08	 mov	 ecx, DWORD PTR _hDlg$[ebp]
  007f3	51		 push	 ecx
  007f4	8b 95 2c ff ff
	ff		 mov	 edx, DWORD PTR _MouseFlags$142083[ebp]
  007fa	52		 push	 edx
  007fb	8b 85 20 ff ff
	ff		 mov	 eax, DWORD PTR _this$[ebp]
  00801	8b 48 24	 mov	 ecx, DWORD PTR [eax+36]
  00804	51		 push	 ecx
  00805	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  0080b	8b 42 58	 mov	 eax, DWORD PTR [edx+88]
  0080e	50		 push	 eax
  0080f	83 ec 1c	 sub	 esp, 28			; 0000001cH
  00812	8b cc		 mov	 ecx, esp
  00814	89 a5 24 ff ff
	ff		 mov	 DWORD PTR $T331468[ebp], esp
  0081a	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00820	52		 push	 edx
  00821	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00826	89 85 0c ff ff
	ff		 mov	 DWORD PTR tv434[ebp], eax
  0082c	8b 85 0c ff ff
	ff		 mov	 eax, DWORD PTR tv434[ebp]
  00832	89 85 08 ff ff
	ff		 mov	 DWORD PTR tv431[ebp], eax
  00838	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1
  0083f	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00846	8b 8d 20 ff ff
	ff		 mov	 ecx, DWORD PTR _this$[ebp]
  0084c	8b 51 54	 mov	 edx, DWORD PTR [ecx+84]
  0084f	ff d2		 call	 edx
  00851	83 c4 38	 add	 esp, 56			; 00000038H
  00854	89 85 04 ff ff
	ff		 mov	 DWORD PTR tv432[ebp], eax
  0085a	8b 85 04 ff ff
	ff		 mov	 eax, DWORD PTR tv432[ebp]
  00860	89 85 30 ff ff
	ff		 mov	 DWORD PTR _Result$142082[ebp], eax

; 630  :         switch (message)

  00866	8b 4d 0c	 mov	 ecx, DWORD PTR _message$[ebp]
  00869	89 8d 00 ff ff
	ff		 mov	 DWORD PTR tv409[ebp], ecx
  0086f	83 bd 00 ff ff
	ff 02		 cmp	 DWORD PTR tv409[ebp], 2
  00876	74 0b		 je	 SHORT $LN1@ButtonProc@2
  00878	83 bd 00 ff ff
	ff 10		 cmp	 DWORD PTR tv409[ebp], 16 ; 00000010H
  0087f	74 02		 je	 SHORT $LN1@ButtonProc@2
  00881	eb 0d		 jmp	 SHORT $LN2@ButtonProc@2
$LN1@ButtonProc@2:

; 631  :         {
; 632  :         case WM_CLOSE:
; 633  :         case WM_DESTROY:
; 634  :             pfnButtonProc = NULL;

  00883	8b 95 20 ff ff
	ff		 mov	 edx, DWORD PTR _this$[ebp]
  00889	c7 42 54 00 00
	00 00		 mov	 DWORD PTR [edx+84], 0
$LN2@ButtonProc@2:

; 635  :             break;
; 636  :         }
; 637  :         return Result;

  00890	8b 85 30 ff ff
	ff		 mov	 eax, DWORD PTR _Result$142082[ebp]
  00896	eb 02		 jmp	 SHORT $LN63@ButtonProc@2
$LN6@ButtonProc@2:

; 638  :     }
; 639  : 
; 640  :     return FALSE;

  00898	33 c0		 xor	 eax, eax
$LN63@ButtonProc@2:

; 641  : }

  0089a	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0089d	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  008a4	59		 pop	 ecx
  008a5	8b 4d bc	 mov	 ecx, DWORD PTR __$ArrayPad$[ebp]
  008a8	33 cd		 xor	 ecx, ebp
  008aa	e8 00 00 00 00	 call	 @__security_check_cookie@4
  008af	8b e5		 mov	 esp, ebp
  008b1	5d		 pop	 ebp
  008b2	c2 10 00	 ret	 16			; 00000010H
  008b5	8d 49 00	 npad	 3
$LN71@ButtonProc@2:
  008b8	00 00 00 00	 DD	 $LN30@ButtonProc@2
  008bc	00 00 00 00	 DD	 $LN27@ButtonProc@2
  008c0	00 00 00 00	 DD	 $LN32@ButtonProc@2
  008c4	00 00 00 00	 DD	 $LN58@ButtonProc@2
  008c8	00 00 00 00	 DD	 $LN26@ButtonProc@2
  008cc	00 00 00 00	 DD	 $LN22@ButtonProc@2
  008d0	00 00 00 00	 DD	 $LN59@ButtonProc@2
$LN69@ButtonProc@2:
  008d4	00		 DB	 0
  008d5	06		 DB	 6
  008d6	06		 DB	 6
  008d7	06		 DB	 6
  008d8	06		 DB	 6
  008d9	01		 DB	 1
  008da	06		 DB	 6
  008db	06		 DB	 6
  008dc	06		 DB	 6
  008dd	06		 DB	 6
  008de	06		 DB	 6
  008df	06		 DB	 6
  008e0	06		 DB	 6
  008e1	06		 DB	 6
  008e2	06		 DB	 6
  008e3	06		 DB	 6
  008e4	06		 DB	 6
  008e5	02		 DB	 2
  008e6	06		 DB	 6
  008e7	06		 DB	 6
  008e8	06		 DB	 6
  008e9	06		 DB	 6
  008ea	06		 DB	 6
  008eb	06		 DB	 6
  008ec	06		 DB	 6
  008ed	06		 DB	 6
  008ee	06		 DB	 6
  008ef	06		 DB	 6
  008f0	06		 DB	 6
  008f1	06		 DB	 6
  008f2	06		 DB	 6
  008f3	06		 DB	 6
  008f4	06		 DB	 6
  008f5	06		 DB	 6
  008f6	06		 DB	 6
  008f7	06		 DB	 6
  008f8	06		 DB	 6
  008f9	06		 DB	 6
  008fa	06		 DB	 6
  008fb	06		 DB	 6
  008fc	06		 DB	 6
  008fd	06		 DB	 6
  008fe	06		 DB	 6
  008ff	06		 DB	 6
  00900	06		 DB	 6
  00901	06		 DB	 6
  00902	06		 DB	 6
  00903	06		 DB	 6
  00904	06		 DB	 6
  00905	06		 DB	 6
  00906	06		 DB	 6
  00907	06		 DB	 6
  00908	06		 DB	 6
  00909	06		 DB	 6
  0090a	06		 DB	 6
  0090b	06		 DB	 6
  0090c	06		 DB	 6
  0090d	06		 DB	 6
  0090e	06		 DB	 6
  0090f	06		 DB	 6
  00910	06		 DB	 6
  00911	06		 DB	 6
  00912	06		 DB	 6
  00913	06		 DB	 6
  00914	06		 DB	 6
  00915	06		 DB	 6
  00916	06		 DB	 6
  00917	06		 DB	 6
  00918	06		 DB	 6
  00919	06		 DB	 6
  0091a	06		 DB	 6
  0091b	06		 DB	 6
  0091c	06		 DB	 6
  0091d	06		 DB	 6
  0091e	06		 DB	 6
  0091f	06		 DB	 6
  00920	06		 DB	 6
  00921	06		 DB	 6
  00922	06		 DB	 6
  00923	06		 DB	 6
  00924	06		 DB	 6
  00925	06		 DB	 6
  00926	06		 DB	 6
  00927	06		 DB	 6
  00928	06		 DB	 6
  00929	06		 DB	 6
  0092a	06		 DB	 6
  0092b	06		 DB	 6
  0092c	06		 DB	 6
  0092d	06		 DB	 6
  0092e	06		 DB	 6
  0092f	06		 DB	 6
  00930	06		 DB	 6
  00931	06		 DB	 6
  00932	06		 DB	 6
  00933	06		 DB	 6
  00934	06		 DB	 6
  00935	06		 DB	 6
  00936	06		 DB	 6
  00937	06		 DB	 6
  00938	06		 DB	 6
  00939	06		 DB	 6
  0093a	06		 DB	 6
  0093b	06		 DB	 6
  0093c	06		 DB	 6
  0093d	06		 DB	 6
  0093e	06		 DB	 6
  0093f	06		 DB	 6
  00940	06		 DB	 6
  00941	06		 DB	 6
  00942	06		 DB	 6
  00943	06		 DB	 6
  00944	06		 DB	 6
  00945	06		 DB	 6
  00946	06		 DB	 6
  00947	06		 DB	 6
  00948	06		 DB	 6
  00949	03		 DB	 3
  0094a	06		 DB	 6
  0094b	06		 DB	 6
  0094c	06		 DB	 6
  0094d	06		 DB	 6
  0094e	06		 DB	 6
  0094f	06		 DB	 6
  00950	06		 DB	 6
  00951	06		 DB	 6
  00952	06		 DB	 6
  00953	06		 DB	 6
  00954	06		 DB	 6
  00955	06		 DB	 6
  00956	06		 DB	 6
  00957	06		 DB	 6
  00958	06		 DB	 6
  00959	06		 DB	 6
  0095a	06		 DB	 6
  0095b	06		 DB	 6
  0095c	06		 DB	 6
  0095d	06		 DB	 6
  0095e	06		 DB	 6
  0095f	06		 DB	 6
  00960	06		 DB	 6
  00961	06		 DB	 6
  00962	06		 DB	 6
  00963	06		 DB	 6
  00964	06		 DB	 6
  00965	06		 DB	 6
  00966	06		 DB	 6
  00967	06		 DB	 6
  00968	06		 DB	 6
  00969	06		 DB	 6
  0096a	06		 DB	 6
  0096b	06		 DB	 6
  0096c	06		 DB	 6
  0096d	06		 DB	 6
  0096e	06		 DB	 6
  0096f	06		 DB	 6
  00970	06		 DB	 6
  00971	06		 DB	 6
  00972	06		 DB	 6
  00973	06		 DB	 6
  00974	06		 DB	 6
  00975	06		 DB	 6
  00976	06		 DB	 6
  00977	06		 DB	 6
  00978	06		 DB	 6
  00979	06		 DB	 6
  0097a	06		 DB	 6
  0097b	06		 DB	 6
  0097c	06		 DB	 6
  0097d	06		 DB	 6
  0097e	06		 DB	 6
  0097f	06		 DB	 6
  00980	06		 DB	 6
  00981	06		 DB	 6
  00982	06		 DB	 6
  00983	06		 DB	 6
  00984	06		 DB	 6
  00985	06		 DB	 6
  00986	06		 DB	 6
  00987	06		 DB	 6
  00988	06		 DB	 6
  00989	06		 DB	 6
  0098a	06		 DB	 6
  0098b	06		 DB	 6
  0098c	06		 DB	 6
  0098d	06		 DB	 6
  0098e	06		 DB	 6
  0098f	06		 DB	 6
  00990	06		 DB	 6
  00991	06		 DB	 6
  00992	06		 DB	 6
  00993	06		 DB	 6
  00994	06		 DB	 6
  00995	06		 DB	 6
  00996	06		 DB	 6
  00997	06		 DB	 6
  00998	06		 DB	 6
  00999	06		 DB	 6
  0099a	06		 DB	 6
  0099b	06		 DB	 6
  0099c	06		 DB	 6
  0099d	06		 DB	 6
  0099e	06		 DB	 6
  0099f	06		 DB	 6
  009a0	06		 DB	 6
  009a1	06		 DB	 6
  009a2	06		 DB	 6
  009a3	06		 DB	 6
  009a4	06		 DB	 6
  009a5	06		 DB	 6
  009a6	06		 DB	 6
  009a7	06		 DB	 6
  009a8	06		 DB	 6
  009a9	06		 DB	 6
  009aa	06		 DB	 6
  009ab	06		 DB	 6
  009ac	06		 DB	 6
  009ad	06		 DB	 6
  009ae	06		 DB	 6
  009af	06		 DB	 6
  009b0	06		 DB	 6
  009b1	06		 DB	 6
  009b2	06		 DB	 6
  009b3	06		 DB	 6
  009b4	06		 DB	 6
  009b5	04		 DB	 4
  009b6	05		 DB	 5
  009b7	90		 npad	 1
$LN72@ButtonProc@2:
  009b8	00 00 00 00	 DD	 $LN51@ButtonProc@2
  009bc	00 00 00 00	 DD	 $LN48@ButtonProc@2
  009c0	00 00 00 00	 DD	 $LN59@ButtonProc@2
  009c4	00 00 00 00	 DD	 $LN53@ButtonProc@2
  009c8	00 00 00 00	 DD	 $LN52@ButtonProc@2
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z$0:
  00000	8b 8d 28 ff ff
	ff		 mov	 ecx, DWORD PTR $T331465[ebp]
  00006	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z$1:
  0000b	8b 8d 24 ff ff
	ff		 mov	 ecx, DWORD PTR $T331468[ebp]
  00011	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__ehhandler$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z:
  00016	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0001a	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001d	8b 8a 08 ff ff
	ff		 mov	 ecx, DWORD PTR [edx-248]
  00023	33 c8		 xor	 ecx, eax
  00025	e8 00 00 00 00	 call	 @__security_check_cookie@4
  0002a	8b 4a c8	 mov	 ecx, DWORD PTR [edx-56]
  0002d	33 c8		 xor	 ecx, eax
  0002f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00034	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z
  00039	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z ENDP	; CBitmapAsButton::ButtonProc
PUBLIC	?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z ; CBitmapAsButton::StaticButtonProc
; Function compile flags: /Odtp
;	COMDAT ?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z
_TEXT	SEGMENT
_pMDIC$142101 = -12					; size = 4
_pThis$142104 = -8					; size = 4
_pThis$ = -4						; size = 4
_hWnd$ = 8						; size = 4
_message$ = 12						; size = 4
_wParam$ = 16						; size = 4
_lParam$ = 20						; size = 4
?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z PROC ; CBitmapAsButton::StaticButtonProc, COMDAT

; 645  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 0c	 sub	 esp, 12			; 0000000cH

; 646  :     CBitmapAsButton *pThis = NULL;

  00006	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _pThis$[ebp], 0

; 647  : 
; 648  :     if ( message == WM_NCCREATE )

  0000d	81 7d 0c 81 00
	00 00		 cmp	 DWORD PTR _message$[ebp], 129 ; 00000081H
  00014	75 32		 jne	 SHORT $LN3@StaticButt

; 649  :     {
; 650  :         if (lParam == 0)

  00016	83 7d 14 00	 cmp	 DWORD PTR _lParam$[ebp], 0
  0001a	75 04		 jne	 SHORT $LN2@StaticButt

; 651  :         {
; 652  :             return FALSE;

  0001c	33 c0		 xor	 eax, eax
  0001e	eb 59		 jmp	 SHORT $LN4@StaticButt
$LN2@StaticButt:

; 653  :         }
; 654  :         MDICREATESTRUCT * pMDIC = (MDICREATESTRUCT *)((LPCREATESTRUCT) lParam)->lpCreateParams;

  00020	8b 45 14	 mov	 eax, DWORD PTR _lParam$[ebp]
  00023	8b 08		 mov	 ecx, DWORD PTR [eax]
  00025	89 4d f4	 mov	 DWORD PTR _pMDIC$142101[ebp], ecx

; 655  :         CBitmapAsButton *pThis = (CBitmapAsButton*) (pMDIC->lParam);

  00028	8b 55 f4	 mov	 edx, DWORD PTR _pMDIC$142101[ebp]
  0002b	8b 42 20	 mov	 eax, DWORD PTR [edx+32]
  0002e	89 45 f8	 mov	 DWORD PTR _pThis$142104[ebp], eax

; 656  :         ::SetWindowLongPtr(hWnd, GWLP_USERDATA, (LONG_PTR)pThis);

  00031	8b 4d f8	 mov	 ecx, DWORD PTR _pThis$142104[ebp]
  00034	51		 push	 ecx
  00035	6a eb		 push	 -21			; ffffffebH
  00037	8b 55 08	 mov	 edx, DWORD PTR _hWnd$[ebp]
  0003a	52		 push	 edx
  0003b	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowLongW@12

; 657  :         return TRUE;

  00041	b8 01 00 00 00	 mov	 eax, 1
  00046	eb 31		 jmp	 SHORT $LN4@StaticButt
$LN3@StaticButt:

; 658  :     }
; 659  : 
; 660  :     pThis = (CBitmapAsButton*)::GetWindowLong(hWnd, GWLP_USERDATA);

  00048	6a eb		 push	 -21			; ffffffebH
  0004a	8b 45 08	 mov	 eax, DWORD PTR _hWnd$[ebp]
  0004d	50		 push	 eax
  0004e	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetWindowLongW@8
  00054	89 45 fc	 mov	 DWORD PTR _pThis$[ebp], eax

; 661  : 
; 662  :     if (pThis != NULL)

  00057	83 7d fc 00	 cmp	 DWORD PTR _pThis$[ebp], 0
  0005b	74 1a		 je	 SHORT $LN1@StaticButt

; 663  :     {
; 664  :         return pThis->ButtonProc(hWnd, message, wParam, lParam);

  0005d	8b 4d 14	 mov	 ecx, DWORD PTR _lParam$[ebp]
  00060	51		 push	 ecx
  00061	8b 55 10	 mov	 edx, DWORD PTR _wParam$[ebp]
  00064	52		 push	 edx
  00065	8b 45 0c	 mov	 eax, DWORD PTR _message$[ebp]
  00068	50		 push	 eax
  00069	8b 4d 08	 mov	 ecx, DWORD PTR _hWnd$[ebp]
  0006c	51		 push	 ecx
  0006d	8b 4d fc	 mov	 ecx, DWORD PTR _pThis$[ebp]
  00070	e8 00 00 00 00	 call	 ?ButtonProc@CBitmapAsButton@@IAEJPAUHWND__@@IIJ@Z ; CBitmapAsButton::ButtonProc
  00075	eb 02		 jmp	 SHORT $LN4@StaticButt
$LN1@StaticButt:

; 665  :     }
; 666  :     return FALSE;

  00077	33 c0		 xor	 eax, eax
$LN4@StaticButt:

; 667  : }

  00079	8b e5		 mov	 esp, ebp
  0007b	5d		 pop	 ebp
  0007c	c2 10 00	 ret	 16			; 00000010H
?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z ENDP ; CBitmapAsButton::StaticButtonProc
_TEXT	ENDS
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1CBitmapHolder@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CBitmapHolder@@QAE@XZ$0
__ehfuncinfo$??1CBitmapHolder@@QAE@XZ DD 019930522H
	DD	01H
	DD	FLAT:__unwindtable$??1CBitmapHolder@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CBitmapHolder@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CBitmapHolder@@QAE@XZ PROC				; CBitmapHolder::~CBitmapHolder, COMDAT
; _this$ = ecx
  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??1CBitmapHolder@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  0002d	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00034	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00037	e8 00 00 00 00	 call	 ??1?$vector@V?$SmartPtr@VCBitmapState@@@@V?$allocator@V?$SmartPtr@VCBitmapState@@@@@std@@@std@@QAE@XZ ; std::vector<SmartPtr<CBitmapState>,std::allocator<SmartPtr<CBitmapState> > >::~vector<SmartPtr<CBitmapState>,std::allocator<SmartPtr<CBitmapState> > >
  0003c	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0003f	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00046	59		 pop	 ecx
  00047	8b e5		 mov	 esp, ebp
  00049	5d		 pop	 ebp
  0004a	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CBitmapHolder@@QAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$vector@V?$SmartPtr@VCBitmapState@@@@V?$allocator@V?$SmartPtr@VCBitmapState@@@@@std@@@std@@QAE@XZ ; std::vector<SmartPtr<CBitmapState>,std::allocator<SmartPtr<CBitmapState> > >::~vector<SmartPtr<CBitmapState>,std::allocator<SmartPtr<CBitmapState> > >
__ehhandler$??1CBitmapHolder@@QAE@XZ:
  00008	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  0000c	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0000f	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  00012	33 c8		 xor	 ecx, eax
  00014	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00019	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CBitmapHolder@@QAE@XZ
  0001e	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CBitmapHolder@@QAE@XZ ENDP				; CBitmapHolder::~CBitmapHolder
PUBLIC	??1CBitmapAsButton@@QAE@XZ			; CBitmapAsButton::~CBitmapAsButton
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??1CBitmapAsButton@@QAE@XZ DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??1CBitmapAsButton@@QAE@XZ$0
	DD	00H
	DD	FLAT:__unwindfunclet$??1CBitmapAsButton@@QAE@XZ$1
__ehfuncinfo$??1CBitmapAsButton@@QAE@XZ DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??1CBitmapAsButton@@QAE@XZ
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??1CBitmapAsButton@@QAE@XZ
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
??1CBitmapAsButton@@QAE@XZ PROC				; CBitmapAsButton::~CBitmapAsButton, COMDAT
; _this$ = ecx

; 67   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??1CBitmapAsButton@@QAE@XZ
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 1

; 68   :     pfnButtonProc = NULL;

  0002d	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00030	c7 40 54 00 00
	00 00		 mov	 DWORD PTR [eax+84], 0

; 69   :     if (hWndButton != NULL)

  00037	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0003a	83 79 28 00	 cmp	 DWORD PTR [ecx+40], 0
  0003e	74 17		 je	 SHORT $LN2@CBitmapAsB

; 70   :     {
; 71   :         DestroyWindow(hWndButton);

  00040	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00043	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  00046	50		 push	 eax
  00047	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__DestroyWindow@4

; 72   :         hWndButton = NULL;

  0004d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00050	c7 41 28 00 00
	00 00		 mov	 DWORD PTR [ecx+40], 0
$LN2@CBitmapAsB:

; 73   :     }
; 74   : }

  00057	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0005b	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0005e	83 c1 30	 add	 ecx, 48			; 00000030H
  00061	e8 00 00 00 00	 call	 ??1CBitmapHolder@@QAE@XZ
  00066	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0006d	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00070	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00075	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00078	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0007f	59		 pop	 ecx
  00080	8b e5		 mov	 esp, ebp
  00082	5d		 pop	 ebp
  00083	c3		 ret	 0
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??1CBitmapAsButton@@QAE@XZ$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$??1CBitmapAsButton@@QAE@XZ$1:
  00008	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0000b	83 c1 30	 add	 ecx, 48			; 00000030H
  0000e	e9 00 00 00 00	 jmp	 ??1CBitmapHolder@@QAE@XZ
__ehhandler$??1CBitmapAsButton@@QAE@XZ:
  00013	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00017	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001a	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  0001d	33 c8		 xor	 ecx, eax
  0001f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00024	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??1CBitmapAsButton@@QAE@XZ
  00029	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??1CBitmapAsButton@@QAE@XZ ENDP				; CBitmapAsButton::~CBitmapAsButton
PUBLIC	??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z ; CBitmapAsButton::CBitmapAsButton
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z$1
__ehfuncinfo$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z
_TEXT	SEGMENT
_this$ = -16						; size = 4
__$EHRec$ = -12						; size = 12
_ButtonType$ = 8					; size = 4
??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z PROC	; CBitmapAsButton::CBitmapAsButton, COMDAT
; _this$ = ecx

; 49   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	51		 push	 ecx
  00012	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00017	33 c5		 xor	 eax, ebp
  00019	50		 push	 eax
  0001a	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001d	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00023	89 4d f0	 mov	 DWORD PTR _this$[ebp], ecx
  00026	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00029	e8 00 00 00 00	 call	 ??0?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  0002e	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0
  00035	6a 00		 push	 0
  00037	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0003a	83 c1 30	 add	 ecx, 48			; 00000030H
  0003d	e8 00 00 00 00	 call	 ??0CBitmapHolder@@QAE@H@Z ; CBitmapHolder::CBitmapHolder
  00042	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  00046	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00049	c7 40 54 00 00
	00 00		 mov	 DWORD PTR [eax+84], 0
  00050	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00053	c7 41 58 00 00
	00 00		 mov	 DWORD PTR [ecx+88], 0
  0005a	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0005d	c7 42 5c 00 00
	00 00		 mov	 DWORD PTR [edx+92], 0
  00064	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00067	c7 40 68 00 00
	00 00		 mov	 DWORD PTR [eax+104], 0
  0006e	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	c7 41 6c 00 00
	00 00		 mov	 DWORD PTR [ecx+108], 0
  00078	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  0007b	c7 42 70 00 00
	00 00		 mov	 DWORD PTR [edx+112], 0
  00082	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00085	c7 40 74 00 00
	00 00		 mov	 DWORD PTR [eax+116], 0
  0008c	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0008f	c7 41 78 00 00
	00 00		 mov	 DWORD PTR [ecx+120], 0

; 50   :     this->ButtonType = ButtonType;

  00096	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  00099	8b 45 08	 mov	 eax, DWORD PTR _ButtonType$[ebp]
  0009c	89 42 1c	 mov	 DWORD PTR [edx+28], eax

; 51   : 
; 52   :     bFailed = FALSE;

  0009f	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000a2	c7 41 2c 00 00
	00 00		 mov	 DWORD PTR [ecx+44], 0

; 53   : 
; 54   :     hWndButton = NULL;

  000a9	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000ac	c7 42 28 00 00
	00 00		 mov	 DWORD PTR [edx+40], 0

; 55   :     hWndParent = NULL;

  000b3	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000b6	c7 40 24 00 00
	00 00		 mov	 DWORD PTR [eax+36], 0

; 56   : 
; 57   :     ButtonWidth = 10;

  000bd	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000c0	c7 41 4c 0a 00
	00 00		 mov	 DWORD PTR [ecx+76], 10	; 0000000aH

; 58   :     ButtonHeight = 10;

  000c7	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000ca	c7 42 50 0a 00
	00 00		 mov	 DWORD PTR [edx+80], 10	; 0000000aH

; 59   : 
; 60   :     SliderPos = 0;

  000d1	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000d4	c7 40 7c 00 00
	00 00		 mov	 DWORD PTR [eax+124], 0

; 61   :     SliderRangeMin = 0;

  000db	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  000de	c7 81 80 00 00
	00 00 00 00 00	 mov	 DWORD PTR [ecx+128], 0

; 62   :     SliderRangeMax = 1;

  000e8	8b 55 f0	 mov	 edx, DWORD PTR _this$[ebp]
  000eb	c7 82 84 00 00
	00 01 00 00 00	 mov	 DWORD PTR [edx+132], 1

; 63   :     ButtonState = 0;

  000f5	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  000f8	c7 40 20 00 00
	00 00		 mov	 DWORD PTR [eax+32], 0

; 64   : }

  000ff	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00106	8b 45 f0	 mov	 eax, DWORD PTR _this$[ebp]
  00109	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  0010c	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00113	59		 pop	 ecx
  00114	8b e5		 mov	 esp, ebp
  00116	5d		 pop	 ebp
  00117	c2 04 00	 ret	 4
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z$0:
  00000	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z$1:
  00008	8b 4d f0	 mov	 ecx, DWORD PTR _this$[ebp]
  0000b	83 c1 30	 add	 ecx, 48			; 00000030H
  0000e	e9 00 00 00 00	 jmp	 ??1CBitmapHolder@@QAE@XZ
__ehhandler$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z:
  00013	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00017	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  0001a	8b 4a f8	 mov	 ecx, DWORD PTR [edx-8]
  0001d	33 c8		 xor	 ecx, eax
  0001f	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00024	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z
  00029	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
??0CBitmapAsButton@@QAE@W4eBitmapAsButtonType@@@Z ENDP	; CBitmapAsButton::CBitmapAsButton
PUBLIC	?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ	; CBitmapAsButton::SetRegion
; Function compile flags: /Odtp
;	COMDAT ?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ
_TEXT	SEGMENT
_this$ = -8						; size = 4
_hRgn$141870 = -4					; size = 4
?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ PROC	; CBitmapAsButton::SetRegion, COMDAT
; _this$ = ecx

; 228  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8
  00006	89 4d f8	 mov	 DWORD PTR _this$[ebp], ecx

; 229  :     if (hWndButton != NULL)

  00009	8b 45 f8	 mov	 eax, DWORD PTR _this$[ebp]
  0000c	83 78 28 00	 cmp	 DWORD PTR [eax+40], 0
  00010	74 26		 je	 SHORT $LN1@SetRegion

; 230  :     {
; 231  :         HRGN hRgn = m_bhBmp.GetWindowRegion();

  00012	8b 4d f8	 mov	 ecx, DWORD PTR _this$[ebp]
  00015	83 c1 30	 add	 ecx, 48			; 00000030H
  00018	e8 00 00 00 00	 call	 ?GetWindowRegion@CBitmapHolder@@QAEPAUHRGN__@@XZ ; CBitmapHolder::GetWindowRegion
  0001d	89 45 fc	 mov	 DWORD PTR _hRgn$141870[ebp], eax

; 232  :         SetWindowRgn(hWndButton, hRgn, TRUE);

  00020	6a 01		 push	 1
  00022	8b 4d fc	 mov	 ecx, DWORD PTR _hRgn$141870[ebp]
  00025	51		 push	 ecx
  00026	8b 55 f8	 mov	 edx, DWORD PTR _this$[ebp]
  00029	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  0002c	50		 push	 eax
  0002d	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowRgn@12

; 233  :         return hRgn;

  00033	8b 45 fc	 mov	 eax, DWORD PTR _hRgn$141870[ebp]
  00036	eb 02		 jmp	 SHORT $LN2@SetRegion
$LN1@SetRegion:

; 234  :     }
; 235  :     return NULL;

  00038	33 c0		 xor	 eax, eax
$LN2@SetRegion:

; 236  : }

  0003a	8b e5		 mov	 esp, ebp
  0003c	5d		 pop	 ebp
  0003d	c3		 ret	 0
?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ ENDP	; CBitmapAsButton::SetRegion
_TEXT	ENDS
PUBLIC	?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z ; CBitmapAsButton::TakeOver
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z$1
__ehfuncinfo$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z
_TEXT	SEGMENT
tv178 = -68						; size = 4
tv180 = -64						; size = 4
_this$ = -60						; size = 4
$T344101 = -56						; size = 4
$T344100 = -52						; size = 8
$T344099 = -44						; size = 4
$T344098 = -40						; size = 4
_rc$141854 = -36					; size = 16
_pOrg$ = -20						; size = 4
__$EHRec$ = -12						; size = 12
_hTakeOver$ = 8						; size = 4
_sID$ = 12						; size = 28
_hWndParent$ = 40					; size = 4
?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z PROC ; CBitmapAsButton::TakeOver, COMDAT
; _this$ = ecx

; 146  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 38	 sub	 esp, 56			; 00000038H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d c4	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 147  :     //Restore first if it was already taken over
; 148  :     RestoreBack(hTakeOver);

  0002f	8b 45 08	 mov	 eax, DWORD PTR _hTakeOver$[ebp]
  00032	50		 push	 eax
  00033	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00036	e8 00 00 00 00	 call	 ?RestoreBack@CBitmapAsButton@@QAEHPAUHWND__@@@Z ; CBitmapAsButton::RestoreBack

; 149  : 
; 150  :     bFailed = TRUE; //assume the worst

  0003b	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  0003e	c7 41 2c 01 00
	00 00		 mov	 DWORD PTR [ecx+44], 1

; 151  : 
; 152  :     if (hCursorHand == NULL)

  00045	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  00048	83 7a 68 00	 cmp	 DWORD PTR [edx+104], 0
  0004c	75 2f		 jne	 SHORT $LN7@TakeOver

; 153  :     {
; 154  :         hCursorHand = ::LoadCursor(NULL, IDC_HAND);

  0004e	68 89 7f 00 00	 push	 32649			; 00007f89H
  00053	6a 00		 push	 0
  00055	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LoadCursorW@8
  0005b	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  0005e	89 41 68	 mov	 DWORD PTR [ecx+104], eax

; 155  :         // hand isn't available on all OSes so fall back to arrow
; 156  :         if(hCursorHand == NULL)

  00061	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  00064	83 7a 68 00	 cmp	 DWORD PTR [edx+104], 0
  00068	75 13		 jne	 SHORT $LN7@TakeOver

; 157  :         {
; 158  :             hCursorHand = ::LoadCursor(NULL, IDC_ARROW);

  0006a	68 00 7f 00 00	 push	 32512			; 00007f00H
  0006f	6a 00		 push	 0
  00071	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LoadCursorW@8
  00077	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  0007a	89 41 68	 mov	 DWORD PTR [ecx+104], eax
$LN7@TakeOver:

; 159  :         }
; 160  :     }
; 161  : 
; 162  :     SetWindowLongPtr(hTakeOver, GWLP_USERDATA, (LONG_PTR)this);

  0007d	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  00080	52		 push	 edx
  00081	6a eb		 push	 -21			; ffffffebH
  00083	8b 45 08	 mov	 eax, DWORD PTR _hTakeOver$[ebp]
  00086	50		 push	 eax
  00087	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowLongW@12

; 163  : 
; 164  :     this->sID = sID;

  0008d	8d 4d 0c	 lea	 ecx, DWORD PTR _sID$[ebp]
  00090	51		 push	 ecx
  00091	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00094	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 165  :     this->hWndParent = hWndParent;

  00099	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  0009c	8b 45 28	 mov	 eax, DWORD PTR _hWndParent$[ebp]
  0009f	89 42 24	 mov	 DWORD PTR [edx+36], eax

; 166  :     this->hWndButton = hTakeOver;

  000a2	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  000a5	8b 55 08	 mov	 edx, DWORD PTR _hTakeOver$[ebp]
  000a8	89 51 28	 mov	 DWORD PTR [ecx+40], edx

; 167  : 
; 168  :     void *pOrg = (void*)SetWindowLongPtr(hTakeOver, GWLP_WNDPROC, (LONG_PTR)StaticButtonProc);

  000ab	68 00 00 00 00	 push	 OFFSET ?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z ; CBitmapAsButton::StaticButtonProc
  000b0	6a fc		 push	 -4			; fffffffcH
  000b2	8b 45 08	 mov	 eax, DWORD PTR _hTakeOver$[ebp]
  000b5	50		 push	 eax
  000b6	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowLongW@12
  000bc	89 45 ec	 mov	 DWORD PTR _pOrg$[ebp], eax

; 169  :     if (pOrg == NULL)

  000bf	83 7d ec 00	 cmp	 DWORD PTR _pOrg$[ebp], 0
  000c3	75 28		 jne	 SHORT $LN5@TakeOver

; 170  :     {
; 171  :         //Failed
; 172  :         hWndButton = NULL;

  000c5	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  000c8	c7 41 28 00 00
	00 00		 mov	 DWORD PTR [ecx+40], 0

; 173  :         return FALSE;

  000cf	c7 45 d8 00 00
	00 00		 mov	 DWORD PTR $T344098[ebp], 0
  000d6	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000dd	8d 4d 0c	 lea	 ecx, DWORD PTR _sID$[ebp]
  000e0	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  000e5	8b 45 d8	 mov	 eax, DWORD PTR $T344098[ebp]
  000e8	e9 05 01 00 00	 jmp	 $LN8@TakeOver
$LN5@TakeOver:

; 174  :     }
; 175  : 
; 176  :     if (m_bhBmp.GetBitmap(0)!=NULL)

  000ed	6a 00		 push	 0
  000ef	8d 55 cc	 lea	 edx, DWORD PTR $T344100[ebp]
  000f2	52		 push	 edx
  000f3	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  000f6	83 c1 30	 add	 ecx, 48			; 00000030H
  000f9	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  000fe	89 45 c0	 mov	 DWORD PTR tv180[ebp], eax
  00101	8b 45 c0	 mov	 eax, DWORD PTR tv180[ebp]
  00104	89 45 bc	 mov	 DWORD PTR tv178[ebp], eax
  00107	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  0010b	6a 00		 push	 0
  0010d	8b 4d bc	 mov	 ecx, DWORD PTR tv178[ebp]
  00110	e8 00 00 00 00	 call	 ??9?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator!=
  00115	89 45 d4	 mov	 DWORD PTR $T344099[ebp], eax
  00118	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0011c	8d 4d cc	 lea	 ecx, DWORD PTR $T344100[ebp]
  0011f	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  00124	83 7d d4 00	 cmp	 DWORD PTR $T344099[ebp], 0
  00128	0f 84 87 00 00
	00		 je	 $LN4@TakeOver

; 177  :     {
; 178  :         ButtonWidth=m_bhBmp.Width(0);

  0012e	6a 00		 push	 0
  00130	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00133	83 c1 30	 add	 ecx, 48			; 00000030H
  00136	e8 00 00 00 00	 call	 ?Width@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Width
  0013b	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  0013e	89 41 4c	 mov	 DWORD PTR [ecx+76], eax

; 179  :         ButtonHeight=m_bhBmp.Height(0);

  00141	6a 00		 push	 0
  00143	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00146	83 c1 30	 add	 ecx, 48			; 00000030H
  00149	e8 00 00 00 00	 call	 ?Height@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Height
  0014e	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  00151	89 42 50	 mov	 DWORD PTR [edx+80], eax

; 180  : 
; 181  :         if (this->pOriginalProc == NULL)

  00154	8b 45 c4	 mov	 eax, DWORD PTR _this$[ebp]
  00157	83 78 5c 00	 cmp	 DWORD PTR [eax+92], 0
  0015b	75 2d		 jne	 SHORT $LN3@TakeOver

; 182  :         {
; 183  :             RECT rc;
; 184  :             if (GetWindowRect(hWndButton, &rc))

  0015d	8d 4d dc	 lea	 ecx, DWORD PTR _rc$141854[ebp]
  00160	51		 push	 ecx
  00161	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  00164	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  00167	50		 push	 eax
  00168	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetWindowRect@8
  0016e	85 c0		 test	 eax, eax
  00170	74 18		 je	 SHORT $LN3@TakeOver

; 185  :             {
; 186  :                 this->OriginalWidth = rc.right-rc.left;

  00172	8b 4d e4	 mov	 ecx, DWORD PTR _rc$141854[ebp+8]
  00175	2b 4d dc	 sub	 ecx, DWORD PTR _rc$141854[ebp]
  00178	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  0017b	89 4a 60	 mov	 DWORD PTR [edx+96], ecx

; 187  :                 this->OriginalHeight = rc.bottom-rc.top;

  0017e	8b 45 e8	 mov	 eax, DWORD PTR _rc$141854[ebp+12]
  00181	2b 45 e0	 sub	 eax, DWORD PTR _rc$141854[ebp+4]
  00184	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00187	89 41 64	 mov	 DWORD PTR [ecx+100], eax
$LN3@TakeOver:

; 188  :             }
; 189  :         }
; 190  :         SetWindowPos(hWndButton, NULL, 0,0, ButtonWidth, ButtonHeight, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

  0018a	6a 16		 push	 22			; 00000016H
  0018c	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  0018f	8b 42 50	 mov	 eax, DWORD PTR [edx+80]
  00192	50		 push	 eax
  00193	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  00196	8b 51 4c	 mov	 edx, DWORD PTR [ecx+76]
  00199	52		 push	 edx
  0019a	6a 00		 push	 0
  0019c	6a 00		 push	 0
  0019e	6a 00		 push	 0
  001a0	8b 45 c4	 mov	 eax, DWORD PTR _this$[ebp]
  001a3	8b 48 28	 mov	 ecx, DWORD PTR [eax+40]
  001a6	51		 push	 ecx
  001a7	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowPos@28

; 191  :         SetRegion();

  001ad	8b 4d c4	 mov	 ecx, DWORD PTR _this$[ebp]
  001b0	e8 00 00 00 00	 call	 ?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ ; CBitmapAsButton::SetRegion
$LN4@TakeOver:

; 192  :     }
; 193  :     if (this->pOriginalProc == NULL)

  001b5	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  001b8	83 7a 5c 00	 cmp	 DWORD PTR [edx+92], 0
  001bc	75 09		 jne	 SHORT $LN1@TakeOver

; 194  :     {
; 195  :         this->pOriginalProc = pOrg;

  001be	8b 45 c4	 mov	 eax, DWORD PTR _this$[ebp]
  001c1	8b 4d ec	 mov	 ecx, DWORD PTR _pOrg$[ebp]
  001c4	89 48 5c	 mov	 DWORD PTR [eax+92], ecx
$LN1@TakeOver:

; 196  :     }
; 197  : 
; 198  :     bFailed = FALSE;

  001c7	8b 55 c4	 mov	 edx, DWORD PTR _this$[ebp]
  001ca	c7 42 2c 00 00
	00 00		 mov	 DWORD PTR [edx+44], 0

; 199  : 
; 200  :     return !bFailed;

  001d1	8b 45 c4	 mov	 eax, DWORD PTR _this$[ebp]
  001d4	33 c9		 xor	 ecx, ecx
  001d6	83 78 2c 00	 cmp	 DWORD PTR [eax+44], 0
  001da	0f 94 c1	 sete	 cl
  001dd	89 4d c8	 mov	 DWORD PTR $T344101[ebp], ecx
  001e0	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  001e7	8d 4d 0c	 lea	 ecx, DWORD PTR _sID$[ebp]
  001ea	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  001ef	8b 45 c8	 mov	 eax, DWORD PTR $T344101[ebp]
$LN8@TakeOver:

; 201  : }

  001f2	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  001f5	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  001fc	59		 pop	 ecx
  001fd	8b e5		 mov	 esp, ebp
  001ff	5d		 pop	 ebp
  00200	c2 24 00	 ret	 36			; 00000024H
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z$0:
  00000	8d 4d 0c	 lea	 ecx, DWORD PTR _sID$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z$1:
  00008	8d 4d cc	 lea	 ecx, DWORD PTR $T344100[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__ehhandler$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z:
  00010	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00014	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00017	8b 4a c4	 mov	 ecx, DWORD PTR [edx-60]
  0001a	33 c8		 xor	 ecx, eax
  0001c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00021	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z
  00026	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?TakeOver@CBitmapAsButton@@QAEHPAUHWND__@@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@0@Z ENDP ; CBitmapAsButton::TakeOver
PUBLIC	?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z ; CBitmapAsButton::Create
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z$1
__ehfuncinfo$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z
_TEXT	SEGMENT
tv217 = -124						; size = 4
tv219 = -120						; size = 4
_this$ = -116						; size = 4
$T344116 = -112						; size = 4
$T344115 = -108						; size = 8
$T344114 = -100						; size = 4
$T344113 = -96						; size = 4
_mdic$ = -92						; size = 36
_wc$ = -56						; size = 40
__$EHRec$ = -12						; size = 12
_sID$ = 8						; size = 28
_hWndParent$ = 36					; size = 4
_x$ = 40						; size = 4
_y$ = 44						; size = 4
_hInst$ = 48						; size = 4
?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z PROC ; CBitmapAsButton::Create, COMDAT
; _this$ = ecx

; 78   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 70	 sub	 esp, 112		; 00000070H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d 8c	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 79   :     bFailed = TRUE; //assume the worst

  0002f	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  00032	c7 40 2c 01 00
	00 00		 mov	 DWORD PTR [eax+44], 1

; 80   : 
; 81   :     if (hCursorHand == NULL)

  00039	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  0003c	83 79 68 00	 cmp	 DWORD PTR [ecx+104], 0
  00040	75 13		 jne	 SHORT $LN5@Create@3

; 82   :     {
; 83   :         hCursorHand = ::LoadCursor(NULL, IDC_HAND);

  00042	68 89 7f 00 00	 push	 32649			; 00007f89H
  00047	6a 00		 push	 0
  00049	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__LoadCursorW@8
  0004f	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  00052	89 42 68	 mov	 DWORD PTR [edx+104], eax
$LN5@Create@3:

; 84   :     }
; 85   : 
; 86   :     WNDCLASS wc;
; 87   :     if (! ::GetClassInfo(hInst, sID.c_str(), &wc) )

  00055	8d 45 c8	 lea	 eax, DWORD PTR _wc$[ebp]
  00058	50		 push	 eax
  00059	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  0005c	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  00061	50		 push	 eax
  00062	8b 4d 30	 mov	 ecx, DWORD PTR _hInst$[ebp]
  00065	51		 push	 ecx
  00066	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetClassInfoW@12
  0006c	85 c0		 test	 eax, eax
  0006e	75 7a		 jne	 SHORT $LN4@Create@3

; 88   :     {
; 89   :         //wc.cbSize = sizeof(WNDCLASSEX);
; 90   :         wc.style = 0; //CS_HREDRAW | CS_VREDRAW | CS_GLOBALCLASS;

  00070	c7 45 c8 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp], 0

; 91   :         wc.lpfnWndProc = StaticButtonProc;

  00077	c7 45 cc 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+4], OFFSET ?StaticButtonProc@CBitmapAsButton@@KGJPAUHWND__@@IIJ@Z ; CBitmapAsButton::StaticButtonProc

; 92   :         wc.cbClsExtra = 0;

  0007e	c7 45 d0 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+8], 0

; 93   :         wc.cbWndExtra = 0;

  00085	c7 45 d4 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+12], 0

; 94   :         wc.hInstance = hInst;

  0008c	8b 55 30	 mov	 edx, DWORD PTR _hInst$[ebp]
  0008f	89 55 d8	 mov	 DWORD PTR _wc$[ebp+16], edx

; 95   :         wc.hIcon = NULL;

  00092	c7 45 dc 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+20], 0

; 96   :         wc.hCursor = hCursorHand;

  00099	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  0009c	8b 48 68	 mov	 ecx, DWORD PTR [eax+104]
  0009f	89 4d e0	 mov	 DWORD PTR _wc$[ebp+24], ecx

; 97   :         wc.hbrBackground = HBRUSH(NULL); //CreateSolidBrush(0);

  000a2	c7 45 e4 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+28], 0

; 98   :         wc.lpszMenuName = NULL;

  000a9	c7 45 e8 00 00
	00 00		 mov	 DWORD PTR _wc$[ebp+32], 0

; 99   :         wc.lpszClassName = sID.c_str();

  000b0	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  000b3	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  000b8	89 45 ec	 mov	 DWORD PTR _wc$[ebp+36], eax

; 100  :         //wc.hIconSm = NULL;
; 101  : 
; 102  :         if (!RegisterClass(&wc))

  000bb	8d 55 c8	 lea	 edx, DWORD PTR _wc$[ebp]
  000be	52		 push	 edx
  000bf	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__RegisterClassW@4
  000c5	0f b7 c0	 movzx	 eax, ax
  000c8	85 c0		 test	 eax, eax
  000ca	75 1e		 jne	 SHORT $LN4@Create@3

; 103  :         {
; 104  :             return FALSE;

  000cc	c7 45 a0 00 00
	00 00		 mov	 DWORD PTR $T344113[ebp], 0
  000d3	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  000da	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  000dd	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  000e2	8b 45 a0	 mov	 eax, DWORD PTR $T344113[ebp]
  000e5	e9 3a 01 00 00	 jmp	 $LN6@Create@3
$LN4@Create@3:

; 105  :         }
; 106  :     }
; 107  : 
; 108  :     MDICREATESTRUCT mdic;
; 109  :     ::memset(&mdic, 0, sizeof(mdic));

  000ea	6a 24		 push	 36			; 00000024H
  000ec	6a 00		 push	 0
  000ee	8d 4d a4	 lea	 ecx, DWORD PTR _mdic$[ebp]
  000f1	51		 push	 ecx
  000f2	e8 00 00 00 00	 call	 _memset
  000f7	83 c4 0c	 add	 esp, 12			; 0000000cH

; 110  :     mdic.lParam = (LPARAM)this;

  000fa	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  000fd	89 55 c4	 mov	 DWORD PTR _mdic$[ebp+32], edx

; 111  : 
; 112  :     this->sID = sID;

  00100	8d 45 08	 lea	 eax, DWORD PTR _sID$[ebp]
  00103	50		 push	 eax
  00104	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  00107	e8 00 00 00 00	 call	 ??4?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV01@ABV01@@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::operator=

; 113  :     this->hWndParent = hWndParent;

  0010c	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  0010f	8b 55 24	 mov	 edx, DWORD PTR _hWndParent$[ebp]
  00112	89 51 24	 mov	 DWORD PTR [ecx+36], edx

; 114  : 
; 115  :     hWndButton = CreateWindow(
; 116  :       sID.c_str(),   // class name
; 117  :       sID.c_str(),   // title
; 118  :       WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_CLIPSIBLINGS,
; 119  :       x,         // starting x position
; 120  :       y,         // starting y position
; 121  :       ButtonWidth,        // button width
; 122  :       ButtonHeight,        // button height
; 123  :       hWndParent,       // parent window
; 124  :       NULL,       // No menu
; 125  :       hInst,
; 126  :       &mdic);      // pointer not needed

  00115	8d 45 a4	 lea	 eax, DWORD PTR _mdic$[ebp]
  00118	50		 push	 eax
  00119	8b 4d 30	 mov	 ecx, DWORD PTR _hInst$[ebp]
  0011c	51		 push	 ecx
  0011d	6a 00		 push	 0
  0011f	8b 55 24	 mov	 edx, DWORD PTR _hWndParent$[ebp]
  00122	52		 push	 edx
  00123	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  00126	8b 48 50	 mov	 ecx, DWORD PTR [eax+80]
  00129	51		 push	 ecx
  0012a	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  0012d	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  00130	50		 push	 eax
  00131	8b 4d 2c	 mov	 ecx, DWORD PTR _y$[ebp]
  00134	51		 push	 ecx
  00135	8b 55 28	 mov	 edx, DWORD PTR _x$[ebp]
  00138	52		 push	 edx
  00139	68 00 00 00 56	 push	 1442840576		; 56000000H
  0013e	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  00141	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  00146	50		 push	 eax
  00147	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  0014a	e8 00 00 00 00	 call	 ?c_str@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QBEPB_WXZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::c_str
  0014f	50		 push	 eax
  00150	6a 00		 push	 0
  00152	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__CreateWindowExW@48
  00158	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  0015b	89 41 28	 mov	 DWORD PTR [ecx+40], eax

; 127  : 
; 128  :     if (hWndButton != NULL)

  0015e	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  00161	83 7a 28 00	 cmp	 DWORD PTR [edx+40], 0
  00165	0f 84 98 00 00
	00		 je	 $LN2@Create@3

; 129  :     {
; 130  :         bFailed = FALSE;

  0016b	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  0016e	c7 40 2c 00 00
	00 00		 mov	 DWORD PTR [eax+44], 0

; 131  : 
; 132  :         if (m_bhBmp.GetBitmap(0)!=NULL)

  00175	6a 00		 push	 0
  00177	8d 4d 94	 lea	 ecx, DWORD PTR $T344115[ebp]
  0017a	51		 push	 ecx
  0017b	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  0017e	83 c1 30	 add	 ecx, 48			; 00000030H
  00181	e8 00 00 00 00	 call	 ?GetBitmap@CBitmapHolder@@QAE?AV?$SmartHandle@PAUHBITMAP__@@@@H@Z ; CBitmapHolder::GetBitmap
  00186	89 45 88	 mov	 DWORD PTR tv219[ebp], eax
  00189	8b 55 88	 mov	 edx, DWORD PTR tv219[ebp]
  0018c	89 55 84	 mov	 DWORD PTR tv217[ebp], edx
  0018f	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  00193	6a 00		 push	 0
  00195	8b 4d 84	 mov	 ecx, DWORD PTR tv217[ebp]
  00198	e8 00 00 00 00	 call	 ??9?$SmartHandle@PAUHBITMAP__@@@@QAEHPAUHBITMAP__@@@Z ; SmartHandle<HBITMAP__ *>::operator!=
  0019d	89 45 9c	 mov	 DWORD PTR $T344114[ebp], eax
  001a0	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  001a4	8d 4d 94	 lea	 ecx, DWORD PTR $T344115[ebp]
  001a7	e8 00 00 00 00	 call	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
  001ac	83 7d 9c 00	 cmp	 DWORD PTR $T344114[ebp], 0
  001b0	74 51		 je	 SHORT $LN2@Create@3

; 133  :         {
; 134  :             ButtonWidth=m_bhBmp.Width(0);

  001b2	6a 00		 push	 0
  001b4	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  001b7	83 c1 30	 add	 ecx, 48			; 00000030H
  001ba	e8 00 00 00 00	 call	 ?Width@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Width
  001bf	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  001c2	89 41 4c	 mov	 DWORD PTR [ecx+76], eax

; 135  :             ButtonHeight=m_bhBmp.Height(0);

  001c5	6a 00		 push	 0
  001c7	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  001ca	83 c1 30	 add	 ecx, 48			; 00000030H
  001cd	e8 00 00 00 00	 call	 ?Height@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Height
  001d2	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  001d5	89 42 50	 mov	 DWORD PTR [edx+80], eax

; 136  :             SetWindowPos(hWndButton, NULL, 0,0, ButtonWidth, ButtonHeight, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

  001d8	6a 16		 push	 22			; 00000016H
  001da	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  001dd	8b 48 50	 mov	 ecx, DWORD PTR [eax+80]
  001e0	51		 push	 ecx
  001e1	8b 55 8c	 mov	 edx, DWORD PTR _this$[ebp]
  001e4	8b 42 4c	 mov	 eax, DWORD PTR [edx+76]
  001e7	50		 push	 eax
  001e8	6a 00		 push	 0
  001ea	6a 00		 push	 0
  001ec	6a 00		 push	 0
  001ee	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  001f1	8b 51 28	 mov	 edx, DWORD PTR [ecx+40]
  001f4	52		 push	 edx
  001f5	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowPos@28

; 137  :             SetRegion();

  001fb	8b 4d 8c	 mov	 ecx, DWORD PTR _this$[ebp]
  001fe	e8 00 00 00 00	 call	 ?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ ; CBitmapAsButton::SetRegion
$LN2@Create@3:

; 138  :         }
; 139  :     }
; 140  : 
; 141  :     return !bFailed;

  00203	8b 45 8c	 mov	 eax, DWORD PTR _this$[ebp]
  00206	33 c9		 xor	 ecx, ecx
  00208	83 78 2c 00	 cmp	 DWORD PTR [eax+44], 0
  0020c	0f 94 c1	 sete	 cl
  0020f	89 4d 90	 mov	 DWORD PTR $T344116[ebp], ecx
  00212	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  00219	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  0021c	e8 00 00 00 00	 call	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
  00221	8b 45 90	 mov	 eax, DWORD PTR $T344116[ebp]
$LN6@Create@3:

; 142  : }

  00224	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00227	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  0022e	59		 pop	 ecx
  0022f	8b e5		 mov	 esp, ebp
  00231	5d		 pop	 ebp
  00232	c2 2c 00	 ret	 44			; 0000002cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z$0:
  00000	8d 4d 08	 lea	 ecx, DWORD PTR _sID$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAE@XZ ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::~basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >
__unwindfunclet$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z$1:
  00008	8d 4d 94	 lea	 ecx, DWORD PTR $T344115[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$SmartHandle@PAUHBITMAP__@@@@QAE@XZ ; SmartHandle<HBITMAP__ *>::~SmartHandle<HBITMAP__ *>
__ehhandler$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z:
  00010	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00014	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00017	8b 4a 8c	 mov	 ecx, DWORD PTR [edx-116]
  0001a	33 c8		 xor	 ecx, eax
  0001c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00021	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z
  00026	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?Create@CBitmapAsButton@@QAEHV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PAUHWND__@@HHPAUHINSTANCE__@@@Z ENDP ; CBitmapAsButton::Create
PUBLIC	?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z ; CBitmapAsButton::AddBitmap
;	COMDAT xdata$x
xdata$x	SEGMENT
__unwindtable$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z DD 0ffffffffH
	DD	FLAT:__unwindfunclet$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z$0
	DD	00H
	DD	FLAT:__unwindfunclet$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z$1
__ehfuncinfo$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z DD 019930522H
	DD	02H
	DD	FLAT:__unwindtable$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z
	DD	2 DUP(00H)
	DD	2 DUP(00H)
	DD	00H
	DD	00H
; Function compile flags: /Odtp
xdata$x	ENDS
;	COMDAT ?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z
_TEXT	SEGMENT
tv154 = -52						; size = 4
tv156 = -48						; size = 4
_this$ = -44						; size = 4
$T345110 = -40						; size = 4
_rc$141929 = -36					; size = 16
_NewWidth$141924 = -20					; size = 4
_NewHeight$141925 = -16					; size = 4
__$EHRec$ = -12						; size = 12
_State$ = 8						; size = 4
_BitmapState$ = 12					; size = 8
?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z PROC ; CBitmapAsButton::AddBitmap, COMDAT
; _this$ = ecx

; 240  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	6a ff		 push	 -1
  00005	68 00 00 00 00	 push	 __ehhandler$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z
  0000a	64 a1 00 00 00
	00		 mov	 eax, DWORD PTR fs:0
  00010	50		 push	 eax
  00011	83 ec 28	 sub	 esp, 40			; 00000028H
  00014	a1 00 00 00 00	 mov	 eax, DWORD PTR ___security_cookie
  00019	33 c5		 xor	 eax, ebp
  0001b	50		 push	 eax
  0001c	8d 45 f4	 lea	 eax, DWORD PTR __$EHRec$[ebp]
  0001f	64 a3 00 00 00
	00		 mov	 DWORD PTR fs:0, eax
  00025	89 4d d4	 mov	 DWORD PTR _this$[ebp], ecx
  00028	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR __$EHRec$[ebp+8], 0

; 241  :     m_bhBmp.Add(BitmapState, State);

  0002f	8b 45 08	 mov	 eax, DWORD PTR _State$[ebp]
  00032	50		 push	 eax
  00033	83 ec 08	 sub	 esp, 8
  00036	8b cc		 mov	 ecx, esp
  00038	89 65 d8	 mov	 DWORD PTR $T345110[ebp], esp
  0003b	8d 55 0c	 lea	 edx, DWORD PTR _BitmapState$[ebp]
  0003e	52		 push	 edx
  0003f	e8 00 00 00 00	 call	 ??0?$SmartPtr@VCBitmapState@@@@QAE@ABV0@@Z ; SmartPtr<CBitmapState>::SmartPtr<CBitmapState>
  00044	89 45 d0	 mov	 DWORD PTR tv156[ebp], eax
  00047	8b 45 d0	 mov	 eax, DWORD PTR tv156[ebp]
  0004a	89 45 cc	 mov	 DWORD PTR tv154[ebp], eax
  0004d	c6 45 fc 01	 mov	 BYTE PTR __$EHRec$[ebp+8], 1
  00051	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  00054	83 c1 30	 add	 ecx, 48			; 00000030H
  00057	c6 45 fc 00	 mov	 BYTE PTR __$EHRec$[ebp+8], 0
  0005b	e8 00 00 00 00	 call	 ?Add@CBitmapHolder@@QAEXV?$SmartPtr@VCBitmapState@@@@H@Z ; CBitmapHolder::Add

; 242  :     if (State == 0)

  00060	83 7d 08 00	 cmp	 DWORD PTR _State$[ebp], 0
  00064	0f 85 ad 00 00
	00		 jne	 $LN5@AddBitmap@5

; 243  :     {
; 244  :         int NewWidth = m_bhBmp.Width(State);

  0006a	8b 4d 08	 mov	 ecx, DWORD PTR _State$[ebp]
  0006d	51		 push	 ecx
  0006e	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  00071	83 c1 30	 add	 ecx, 48			; 00000030H
  00074	e8 00 00 00 00	 call	 ?Width@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Width
  00079	89 45 ec	 mov	 DWORD PTR _NewWidth$141924[ebp], eax

; 245  :         int NewHeight = m_bhBmp.Height(State);

  0007c	8b 55 08	 mov	 edx, DWORD PTR _State$[ebp]
  0007f	52		 push	 edx
  00080	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  00083	83 c1 30	 add	 ecx, 48			; 00000030H
  00086	e8 00 00 00 00	 call	 ?Height@CBitmapHolder@@QAEHH@Z ; CBitmapHolder::Height
  0008b	89 45 f0	 mov	 DWORD PTR _NewHeight$141925[ebp], eax

; 246  :         if ((NewWidth != ButtonWidth) || (ButtonHeight!=NewHeight))

  0008e	8b 45 d4	 mov	 eax, DWORD PTR _this$[ebp]
  00091	8b 4d ec	 mov	 ecx, DWORD PTR _NewWidth$141924[ebp]
  00094	3b 48 4c	 cmp	 ecx, DWORD PTR [eax+76]
  00097	75 0b		 jne	 SHORT $LN3@AddBitmap@5
  00099	8b 55 d4	 mov	 edx, DWORD PTR _this$[ebp]
  0009c	8b 42 50	 mov	 eax, DWORD PTR [edx+80]
  0009f	3b 45 f0	 cmp	 eax, DWORD PTR _NewHeight$141925[ebp]
  000a2	74 6b		 je	 SHORT $LN4@AddBitmap@5
$LN3@AddBitmap@5:

; 247  :         {
; 248  :             ButtonWidth=NewWidth;

  000a4	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  000a7	8b 55 ec	 mov	 edx, DWORD PTR _NewWidth$141924[ebp]
  000aa	89 51 4c	 mov	 DWORD PTR [ecx+76], edx

; 249  :             ButtonHeight=NewHeight;

  000ad	8b 45 d4	 mov	 eax, DWORD PTR _this$[ebp]
  000b0	8b 4d f0	 mov	 ecx, DWORD PTR _NewHeight$141925[ebp]
  000b3	89 48 50	 mov	 DWORD PTR [eax+80], ecx

; 250  :             if (pOriginalProc != NULL)

  000b6	8b 55 d4	 mov	 edx, DWORD PTR _this$[ebp]
  000b9	83 7a 5c 00	 cmp	 DWORD PTR [edx+92], 0
  000bd	74 2d		 je	 SHORT $LN2@AddBitmap@5

; 251  :             {
; 252  :                 RECT rc;
; 253  :                 if (GetWindowRect(hWndButton, &rc))

  000bf	8d 45 dc	 lea	 eax, DWORD PTR _rc$141929[ebp]
  000c2	50		 push	 eax
  000c3	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  000c6	8b 51 28	 mov	 edx, DWORD PTR [ecx+40]
  000c9	52		 push	 edx
  000ca	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__GetWindowRect@8
  000d0	85 c0		 test	 eax, eax
  000d2	74 18		 je	 SHORT $LN2@AddBitmap@5

; 254  :                 {
; 255  :                     this->OriginalWidth = rc.right-rc.left;

  000d4	8b 45 e4	 mov	 eax, DWORD PTR _rc$141929[ebp+8]
  000d7	2b 45 dc	 sub	 eax, DWORD PTR _rc$141929[ebp]
  000da	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  000dd	89 41 60	 mov	 DWORD PTR [ecx+96], eax

; 256  :                     this->OriginalHeight = rc.bottom-rc.top;

  000e0	8b 55 e8	 mov	 edx, DWORD PTR _rc$141929[ebp+12]
  000e3	2b 55 e0	 sub	 edx, DWORD PTR _rc$141929[ebp+4]
  000e6	8b 45 d4	 mov	 eax, DWORD PTR _this$[ebp]
  000e9	89 50 64	 mov	 DWORD PTR [eax+100], edx
$LN2@AddBitmap@5:

; 257  :                 }
; 258  :             }
; 259  :             SetWindowPos(hWndButton, NULL, 0,0, ButtonWidth, ButtonHeight, SWP_NOMOVE|SWP_NOZORDER|SWP_NOACTIVATE);

  000ec	6a 16		 push	 22			; 00000016H
  000ee	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  000f1	8b 51 50	 mov	 edx, DWORD PTR [ecx+80]
  000f4	52		 push	 edx
  000f5	8b 45 d4	 mov	 eax, DWORD PTR _this$[ebp]
  000f8	8b 48 4c	 mov	 ecx, DWORD PTR [eax+76]
  000fb	51		 push	 ecx
  000fc	6a 00		 push	 0
  000fe	6a 00		 push	 0
  00100	6a 00		 push	 0
  00102	8b 55 d4	 mov	 edx, DWORD PTR _this$[ebp]
  00105	8b 42 28	 mov	 eax, DWORD PTR [edx+40]
  00108	50		 push	 eax
  00109	ff 15 00 00 00
	00		 call	 DWORD PTR __imp__SetWindowPos@28
$LN4@AddBitmap@5:

; 260  :         }
; 261  :         SetRegion();

  0010f	8b 4d d4	 mov	 ecx, DWORD PTR _this$[ebp]
  00112	e8 00 00 00 00	 call	 ?SetRegion@CBitmapAsButton@@QAEPAUHRGN__@@XZ ; CBitmapAsButton::SetRegion
$LN5@AddBitmap@5:

; 262  :     }
; 263  : }

  00117	c7 45 fc ff ff
	ff ff		 mov	 DWORD PTR __$EHRec$[ebp+8], -1
  0011e	8d 4d 0c	 lea	 ecx, DWORD PTR _BitmapState$[ebp]
  00121	e8 00 00 00 00	 call	 ??1?$SmartPtr@VCBitmapState@@@@QAE@XZ ; SmartPtr<CBitmapState>::~SmartPtr<CBitmapState>
  00126	8b 4d f4	 mov	 ecx, DWORD PTR __$EHRec$[ebp]
  00129	64 89 0d 00 00
	00 00		 mov	 DWORD PTR fs:0, ecx
  00130	59		 pop	 ecx
  00131	8b e5		 mov	 esp, ebp
  00133	5d		 pop	 ebp
  00134	c2 0c 00	 ret	 12			; 0000000cH
_TEXT	ENDS
;	COMDAT text$x
text$x	SEGMENT
__unwindfunclet$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z$0:
  00000	8d 4d 0c	 lea	 ecx, DWORD PTR _BitmapState$[ebp]
  00003	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VCBitmapState@@@@QAE@XZ ; SmartPtr<CBitmapState>::~SmartPtr<CBitmapState>
__unwindfunclet$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z$1:
  00008	8b 4d d8	 mov	 ecx, DWORD PTR $T345110[ebp]
  0000b	e9 00 00 00 00	 jmp	 ??1?$SmartPtr@VCBitmapState@@@@QAE@XZ ; SmartPtr<CBitmapState>::~SmartPtr<CBitmapState>
__ehhandler$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z:
  00010	8b 54 24 08	 mov	 edx, DWORD PTR [esp+8]
  00014	8d 42 0c	 lea	 eax, DWORD PTR [edx+12]
  00017	8b 4a d4	 mov	 ecx, DWORD PTR [edx-44]
  0001a	33 c8		 xor	 ecx, eax
  0001c	e8 00 00 00 00	 call	 @__security_check_cookie@4
  00021	b8 00 00 00 00	 mov	 eax, OFFSET __ehfuncinfo$?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z
  00026	e9 00 00 00 00	 jmp	 ___CxxFrameHandler3
text$x	ENDS
?AddBitmap@CBitmapAsButton@@QAEXHV?$SmartPtr@VCBitmapState@@@@@Z ENDP ; CBitmapAsButton::AddBitmap
END
