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

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

INCLUDELIB OLDNAMES

PUBLIC	??_C@_0M@FGGHEADP@RepeatCount?$AA@		; `string'
PUBLIC	??_C@_0N@ILKKBMKB@Repeat?5Count?$AA@		; `string'
PUBLIC	??_C@_0BA@MDGIJNHJ@ThresholdMotion?$AA@		; `string'
PUBLIC	??_C@_0BB@BEGAOOHD@Threshold?5Motion?$AA@	; `string'
PUBLIC	??_C@_0P@GPGAEPLA@ThresholdStill?$AA@		; `string'
PUBLIC	??_C@_0N@MBJCNFIG@ProgPulldown?$AA@		; `string'
PUBLIC	??_C@_0BA@GKMBKLFB@Threshold?5Still?$AA@	; `string'
PUBLIC	?ProgMode@@YAHPAUTDeinterlaceInfo@@@Z		; ProgMode
PUBLIC	?ThresholdStill@@3JA				; ThresholdStill
PUBLIC	?ThresholdMotion@@3JA				; ThresholdMotion
PUBLIC	?RepeatCount@@3JA				; RepeatCount
PUBLIC	??_C@_1CE@OBIBOFFM@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CA@JGNINNHN@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAf?$AAi?$AAl?$AAm?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1BO@BDAJLHCE@?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAg?$AAa?$AAi?$AAn?$AA?5?$AA?$CF?$AAd?$AA?$AA@ ; `string'
PUBLIC	??_C@_1CE@MAJDKLAB@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAb?$AAa?$AAd?$AA?5?$AAp?$AAa?$AAt?$AAt?$AAe?$AAr?$AAn?$AA?$AA@ ; `string'
PUBLIC	??_C@_1FA@DODPJDNN@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?5?$AAw?$AAh?$AAe?$AAn?$AA?5?$AAe?$AAx?$AAp?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg@ ; `string'
PUBLIC	??_C@_1DO@IEPPJGPF@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAn?$AAe?$AAi?$AAt?$AAh?$AAe?$AAr?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AA?5?$AAn?$AAo?$AAr?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?$AA@ ; `string'
PUBLIC	?FDProgSettings@@3PAUSETTING@@A			; FDProgSettings
;	COMDAT ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA
_BSS	SEGMENT
?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA DD 01H DUP (?) ; `UpdateProgPulldownModePAL'::`2'::ConsecutiveStills
_BSS	ENDS
;	COMDAT ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA
_BSS	SEGMENT
?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA DD 01H DUP (?) ; `UpdateProgPulldownModePAL'::`2'::PatternSpots
_BSS	ENDS
;	COMDAT ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA
_BSS	SEGMENT
?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA DD 01H DUP (?) ; `UpdateProgPulldownModeNTSC'::`2'::ConsecutiveStills
_BSS	ENDS
;	COMDAT ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA
_BSS	SEGMENT
?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA DD 01H DUP (?) ; `UpdateProgPulldownModeNTSC'::`2'::PatternSpots
;	COMDAT ??_C@_0M@FGGHEADP@RepeatCount?$AA@
CONST	SEGMENT
??_C@_0M@FGGHEADP@RepeatCount?$AA@ DB 'RepeatCount', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@ILKKBMKB@Repeat?5Count?$AA@
CONST	SEGMENT
??_C@_0N@ILKKBMKB@Repeat?5Count?$AA@ DB 'Repeat Count', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@MDGIJNHJ@ThresholdMotion?$AA@
CONST	SEGMENT
??_C@_0BA@MDGIJNHJ@ThresholdMotion?$AA@ DB 'ThresholdMotion', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BB@BEGAOOHD@Threshold?5Motion?$AA@
CONST	SEGMENT
??_C@_0BB@BEGAOOHD@Threshold?5Motion?$AA@ DB 'Threshold Motion', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0P@GPGAEPLA@ThresholdStill?$AA@
CONST	SEGMENT
??_C@_0P@GPGAEPLA@ThresholdStill?$AA@ DB 'ThresholdStill', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0N@MBJCNFIG@ProgPulldown?$AA@
CONST	SEGMENT
??_C@_0N@MBJCNFIG@ProgPulldown?$AA@ DB 'ProgPulldown', 00H ; `string'
CONST	ENDS
;	COMDAT ??_C@_0BA@GKMBKLFB@Threshold?5Still?$AA@
CONST	SEGMENT
??_C@_0BA@GKMBKLFB@Threshold?5Still?$AA@ DB 'Threshold Still', 00H ; `string'
CONST	ENDS
;	COMDAT ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
_DATA	SEGMENT
?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A DD 07H ; `UpdateProgPulldownModeNTSC'::`2'::FilmModeBeingDetected
_DATA	ENDS
;	COMDAT ??_C@_1DO@IEPPJGPF@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAn?$AAe?$AAi?$AAt?$AAh?$AAe?$AAr?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AA?5?$AAn?$AAo?$AAr?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?$AA@
CONST	SEGMENT
??_C@_1DO@IEPPJGPF@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAn?$AAe?$AAi?$AAt?$AAh?$AAe?$AAr?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AA?5?$AAn?$AAo?$AAr?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?$AA@ DB 'R'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 't', 00H, ' ', 00H, 'n', 00H
	DB	'e', 00H, 'i', 00H, 't', 00H, 'h', 00H, 'e', 00H, 'r', 00H, ' '
	DB	00H, 'c', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'g', 00H, 'e', 00H
	DB	' ', 00H, 'n', 00H, 'o', 00H, 'r', 00H, ' ', 00H, 's', 00H, 't'
	DB	00H, 'i', 00H, 'l', 00H, 'l', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1FA@DODPJDNN@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?5?$AAw?$AAh?$AAe?$AAn?$AA?5?$AAe?$AAx?$AAp?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg@
CONST	SEGMENT
??_C@_1FA@DODPJDNN@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?5?$AAw?$AAh?$AAe?$AAn?$AA?5?$AAe?$AAx?$AAp?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg@ DB 'R'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 't', 00H, ' ', 00H, 'f', 00H
	DB	'o', 00H, 'u', 00H, 'n', 00H, 'd', 00H, ' ', 00H, 's', 00H, 't'
	DB	00H, 'i', 00H, 'l', 00H, 'l', 00H, ' ', 00H, 'w', 00H, 'h', 00H
	DB	'e', 00H, 'n', 00H, ' ', 00H, 'e', 00H, 'x', 00H, 'p', 00H, 'e'
	DB	00H, 'c', 00H, 't', 00H, 'i', 00H, 'n', 00H, 'g', 00H, ' ', 00H
	DB	'c', 00H, 'h', 00H, 'a', 00H, 'n', 00H, 'g', 00H, 'e', 00H, 00H
	DB	00H						; `string'
CONST	ENDS
;	COMDAT ??_C@_1CE@MAJDKLAB@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAb?$AAa?$AAd?$AA?5?$AAp?$AAa?$AAt?$AAt?$AAe?$AAr?$AAn?$AA?$AA@
CONST	SEGMENT
??_C@_1CE@MAJDKLAB@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAb?$AAa?$AAd?$AA?5?$AAp?$AAa?$AAt?$AAt?$AAe?$AAr?$AAn?$AA?$AA@ DB 'R'
	DB	00H, 'e', 00H, 's', 00H, 'e', 00H, 't', 00H, ' ', 00H, 'b', 00H
	DB	'a', 00H, 'd', 00H, ' ', 00H, 'p', 00H, 'a', 00H, 't', 00H, 't'
	DB	00H, 'e', 00H, 'r', 00H, 'n', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ??_C@_1BO@BDAJLHCE@?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAg?$AAa?$AAi?$AAn?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1BO@BDAJLHCE@?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAg?$AAa?$AAi?$AAn?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'F'
	DB	00H, 'o', 00H, 'u', 00H, 'n', 00H, 'd', 00H, ' ', 00H, 'a', 00H
	DB	'g', 00H, 'a', 00H, 'i', 00H, 'n', 00H, ' ', 00H, '%', 00H, 'd'
	DB	00H, 00H, 00H				; `string'
CONST	ENDS
;	COMDAT ??_C@_1CA@JGNINNHN@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAf?$AAi?$AAl?$AAm?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CA@JGNINNHN@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAf?$AAi?$AAl?$AAm?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'G'
	DB	00H, 'o', 00H, 'n', 00H, 'e', 00H, ' ', 00H, 't', 00H, 'o', 00H
	DB	' ', 00H, 'f', 00H, 'i', 00H, 'l', 00H, 'm', 00H, ' ', 00H, '%'
	DB	00H, 'd', 00H, 00H, 00H			; `string'
CONST	ENDS
;	COMDAT ??_C@_1CE@OBIBOFFM@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg?$AA?5?$AA?$CF?$AAd?$AA?$AA@
CONST	SEGMENT
??_C@_1CE@OBIBOFFM@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg?$AA?5?$AA?$CF?$AAd?$AA?$AA@ DB 'S'
	DB	00H, 't', 00H, 'a', 00H, 'r', 00H, 't', 00H, 'D', 00H, 'e', 00H
	DB	't', 00H, 'e', 00H, 'c', 00H, 't', 00H, 'i', 00H, 'n', 00H, 'g'
	DB	00H, ' ', 00H, '%', 00H, 'd', 00H, 00H, 00H	; `string'
CONST	ENDS
;	COMDAT ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
_DATA	SEGMENT
?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A DD 07H ; `UpdateProgPulldownModePAL'::`2'::FilmModeBeingDetected
?ThresholdStill@@3JA DD 032H				; ThresholdStill
?ThresholdMotion@@3JA DD 0aH				; ThresholdMotion
?RepeatCount@@3JA DD 04H				; RepeatCount
?FDProgSettings@@3PAUSETTING@@A DD FLAT:??_C@_0BA@GKMBKLFB@Threshold?5Still?$AA@ ; FDProgSettings
	DD	04H
	DD	00H
	DD	FLAT:?ThresholdStill@@3JA
	DD	01eH
	DD	00H
	DD	02710H
	DD	0aH
	DD	01H
	DD	00H
	DD	FLAT:??_C@_0N@MBJCNFIG@ProgPulldown?$AA@
	DD	FLAT:??_C@_0P@GPGAEPLA@ThresholdStill?$AA@
	DD	00H
	DD	FLAT:??_C@_0BB@BEGAOOHD@Threshold?5Motion?$AA@
	DD	04H
	DD	00H
	DD	FLAT:?ThresholdMotion@@3JA
	DD	0c8H
	DD	00H
	DD	02710H
	DD	0aH
	DD	01H
	DD	00H
	DD	FLAT:??_C@_0N@MBJCNFIG@ProgPulldown?$AA@
	DD	FLAT:??_C@_0BA@MDGIJNHJ@ThresholdMotion?$AA@
	DD	00H
	DD	FLAT:??_C@_0N@ILKKBMKB@Repeat?5Count?$AA@
	DD	04H
	DD	00H
	DD	FLAT:?RepeatCount@@3JA
	DD	04H
	DD	00H
	DD	014H
	DD	01H
	DD	01H
	DD	00H
	DD	FLAT:??_C@_0N@MBJCNFIG@ProgPulldown?$AA@
	DD	FLAT:??_C@_0M@FGGHEADP@RepeatCount?$AA@
	DD	00H
PUBLIC	?FDProg_SetMenu@@YAXPAUHMENU__@@@Z		; FDProg_SetMenu
; Function compile flags: /Odtp
; File c:\develop\dscaler423a\dscaler\fd_prog.cpp
;	COMDAT ?FDProg_SetMenu@@YAXPAUHMENU__@@@Z
_TEXT	SEGMENT
_hMenu$ = 8						; size = 4
?FDProg_SetMenu@@YAXPAUHMENU__@@@Z PROC			; FDProg_SetMenu, COMDAT

; 383  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 384  : }

  00003	5d		 pop	 ebp
  00004	c3		 ret	 0
?FDProg_SetMenu@@YAXPAUHMENU__@@@Z ENDP			; FDProg_SetMenu
_TEXT	ENDS
PUBLIC	?FDProg_GetSetting@@YAPAUSETTING@@W4FDPROG_SETTING@@@Z ; FDProg_GetSetting
; Function compile flags: /Odtp
;	COMDAT ?FDProg_GetSetting@@YAPAUSETTING@@W4FDPROG_SETTING@@@Z
_TEXT	SEGMENT
_Setting$ = 8						; size = 4
?FDProg_GetSetting@@YAPAUSETTING@@W4FDPROG_SETTING@@@Z PROC ; FDProg_GetSetting, COMDAT

; 371  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp

; 372  :     if(Setting > -1 && Setting < FDPROG_SETTING_LASTONE)

  00003	83 7d 08 ff	 cmp	 DWORD PTR _Setting$[ebp], -1
  00007	7e 15		 jle	 SHORT $LN2@FDProg_Get
  00009	83 7d 08 03	 cmp	 DWORD PTR _Setting$[ebp], 3
  0000d	7d 0f		 jge	 SHORT $LN2@FDProg_Get

; 373  :     {
; 374  :         return &(FDProgSettings[Setting]);

  0000f	8b 45 08	 mov	 eax, DWORD PTR _Setting$[ebp]
  00012	6b c0 34	 imul	 eax, 52			; 00000034H
  00015	05 00 00 00 00	 add	 eax, OFFSET ?FDProgSettings@@3PAUSETTING@@A ; FDProgSettings
  0001a	eb 04		 jmp	 SHORT $LN3@FDProg_Get

; 375  :     }
; 376  :     else

  0001c	eb 02		 jmp	 SHORT $LN3@FDProg_Get
$LN2@FDProg_Get:

; 377  :     {
; 378  :         return NULL;

  0001e	33 c0		 xor	 eax, eax
$LN3@FDProg_Get:

; 379  :     }
; 380  : }

  00020	5d		 pop	 ebp
  00021	c3		 ret	 0
?FDProg_GetSetting@@YAPAUSETTING@@W4FDPROG_SETTING@@@Z ENDP ; FDProg_GetSetting
_TEXT	ENDS
PUBLIC	?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
; Function compile flags: /Odtp
;	COMDAT ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z
_TEXT	SEGMENT
tv129 = -24						; size = 4
tv92 = -20						; size = 4
tv87 = -16						; size = 4
tv82 = -12						; size = 4
tv77 = -8						; size = 4
tv64 = -4						; size = 4
_pInfo$ = 8						; size = 4
_FilmMode$ = 12						; size = 4
?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z PROC ; ProgExpectChange, COMDAT

; 314  : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 18	 sub	 esp, 24			; 00000018H

; 315  :     switch(FilmMode)

  00006	8b 45 0c	 mov	 eax, DWORD PTR _FilmMode$[ebp]
  00009	89 45 fc	 mov	 DWORD PTR tv64[ebp], eax
  0000c	83 7d fc 06	 cmp	 DWORD PTR tv64[ebp], 6
  00010	0f 87 16 01 00
	00		 ja	 $LN1@ProgExpect
  00016	8b 4d fc	 mov	 ecx, DWORD PTR tv64[ebp]
  00019	ff 24 8d 00 00
	00 00		 jmp	 DWORD PTR $LN23@ProgExpect[ecx*4]
$LN8@ProgExpect:

; 316  :     {
; 317  :     case PROG_22_PULLDOWN_ODD:
; 318  :         return ((pInfo->CurrentFrame & 1) != 0);

  00020	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00023	8b 42 40	 mov	 eax, DWORD PTR [edx+64]
  00026	83 e0 01	 and	 eax, 1
  00029	f7 d8		 neg	 eax
  0002b	1b c0		 sbb	 eax, eax
  0002d	f7 d8		 neg	 eax
  0002f	e9 fd 00 00 00	 jmp	 $LN11@ProgExpect

; 319  :         break;

  00034	e9 f8 00 00 00	 jmp	 $LN11@ProgExpect
$LN7@ProgExpect:

; 320  :     case PROG_22_PULLDOWN_EVEN:
; 321  :         return ((pInfo->CurrentFrame & 1) == 0);

  00039	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0003c	8b 40 40	 mov	 eax, DWORD PTR [eax+64]
  0003f	83 e0 01	 and	 eax, 1
  00042	f7 d8		 neg	 eax
  00044	1b c0		 sbb	 eax, eax
  00046	83 c0 01	 add	 eax, 1
  00049	e9 e3 00 00 00	 jmp	 $LN11@ProgExpect

; 322  :         break;

  0004e	e9 de 00 00 00	 jmp	 $LN11@ProgExpect
$LN6@ProgExpect:

; 323  :     case PROG_32_PULLDOWN_0:
; 324  :         return (pInfo->CurrentFrame == 0 || pInfo->CurrentFrame == 3);

  00053	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00056	83 79 40 00	 cmp	 DWORD PTR [ecx+64], 0
  0005a	74 12		 je	 SHORT $LN13@ProgExpect
  0005c	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  0005f	83 7a 40 03	 cmp	 DWORD PTR [edx+64], 3
  00063	74 09		 je	 SHORT $LN13@ProgExpect
  00065	c7 45 f8 00 00
	00 00		 mov	 DWORD PTR tv77[ebp], 0
  0006c	eb 07		 jmp	 SHORT $LN14@ProgExpect
$LN13@ProgExpect:
  0006e	c7 45 f8 01 00
	00 00		 mov	 DWORD PTR tv77[ebp], 1
$LN14@ProgExpect:
  00075	8b 45 f8	 mov	 eax, DWORD PTR tv77[ebp]
  00078	e9 b4 00 00 00	 jmp	 $LN11@ProgExpect

; 325  :         break;

  0007d	e9 af 00 00 00	 jmp	 $LN11@ProgExpect
$LN5@ProgExpect:

; 326  :     case PROG_32_PULLDOWN_1:
; 327  :         return (pInfo->CurrentFrame == 4 || pInfo->CurrentFrame == 2);

  00082	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00085	83 78 40 04	 cmp	 DWORD PTR [eax+64], 4
  00089	74 12		 je	 SHORT $LN15@ProgExpect
  0008b	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0008e	83 79 40 02	 cmp	 DWORD PTR [ecx+64], 2
  00092	74 09		 je	 SHORT $LN15@ProgExpect
  00094	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR tv82[ebp], 0
  0009b	eb 07		 jmp	 SHORT $LN16@ProgExpect
$LN15@ProgExpect:
  0009d	c7 45 f4 01 00
	00 00		 mov	 DWORD PTR tv82[ebp], 1
$LN16@ProgExpect:
  000a4	8b 45 f4	 mov	 eax, DWORD PTR tv82[ebp]
  000a7	e9 85 00 00 00	 jmp	 $LN11@ProgExpect

; 328  :         break;

  000ac	e9 80 00 00 00	 jmp	 $LN11@ProgExpect
$LN4@ProgExpect:

; 329  :     case PROG_32_PULLDOWN_2:
; 330  :         return (pInfo->CurrentFrame == 3 || pInfo->CurrentFrame == 1);

  000b1	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  000b4	83 7a 40 03	 cmp	 DWORD PTR [edx+64], 3
  000b8	74 12		 je	 SHORT $LN17@ProgExpect
  000ba	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  000bd	83 78 40 01	 cmp	 DWORD PTR [eax+64], 1
  000c1	74 09		 je	 SHORT $LN17@ProgExpect
  000c3	c7 45 f0 00 00
	00 00		 mov	 DWORD PTR tv87[ebp], 0
  000ca	eb 07		 jmp	 SHORT $LN18@ProgExpect
$LN17@ProgExpect:
  000cc	c7 45 f0 01 00
	00 00		 mov	 DWORD PTR tv87[ebp], 1
$LN18@ProgExpect:
  000d3	8b 45 f0	 mov	 eax, DWORD PTR tv87[ebp]
  000d6	eb 59		 jmp	 SHORT $LN11@ProgExpect

; 331  :         break;

  000d8	eb 57		 jmp	 SHORT $LN11@ProgExpect
$LN3@ProgExpect:

; 332  :     case PROG_32_PULLDOWN_3:
; 333  :         return (pInfo->CurrentFrame == 2 || pInfo->CurrentFrame == 0);

  000da	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  000dd	83 79 40 02	 cmp	 DWORD PTR [ecx+64], 2
  000e1	74 12		 je	 SHORT $LN19@ProgExpect
  000e3	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  000e6	83 7a 40 00	 cmp	 DWORD PTR [edx+64], 0
  000ea	74 09		 je	 SHORT $LN19@ProgExpect
  000ec	c7 45 ec 00 00
	00 00		 mov	 DWORD PTR tv92[ebp], 0
  000f3	eb 07		 jmp	 SHORT $LN20@ProgExpect
$LN19@ProgExpect:
  000f5	c7 45 ec 01 00
	00 00		 mov	 DWORD PTR tv92[ebp], 1
$LN20@ProgExpect:
  000fc	8b 45 ec	 mov	 eax, DWORD PTR tv92[ebp]
  000ff	eb 30		 jmp	 SHORT $LN11@ProgExpect

; 334  :         break;

  00101	eb 2e		 jmp	 SHORT $LN11@ProgExpect
$LN2@ProgExpect:

; 335  :     case PROG_32_PULLDOWN_4:
; 336  :         return (pInfo->CurrentFrame == 1 || pInfo->CurrentFrame == 4);

  00103	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00106	83 78 40 01	 cmp	 DWORD PTR [eax+64], 1
  0010a	74 12		 je	 SHORT $LN21@ProgExpect
  0010c	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0010f	83 79 40 04	 cmp	 DWORD PTR [ecx+64], 4
  00113	74 09		 je	 SHORT $LN21@ProgExpect
  00115	c7 45 e8 00 00
	00 00		 mov	 DWORD PTR tv129[ebp], 0
  0011c	eb 07		 jmp	 SHORT $LN22@ProgExpect
$LN21@ProgExpect:
  0011e	c7 45 e8 01 00
	00 00		 mov	 DWORD PTR tv129[ebp], 1
$LN22@ProgExpect:
  00125	8b 45 e8	 mov	 eax, DWORD PTR tv129[ebp]
  00128	eb 07		 jmp	 SHORT $LN11@ProgExpect

; 337  :         break;

  0012a	eb 05		 jmp	 SHORT $LN11@ProgExpect
$LN1@ProgExpect:

; 338  :     case NORMAL_PROGRESSIVE:
; 339  :     default:
; 340  :         return TRUE;

  0012c	b8 01 00 00 00	 mov	 eax, 1
$LN11@ProgExpect:

; 341  :         break;
; 342  :     }
; 343  : }

  00131	8b e5		 mov	 esp, ebp
  00133	5d		 pop	 ebp
  00134	c3		 ret	 0
  00135	8d 49 00	 npad	 3
$LN23@ProgExpect:
  00138	00 00 00 00	 DD	 $LN8@ProgExpect
  0013c	00 00 00 00	 DD	 $LN7@ProgExpect
  00140	00 00 00 00	 DD	 $LN6@ProgExpect
  00144	00 00 00 00	 DD	 $LN5@ProgExpect
  00148	00 00 00 00	 DD	 $LN4@ProgExpect
  0014c	00 00 00 00	 DD	 $LN3@ProgExpect
  00150	00 00 00 00	 DD	 $LN2@ProgExpect
?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ENDP ; ProgExpectChange
; Function compile flags: /Odtp
;	COMDAT ?ProgMode@@YAHPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
_i$141138 = -12						; size = 4
_lpOverlay$141137 = -8					; size = 4
_CurrentLine$141135 = -4				; size = 4
_pInfo$ = 8						; size = 4
?ProgMode@@YAHPAUTDeinterlaceInfo@@@Z PROC		; ProgMode, COMDAT

; 286  : {

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

; 287  :     if(ProgExpectChange(pInfo, GetProgMode()) == TRUE)

  00006	e8 00 00 00 00	 call	 ?GetProgMode@@YA?AW4eProgressivePulldownMode@@XZ ; GetProgMode
  0000b	50		 push	 eax
  0000c	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0000f	50		 push	 eax
  00010	e8 00 00 00 00	 call	 ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
  00015	83 c4 08	 add	 esp, 8
  00018	83 f8 01	 cmp	 eax, 1
  0001b	75 7f		 jne	 SHORT $LN7@ProgMode

; 288  :     {
; 289  :         BYTE* CurrentLine = pInfo->PictureHistory[0]->pData;

  0001d	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00020	8b 51 04	 mov	 edx, DWORD PTR [ecx+4]
  00023	8b 02		 mov	 eax, DWORD PTR [edx]
  00025	89 45 fc	 mov	 DWORD PTR _CurrentLine$141135[ebp], eax

; 290  :         if (CurrentLine != NULL)

  00028	83 7d fc 00	 cmp	 DWORD PTR _CurrentLine$141135[ebp], 0
  0002c	74 68		 je	 SHORT $LN6@ProgMode

; 291  :         {
; 292  :             BYTE *lpOverlay = pInfo->Overlay;

  0002e	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00031	8b 51 2c	 mov	 edx, DWORD PTR [ecx+44]
  00034	89 55 f8	 mov	 DWORD PTR _lpOverlay$141137[ebp], edx

; 293  :             for (int i = 0; i < pInfo->FrameHeight; i++)

  00037	c7 45 f4 00 00
	00 00		 mov	 DWORD PTR _i$141138[ebp], 0
  0003e	eb 09		 jmp	 SHORT $LN5@ProgMode
$LN4@ProgMode:
  00040	8b 45 f4	 mov	 eax, DWORD PTR _i$141138[ebp]
  00043	83 c0 01	 add	 eax, 1
  00046	89 45 f4	 mov	 DWORD PTR _i$141138[ebp], eax
$LN5@ProgMode:
  00049	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0004c	8b 55 f4	 mov	 edx, DWORD PTR _i$141138[ebp]
  0004f	3b 51 50	 cmp	 edx, DWORD PTR [ecx+80]
  00052	7d 37		 jge	 SHORT $LN3@ProgMode

; 294  :             {
; 295  :                 pInfo->pMemcpy(lpOverlay, CurrentLine, pInfo->LineLength);

  00054	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00057	8b 48 48	 mov	 ecx, DWORD PTR [eax+72]
  0005a	51		 push	 ecx
  0005b	8b 55 fc	 mov	 edx, DWORD PTR _CurrentLine$141135[ebp]
  0005e	52		 push	 edx
  0005f	8b 45 f8	 mov	 eax, DWORD PTR _lpOverlay$141137[ebp]
  00062	50		 push	 eax
  00063	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  00066	8b 51 60	 mov	 edx, DWORD PTR [ecx+96]
  00069	ff d2		 call	 edx
  0006b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 296  :                 lpOverlay += pInfo->OverlayPitch;

  0006e	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00071	8b 4d f8	 mov	 ecx, DWORD PTR _lpOverlay$141137[ebp]
  00074	03 48 44	 add	 ecx, DWORD PTR [eax+68]
  00077	89 4d f8	 mov	 DWORD PTR _lpOverlay$141137[ebp], ecx

; 297  :                 CurrentLine += pInfo->InputPitch;

  0007a	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  0007d	8b 45 fc	 mov	 eax, DWORD PTR _CurrentLine$141135[ebp]
  00080	03 82 84 00 00
	00		 add	 eax, DWORD PTR [edx+132]
  00086	89 45 fc	 mov	 DWORD PTR _CurrentLine$141135[ebp], eax

; 298  :             }

  00089	eb b5		 jmp	 SHORT $LN4@ProgMode
$LN3@ProgMode:

; 299  :             DO_EMMS;

  0008b	0f 77		 emms

; 300  :             return TRUE;

  0008d	b8 01 00 00 00	 mov	 eax, 1
  00092	eb 0a		 jmp	 SHORT $LN8@ProgMode

; 301  :         }
; 302  :         else

  00094	eb 04		 jmp	 SHORT $LN2@ProgMode
$LN6@ProgMode:

; 303  :         {
; 304  :             return FALSE;

  00096	33 c0		 xor	 eax, eax
  00098	eb 04		 jmp	 SHORT $LN8@ProgMode
$LN2@ProgMode:

; 305  :         }
; 306  :     }
; 307  :     else

  0009a	eb 02		 jmp	 SHORT $LN8@ProgMode
$LN7@ProgMode:

; 308  :     {
; 309  :         return FALSE;

  0009c	33 c0		 xor	 eax, eax
$LN8@ProgMode:

; 310  :     }
; 311  : }

  0009e	8b e5		 mov	 esp, ebp
  000a0	5d		 pop	 ebp
  000a1	c3		 ret	 0
?ProgMode@@YAHPAUTDeinterlaceInfo@@@Z ENDP		; ProgMode
PUBLIC	?UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z ; UpdateProgPulldownModeNTSC
; Function compile flags: /Odtp
;	COMDAT ?UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
tv83 = -12						; size = 4
tv79 = -8						; size = 4
_GuessMode$141096 = -4					; size = 4
_pInfo$ = 8						; size = 4
?UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z PROC ; UpdateProgPulldownModeNTSC, COMDAT

; 151  : {

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

; 152  :     static int ConsecutiveStills = 0;
; 153  :     static int PatternSpots = 0;
; 154  :     static eProgressivePulldownMode FilmModeBeingDetected = NORMAL_PROGRESSIVE;
; 155  : 
; 156  :     if(pInfo == NULL)

  00006	83 7d 08 00	 cmp	 DWORD PTR _pInfo$[ebp], 0
  0000a	75 23		 jne	 SHORT $LN34@UpdateProg

; 157  :     {
; 158  :         ConsecutiveStills = 0;

  0000c	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 159  :         PatternSpots = 0;

  00016	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 160  :         FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  00020	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 161  :         return;

  0002a	e9 65 02 00 00	 jmp	 $LN35@UpdateProg
$LN34@UpdateProg:

; 162  :     }
; 163  : 
; 164  :     // if the diff is above the high threshold then
; 165  :     // we are seeing a diff, so see if we were expecting on or not
; 166  :     if(pInfo->FieldDiff > ThresholdMotion)

  0002f	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00032	8b 48 58	 mov	 ecx, DWORD PTR [eax+88]
  00035	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?ThresholdMotion@@3JA ; ThresholdMotion
  0003b	0f 8e bc 01 00
	00		 jle	 $LN33@UpdateProg

; 167  :     {
; 168  :         if(IsFilmMode())

  00041	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  00046	85 c0		 test	 eax, eax
  00048	74 3e		 je	 SHORT $LN32@UpdateProg

; 169  :         {
; 170  :             if(!ProgExpectChange(pInfo, GetProgMode()))

  0004a	e8 00 00 00 00	 call	 ?GetProgMode@@YA?AW4eProgressivePulldownMode@@XZ ; GetProgMode
  0004f	50		 push	 eax
  00050	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00053	52		 push	 edx
  00054	e8 00 00 00 00	 call	 ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
  00059	83 c4 08	 add	 esp, 8
  0005c	85 c0		 test	 eax, eax
  0005e	75 23		 jne	 SHORT $LN31@UpdateProg

; 171  :             {
; 172  :                 // Go back to video
; 173  :                 SetVideoDeinterlaceMode(0);

  00060	6a 00		 push	 0
  00062	e8 00 00 00 00	 call	 ?SetVideoDeinterlaceMode@@YAXH@Z ; SetVideoDeinterlaceMode
  00067	83 c4 04	 add	 esp, 4

; 174  :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  0006a	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 175  :                 LOG(2, _T("Gone back to video"));

  00074	68 00 00 00 00	 push	 OFFSET ??_C@_1CG@IGGLBDCJ@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAb?$AAa?$AAc?$AAk?$AA?5?$AAt?$AAo?$AA?5?$AAv?$AAi?$AAd?$AAe?$AAo?$AA?$AA@
  00079	6a 02		 push	 2
  0007b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00080	83 c4 08	 add	 esp, 8
$LN31@UpdateProg:

; 176  :             }
; 177  :         }
; 178  :         else

  00083	e9 66 01 00 00	 jmp	 $LN30@UpdateProg
$LN32@UpdateProg:

; 179  :         {
; 180  :             eProgressivePulldownMode GuessMode = NORMAL_PROGRESSIVE;

  00088	c7 45 fc 07 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 7

; 181  :             if(ConsecutiveStills == 1)

  0008f	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 1
  00096	75 46		 jne	 SHORT $LN29@UpdateProg

; 182  :             {
; 183  :                 switch(pInfo->CurrentFrame)

  00098	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0009b	8b 48 40	 mov	 ecx, DWORD PTR [eax+64]
  0009e	89 4d f8	 mov	 DWORD PTR tv79[ebp], ecx
  000a1	83 7d f8 04	 cmp	 DWORD PTR tv79[ebp], 4
  000a5	77 35		 ja	 SHORT $LN27@UpdateProg
  000a7	8b 55 f8	 mov	 edx, DWORD PTR tv79[ebp]
  000aa	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN37@UpdateProg[edx*4]
$LN26@UpdateProg:

; 184  :                 {
; 185  :                 case 0:
; 186  :                     GuessMode = PROG_32_PULLDOWN_0;

  000b1	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 2

; 187  :                     break;

  000b8	eb 22		 jmp	 SHORT $LN27@UpdateProg
$LN25@UpdateProg:

; 188  :                 case 1:
; 189  :                     GuessMode = PROG_32_PULLDOWN_4;

  000ba	c7 45 fc 06 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 6

; 190  :                     break;

  000c1	eb 19		 jmp	 SHORT $LN27@UpdateProg
$LN24@UpdateProg:

; 191  :                 case 2:
; 192  :                     GuessMode = PROG_32_PULLDOWN_3;

  000c3	c7 45 fc 05 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 5

; 193  :                     break;

  000ca	eb 10		 jmp	 SHORT $LN27@UpdateProg
$LN23@UpdateProg:

; 194  :                 case 3:
; 195  :                     GuessMode = PROG_32_PULLDOWN_2;

  000cc	c7 45 fc 04 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 4

; 196  :                     break;

  000d3	eb 07		 jmp	 SHORT $LN27@UpdateProg
$LN22@UpdateProg:

; 197  :                 case 4:
; 198  :                     GuessMode = PROG_32_PULLDOWN_1;

  000d5	c7 45 fc 03 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 3
$LN27@UpdateProg:

; 199  :                     break;
; 200  :                 }
; 201  :             }
; 202  :             else if(ConsecutiveStills == 2)

  000dc	eb 4d		 jmp	 SHORT $LN21@UpdateProg
$LN29@UpdateProg:
  000de	83 3d 00 00 00
	00 02		 cmp	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 2
  000e5	75 44		 jne	 SHORT $LN21@UpdateProg

; 203  :             {
; 204  :                 switch(pInfo->CurrentFrame)

  000e7	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  000ea	8b 48 40	 mov	 ecx, DWORD PTR [eax+64]
  000ed	89 4d f4	 mov	 DWORD PTR tv83[ebp], ecx
  000f0	83 7d f4 04	 cmp	 DWORD PTR tv83[ebp], 4
  000f4	77 35		 ja	 SHORT $LN21@UpdateProg
  000f6	8b 55 f4	 mov	 edx, DWORD PTR tv83[ebp]
  000f9	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN38@UpdateProg[edx*4]
$LN17@UpdateProg:

; 205  :                 {
; 206  :                 case 0:
; 207  :                     GuessMode = PROG_32_PULLDOWN_3;

  00100	c7 45 fc 05 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 5

; 208  :                     break;

  00107	eb 22		 jmp	 SHORT $LN21@UpdateProg
$LN16@UpdateProg:

; 209  :                 case 1:
; 210  :                     GuessMode = PROG_32_PULLDOWN_2;

  00109	c7 45 fc 04 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 4

; 211  :                     break;

  00110	eb 19		 jmp	 SHORT $LN21@UpdateProg
$LN15@UpdateProg:

; 212  :                 case 2:
; 213  :                     GuessMode = PROG_32_PULLDOWN_1;

  00112	c7 45 fc 03 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 3

; 214  :                     break;

  00119	eb 10		 jmp	 SHORT $LN21@UpdateProg
$LN14@UpdateProg:

; 215  :                 case 3:
; 216  :                     GuessMode = PROG_32_PULLDOWN_0;

  0011b	c7 45 fc 02 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 2

; 217  :                     break;

  00122	eb 07		 jmp	 SHORT $LN21@UpdateProg
$LN13@UpdateProg:

; 218  :                 case 4:
; 219  :                     GuessMode = PROG_32_PULLDOWN_4;

  00124	c7 45 fc 06 00
	00 00		 mov	 DWORD PTR _GuessMode$141096[ebp], 6
$LN21@UpdateProg:

; 220  :                     break;
; 221  :                 }
; 222  :             }
; 223  :             if(GuessMode != NORMAL_PROGRESSIVE)

  0012b	83 7d fc 07	 cmp	 DWORD PTR _GuessMode$141096[ebp], 7
  0012f	0f 84 92 00 00
	00		 je	 $LN12@UpdateProg

; 224  :             {
; 225  :                 if(GuessMode != FilmModeBeingDetected)

  00135	8b 45 fc	 mov	 eax, DWORD PTR _GuessMode$141096[ebp]
  00138	3b 05 00 00 00
	00		 cmp	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  0013e	74 28		 je	 SHORT $LN11@UpdateProg

; 226  :                 {
; 227  :                     PatternSpots = 0;

  00140	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 228  :                     FilmModeBeingDetected = GuessMode;

  0014a	8b 4d fc	 mov	 ecx, DWORD PTR _GuessMode$141096[ebp]
  0014d	89 0d 00 00 00
	00		 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, ecx

; 229  :                     LOG(2, _T("StartDetecting %d"), GuessMode);

  00153	8b 55 fc	 mov	 edx, DWORD PTR _GuessMode$141096[ebp]
  00156	52		 push	 edx
  00157	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@OBIBOFFM@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  0015c	6a 02		 push	 2
  0015e	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00163	83 c4 0c	 add	 esp, 12			; 0000000cH

; 230  :                 }
; 231  :                 else

  00166	eb 5d		 jmp	 SHORT $LN10@UpdateProg
$LN11@UpdateProg:

; 232  :                 {
; 233  :                     ++PatternSpots;

  00168	a1 00 00 00 00	 mov	 eax, DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  0016d	83 c0 01	 add	 eax, 1
  00170	a3 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, eax

; 234  :                     if(PatternSpots >= RepeatCount && (ConsecutiveStills == 2))

  00175	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  0017b	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?RepeatCount@@3JA ; RepeatCount
  00181	7c 2f		 jl	 SHORT $LN9@UpdateProg
  00183	83 3d 00 00 00
	00 02		 cmp	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 2
  0018a	75 26		 jne	 SHORT $LN9@UpdateProg

; 235  :                     {
; 236  :                         SetFilmDeinterlaceMode((eFilmPulldownMode)FilmModeBeingDetected);

  0018c	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  00192	52		 push	 edx
  00193	e8 00 00 00 00	 call	 ?SetFilmDeinterlaceMode@@YAXW4eFilmPulldownMode@@@Z ; SetFilmDeinterlaceMode
  00198	83 c4 04	 add	 esp, 4

; 237  :                         LOG(2, _T("Gone to film %d"), FilmModeBeingDetected);

  0019b	a1 00 00 00 00	 mov	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  001a0	50		 push	 eax
  001a1	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@JGNINNHN@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAf?$AAi?$AAl?$AAm?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  001a6	6a 02		 push	 2
  001a8	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001ad	83 c4 0c	 add	 esp, 12			; 0000000cH

; 238  :                     }
; 239  :                     else

  001b0	eb 13		 jmp	 SHORT $LN10@UpdateProg
$LN9@UpdateProg:

; 240  :                     {
; 241  :                         LOG(2, _T("Found again %d"), GuessMode);

  001b2	8b 4d fc	 mov	 ecx, DWORD PTR _GuessMode$141096[ebp]
  001b5	51		 push	 ecx
  001b6	68 00 00 00 00	 push	 OFFSET ??_C@_1BO@BDAJLHCE@?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAg?$AAa?$AAi?$AAn?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  001bb	6a 02		 push	 2
  001bd	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001c2	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN10@UpdateProg:

; 242  :                     }
; 243  :                 }
; 244  :             }
; 245  :             else

  001c5	eb 27		 jmp	 SHORT $LN30@UpdateProg
$LN12@UpdateProg:

; 246  :             {
; 247  :                 PatternSpots = 0;

  001c7	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 248  :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  001d1	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 249  :                 LOG(2, _T("Reset bad pattern"), GuessMode);

  001db	8b 55 fc	 mov	 edx, DWORD PTR _GuessMode$141096[ebp]
  001de	52		 push	 edx
  001df	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@MAJDKLAB@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAb?$AAa?$AAd?$AA?5?$AAp?$AAa?$AAt?$AAt?$AAe?$AAr?$AAn?$AA?$AA@
  001e4	6a 02		 push	 2
  001e6	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001eb	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN30@UpdateProg:

; 250  :             }
; 251  :         }
; 252  :         ConsecutiveStills = 0;

  001ee	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0
  001f8	e9 97 00 00 00	 jmp	 $LN35@UpdateProg
$LN33@UpdateProg:

; 253  :     }
; 254  :     // if the diff is below the low threshold then
; 255  :     // we are seeing a static image
; 256  :     // see if we were expecting the same image to lock onto a film mode
; 257  :     else if(pInfo->FieldDiff < ThresholdStill)

  001fd	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00200	8b 48 58	 mov	 ecx, DWORD PTR [eax+88]
  00203	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?ThresholdStill@@3JA ; ThresholdStill
  00209	7d 53		 jge	 SHORT $LN5@UpdateProg

; 258  :     {
; 259  :         if(!IsFilmMode())

  0020b	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  00210	85 c0		 test	 eax, eax
  00212	75 48		 jne	 SHORT $LN4@UpdateProg

; 260  :         {
; 261  :             ++ConsecutiveStills;

  00214	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  0021a	83 c2 01	 add	 edx, 1
  0021d	89 15 00 00 00
	00		 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, edx

; 262  :             if(ProgExpectChange(pInfo, FilmModeBeingDetected))

  00223	a1 00 00 00 00	 mov	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  00228	50		 push	 eax
  00229	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  0022c	51		 push	 ecx
  0022d	e8 00 00 00 00	 call	 ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
  00232	83 c4 08	 add	 esp, 8
  00235	85 c0		 test	 eax, eax
  00237	74 23		 je	 SHORT $LN4@UpdateProg

; 263  :             {
; 264  :                 PatternSpots = 0;

  00239	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 265  :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  00243	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 266  :                 LOG(2, _T("Reset found still when expecting change"));

  0024d	68 00 00 00 00	 push	 OFFSET ??_C@_1FA@DODPJDNN@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?5?$AAw?$AAh?$AAe?$AAn?$AA?5?$AAe?$AAx?$AAp?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg@
  00252	6a 02		 push	 2
  00254	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00259	83 c4 08	 add	 esp, 8
$LN4@UpdateProg:

; 267  :             }
; 268  :         }
; 269  :     }
; 270  :     // if we're in a film mode carry on but if we're trying to lock reset
; 271  :     // as the evidence in inconclusive
; 272  :     else

  0025c	eb 36		 jmp	 SHORT $LN35@UpdateProg
$LN5@UpdateProg:

; 273  :     {
; 274  :         if(!IsFilmMode())

  0025e	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  00263	85 c0		 test	 eax, eax
  00265	75 2d		 jne	 SHORT $LN35@UpdateProg

; 275  :         {
; 276  :             ConsecutiveStills = 0;

  00267	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 277  :             PatternSpots = 0;

  00271	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 278  :             FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  0027b	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 279  :             LOG(2, _T("Reset neither change nor still"));

  00285	68 00 00 00 00	 push	 OFFSET ??_C@_1DO@IEPPJGPF@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAn?$AAe?$AAi?$AAt?$AAh?$AAe?$AAr?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AA?5?$AAn?$AAo?$AAr?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?$AA@
  0028a	6a 02		 push	 2
  0028c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00291	83 c4 08	 add	 esp, 8
$LN35@UpdateProg:

; 280  :         }
; 281  :     }
; 282  : }

  00294	8b e5		 mov	 esp, ebp
  00296	5d		 pop	 ebp
  00297	c3		 ret	 0
$LN37@UpdateProg:
  00298	00 00 00 00	 DD	 $LN26@UpdateProg
  0029c	00 00 00 00	 DD	 $LN25@UpdateProg
  002a0	00 00 00 00	 DD	 $LN24@UpdateProg
  002a4	00 00 00 00	 DD	 $LN23@UpdateProg
  002a8	00 00 00 00	 DD	 $LN22@UpdateProg
$LN38@UpdateProg:
  002ac	00 00 00 00	 DD	 $LN17@UpdateProg
  002b0	00 00 00 00	 DD	 $LN16@UpdateProg
  002b4	00 00 00 00	 DD	 $LN15@UpdateProg
  002b8	00 00 00 00	 DD	 $LN14@UpdateProg
  002bc	00 00 00 00	 DD	 $LN13@UpdateProg
?UpdateProgPulldownModeNTSC@@YAXPAUTDeinterlaceInfo@@@Z ENDP ; UpdateProgPulldownModeNTSC
_TEXT	ENDS
PUBLIC	?UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z ; UpdateProgPulldownModePAL
; Function compile flags: /Odtp
;	COMDAT ?UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z
_TEXT	SEGMENT
tv79 = -8						; size = 4
_GuessMode$141053 = -4					; size = 4
_pInfo$ = 8						; size = 4
?UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z PROC ; UpdateProgPulldownModePAL, COMDAT

; 41   : {

  00000	55		 push	 ebp
  00001	8b ec		 mov	 ebp, esp
  00003	83 ec 08	 sub	 esp, 8

; 42   :     static int ConsecutiveStills = 0;
; 43   :     static int PatternSpots = 0;
; 44   :     static eProgressivePulldownMode FilmModeBeingDetected = NORMAL_PROGRESSIVE;
; 45   : 
; 46   :     if(pInfo == NULL)

  00006	83 7d 08 00	 cmp	 DWORD PTR _pInfo$[ebp], 0
  0000a	75 23		 jne	 SHORT $LN24@UpdateProg@2

; 47   :     {
; 48   :         ConsecutiveStills = 0;

  0000c	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 49   :         PatternSpots = 0;

  00016	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 50   :         FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  00020	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 51   :         return;

  0002a	e9 04 02 00 00	 jmp	 $LN25@UpdateProg@2
$LN24@UpdateProg@2:

; 52   :     }
; 53   : 
; 54   :     // if the diff is above the high threshold then
; 55   :     // we are seeing a diff, so see if we were expecting on or not
; 56   :     if(pInfo->FieldDiff > ThresholdMotion)

  0002f	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  00032	8b 48 58	 mov	 ecx, DWORD PTR [eax+88]
  00035	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?ThresholdMotion@@3JA ; ThresholdMotion
  0003b	0f 8e 5b 01 00
	00		 jle	 $LN23@UpdateProg@2

; 57   :     {
; 58   :         if(IsFilmMode())

  00041	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  00046	85 c0		 test	 eax, eax
  00048	74 3e		 je	 SHORT $LN22@UpdateProg@2

; 59   :         {
; 60   :             if(!ProgExpectChange(pInfo, GetProgMode()))

  0004a	e8 00 00 00 00	 call	 ?GetProgMode@@YA?AW4eProgressivePulldownMode@@XZ ; GetProgMode
  0004f	50		 push	 eax
  00050	8b 55 08	 mov	 edx, DWORD PTR _pInfo$[ebp]
  00053	52		 push	 edx
  00054	e8 00 00 00 00	 call	 ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
  00059	83 c4 08	 add	 esp, 8
  0005c	85 c0		 test	 eax, eax
  0005e	75 23		 jne	 SHORT $LN21@UpdateProg@2

; 61   :             {
; 62   :                 // Go back to video
; 63   :                 SetVideoDeinterlaceMode(0);

  00060	6a 00		 push	 0
  00062	e8 00 00 00 00	 call	 ?SetVideoDeinterlaceMode@@YAXH@Z ; SetVideoDeinterlaceMode
  00067	83 c4 04	 add	 esp, 4

; 64   :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  0006a	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 65   :                 LOG(2, _T("Gone back to video"));

  00074	68 00 00 00 00	 push	 OFFSET ??_C@_1CG@IGGLBDCJ@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAb?$AAa?$AAc?$AAk?$AA?5?$AAt?$AAo?$AA?5?$AAv?$AAi?$AAd?$AAe?$AAo?$AA?$AA@
  00079	6a 02		 push	 2
  0007b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00080	83 c4 08	 add	 esp, 8
$LN21@UpdateProg@2:

; 66   :             }
; 67   :         }
; 68   :         else

  00083	e9 05 01 00 00	 jmp	 $LN20@UpdateProg@2
$LN22@UpdateProg@2:

; 69   :         {
; 70   :             eProgressivePulldownMode GuessMode = NORMAL_PROGRESSIVE;

  00088	c7 45 fc 07 00
	00 00		 mov	 DWORD PTR _GuessMode$141053[ebp], 7

; 71   :             if(ConsecutiveStills == 1)

  0008f	83 3d 00 00 00
	00 01		 cmp	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 1
  00096	75 3b		 jne	 SHORT $LN19@UpdateProg@2

; 72   :             {
; 73   :                 switch(pInfo->CurrentFrame)

  00098	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0009b	8b 48 40	 mov	 ecx, DWORD PTR [eax+64]
  0009e	89 4d f8	 mov	 DWORD PTR tv79[ebp], ecx
  000a1	83 7d f8 03	 cmp	 DWORD PTR tv79[ebp], 3
  000a5	77 2c		 ja	 SHORT $LN19@UpdateProg@2
  000a7	8b 55 f8	 mov	 edx, DWORD PTR tv79[ebp]
  000aa	ff 24 95 00 00
	00 00		 jmp	 DWORD PTR $LN27@UpdateProg@2[edx*4]
$LN16@UpdateProg@2:

; 74   :                 {
; 75   :                 case 0:
; 76   :                     GuessMode = PROG_22_PULLDOWN_EVEN;

  000b1	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _GuessMode$141053[ebp], 1

; 77   :                     break;

  000b8	eb 19		 jmp	 SHORT $LN19@UpdateProg@2
$LN15@UpdateProg@2:

; 78   :                 case 1:
; 79   :                     GuessMode = PROG_22_PULLDOWN_ODD;

  000ba	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _GuessMode$141053[ebp], 0

; 80   :                     break;

  000c1	eb 10		 jmp	 SHORT $LN19@UpdateProg@2
$LN14@UpdateProg@2:

; 81   :                 case 2:
; 82   :                     GuessMode = PROG_22_PULLDOWN_EVEN;

  000c3	c7 45 fc 01 00
	00 00		 mov	 DWORD PTR _GuessMode$141053[ebp], 1

; 83   :                     break;

  000ca	eb 07		 jmp	 SHORT $LN19@UpdateProg@2
$LN13@UpdateProg@2:

; 84   :                 case 3:
; 85   :                     GuessMode = PROG_22_PULLDOWN_ODD;

  000cc	c7 45 fc 00 00
	00 00		 mov	 DWORD PTR _GuessMode$141053[ebp], 0
$LN19@UpdateProg@2:

; 86   :                     break;
; 87   :                 }
; 88   :             }
; 89   :             if(GuessMode != NORMAL_PROGRESSIVE)

  000d3	83 7d fc 07	 cmp	 DWORD PTR _GuessMode$141053[ebp], 7
  000d7	0f 84 89 00 00
	00		 je	 $LN12@UpdateProg@2

; 90   :             {
; 91   :                 if(GuessMode != FilmModeBeingDetected)

  000dd	8b 45 fc	 mov	 eax, DWORD PTR _GuessMode$141053[ebp]
  000e0	3b 05 00 00 00
	00		 cmp	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  000e6	74 28		 je	 SHORT $LN11@UpdateProg@2

; 92   :                 {
; 93   :                     PatternSpots = 0;

  000e8	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 94   :                     FilmModeBeingDetected = GuessMode;

  000f2	8b 4d fc	 mov	 ecx, DWORD PTR _GuessMode$141053[ebp]
  000f5	89 0d 00 00 00
	00		 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, ecx

; 95   :                     LOG(2, _T("StartDetecting %d"), GuessMode);

  000fb	8b 55 fc	 mov	 edx, DWORD PTR _GuessMode$141053[ebp]
  000fe	52		 push	 edx
  000ff	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@OBIBOFFM@?$AAS?$AAt?$AAa?$AAr?$AAt?$AAD?$AAe?$AAt?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  00104	6a 02		 push	 2
  00106	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0010b	83 c4 0c	 add	 esp, 12			; 0000000cH

; 96   :                 }
; 97   :                 else

  0010e	eb 54		 jmp	 SHORT $LN10@UpdateProg@2
$LN11@UpdateProg@2:

; 98   :                 {
; 99   :                     ++PatternSpots;

  00110	a1 00 00 00 00	 mov	 eax, DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  00115	83 c0 01	 add	 eax, 1
  00118	a3 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, eax

; 100  :                     if(PatternSpots >= RepeatCount)

  0011d	8b 0d 00 00 00
	00		 mov	 ecx, DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  00123	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?RepeatCount@@3JA ; RepeatCount
  00129	7c 26		 jl	 SHORT $LN9@UpdateProg@2

; 101  :                     {
; 102  :                         SetFilmDeinterlaceMode((eFilmPulldownMode)FilmModeBeingDetected);

  0012b	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  00131	52		 push	 edx
  00132	e8 00 00 00 00	 call	 ?SetFilmDeinterlaceMode@@YAXW4eFilmPulldownMode@@@Z ; SetFilmDeinterlaceMode
  00137	83 c4 04	 add	 esp, 4

; 103  :                         LOG(2, _T("Gone to film %d"), FilmModeBeingDetected);

  0013a	a1 00 00 00 00	 mov	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  0013f	50		 push	 eax
  00140	68 00 00 00 00	 push	 OFFSET ??_C@_1CA@JGNINNHN@?$AAG?$AAo?$AAn?$AAe?$AA?5?$AAt?$AAo?$AA?5?$AAf?$AAi?$AAl?$AAm?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  00145	6a 02		 push	 2
  00147	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0014c	83 c4 0c	 add	 esp, 12			; 0000000cH

; 104  :                     }
; 105  :                     else

  0014f	eb 13		 jmp	 SHORT $LN10@UpdateProg@2
$LN9@UpdateProg@2:

; 106  :                     {
; 107  :                         LOG(2, _T("Found again %d"), GuessMode);

  00151	8b 4d fc	 mov	 ecx, DWORD PTR _GuessMode$141053[ebp]
  00154	51		 push	 ecx
  00155	68 00 00 00 00	 push	 OFFSET ??_C@_1BO@BDAJLHCE@?$AAF?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAa?$AAg?$AAa?$AAi?$AAn?$AA?5?$AA?$CF?$AAd?$AA?$AA@
  0015a	6a 02		 push	 2
  0015c	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00161	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN10@UpdateProg@2:

; 108  :                     }
; 109  :                 }
; 110  :             }
; 111  :             else

  00164	eb 27		 jmp	 SHORT $LN20@UpdateProg@2
$LN12@UpdateProg@2:

; 112  :             {
; 113  :                 PatternSpots = 0;

  00166	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 114  :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  00170	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 115  :                 LOG(2, _T("Reset bad pattern"), GuessMode);

  0017a	8b 55 fc	 mov	 edx, DWORD PTR _GuessMode$141053[ebp]
  0017d	52		 push	 edx
  0017e	68 00 00 00 00	 push	 OFFSET ??_C@_1CE@MAJDKLAB@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAb?$AAa?$AAd?$AA?5?$AAp?$AAa?$AAt?$AAt?$AAe?$AAr?$AAn?$AA?$AA@
  00183	6a 02		 push	 2
  00185	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  0018a	83 c4 0c	 add	 esp, 12			; 0000000cH
$LN20@UpdateProg@2:

; 116  :             }
; 117  :         }
; 118  :         ConsecutiveStills = 0;

  0018d	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0
  00197	e9 97 00 00 00	 jmp	 $LN25@UpdateProg@2
$LN23@UpdateProg@2:

; 119  :     }
; 120  :     // if the diff is below the low threshold then
; 121  :     // we are seeing a static image
; 122  :     // see if we were expecting the same image to lock onto a film mode
; 123  :     else if(pInfo->FieldDiff < ThresholdStill)

  0019c	8b 45 08	 mov	 eax, DWORD PTR _pInfo$[ebp]
  0019f	8b 48 58	 mov	 ecx, DWORD PTR [eax+88]
  001a2	3b 0d 00 00 00
	00		 cmp	 ecx, DWORD PTR ?ThresholdStill@@3JA ; ThresholdStill
  001a8	7d 53		 jge	 SHORT $LN5@UpdateProg@2

; 124  :     {
; 125  :         if(!IsFilmMode())

  001aa	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  001af	85 c0		 test	 eax, eax
  001b1	75 48		 jne	 SHORT $LN4@UpdateProg@2

; 126  :         {
; 127  :             ++ConsecutiveStills;

  001b3	8b 15 00 00 00
	00		 mov	 edx, DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA
  001b9	83 c2 01	 add	 edx, 1
  001bc	89 15 00 00 00
	00		 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, edx

; 128  :             if(ProgExpectChange(pInfo, FilmModeBeingDetected))

  001c2	a1 00 00 00 00	 mov	 eax, DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A
  001c7	50		 push	 eax
  001c8	8b 4d 08	 mov	 ecx, DWORD PTR _pInfo$[ebp]
  001cb	51		 push	 ecx
  001cc	e8 00 00 00 00	 call	 ?ProgExpectChange@@YAHPAUTDeinterlaceInfo@@W4eProgressivePulldownMode@@@Z ; ProgExpectChange
  001d1	83 c4 08	 add	 esp, 8
  001d4	85 c0		 test	 eax, eax
  001d6	74 23		 je	 SHORT $LN4@UpdateProg@2

; 129  :             {
; 130  :                 PatternSpots = 0;

  001d8	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 131  :                 FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  001e2	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 132  :                 LOG(2, _T("Reset found still when expecting change"));

  001ec	68 00 00 00 00	 push	 OFFSET ??_C@_1FA@DODPJDNN@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAf?$AAo?$AAu?$AAn?$AAd?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?5?$AAw?$AAh?$AAe?$AAn?$AA?5?$AAe?$AAx?$AAp?$AAe?$AAc?$AAt?$AAi?$AAn?$AAg@
  001f1	6a 02		 push	 2
  001f3	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  001f8	83 c4 08	 add	 esp, 8
$LN4@UpdateProg@2:

; 133  :             }
; 134  :         }
; 135  :     }
; 136  :     // if we're in a film mode carry on but if we're trying to lock reset
; 137  :     // as the evidence in inconclusive
; 138  :     else

  001fb	eb 36		 jmp	 SHORT $LN25@UpdateProg@2
$LN5@UpdateProg@2:

; 139  :     {
; 140  :         if(!IsFilmMode())

  001fd	e8 00 00 00 00	 call	 ?IsFilmMode@@YAHXZ	; IsFilmMode
  00202	85 c0		 test	 eax, eax
  00204	75 2d		 jne	 SHORT $LN25@UpdateProg@2

; 141  :         {
; 142  :             ConsecutiveStills = 0;

  00206	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?ConsecutiveStills@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 143  :             PatternSpots = 0;

  00210	c7 05 00 00 00
	00 00 00 00 00	 mov	 DWORD PTR ?PatternSpots@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4HA, 0

; 144  :             FilmModeBeingDetected = NORMAL_PROGRESSIVE;

  0021a	c7 05 00 00 00
	00 07 00 00 00	 mov	 DWORD PTR ?FilmModeBeingDetected@?1??UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z@4W4eProgressivePulldownMode@@A, 7

; 145  :             LOG(2, _T("Reset neither change nor still"));

  00224	68 00 00 00 00	 push	 OFFSET ??_C@_1DO@IEPPJGPF@?$AAR?$AAe?$AAs?$AAe?$AAt?$AA?5?$AAn?$AAe?$AAi?$AAt?$AAh?$AAe?$AAr?$AA?5?$AAc?$AAh?$AAa?$AAn?$AAg?$AAe?$AA?5?$AAn?$AAo?$AAr?$AA?5?$AAs?$AAt?$AAi?$AAl?$AAl?$AA?$AA@
  00229	6a 02		 push	 2
  0022b	e8 00 00 00 00	 call	 ?LOG@@YAXHPB_WZZ	; LOG
  00230	83 c4 08	 add	 esp, 8
$LN25@UpdateProg@2:

; 146  :         }
; 147  :     }
; 148  : }

  00233	8b e5		 mov	 esp, ebp
  00235	5d		 pop	 ebp
  00236	c3		 ret	 0
  00237	90		 npad	 1
$LN27@UpdateProg@2:
  00238	00 00 00 00	 DD	 $LN16@UpdateProg@2
  0023c	00 00 00 00	 DD	 $LN15@UpdateProg@2
  00240	00 00 00 00	 DD	 $LN14@UpdateProg@2
  00244	00 00 00 00	 DD	 $LN13@UpdateProg@2
?UpdateProgPulldownModePAL@@YAXPAUTDeinterlaceInfo@@@Z ENDP ; UpdateProgPulldownModePAL
END
