Function at 0x451322
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x1d4
mov eax, dword [0x4adadc]
xor eax, esp
mov dword [esp + 0x1d0], eax
mov eax, dword [esp + 0x1e4]
push ebp
mov ebp, dword [esp + 0x1dc]
push esi
mov esi, dword [esp + 0x1e8]
mov dword [esp + 0x1c], eax
mov eax, dword [0x4ae5d8]
push edi
test eax, eax
jne 0x45136b
push str.commctrl_DragListMsg
call dword [sym.imp.USER32.dll_RegisterWindowMessageA]
mov dword [0x4ae5d8], eax
mov edi, dword [esp + 0x1e8]
cmp edi, eax
je 0x451387
cmp edi, 0x111
je 0x451387
cmp edi, 0x2b
je 0x451387
xor al, al
jmp 0x4513c9
push ebx
xor ebx, ebx
cmp dword [ebp + 0x24], ebx
jle 0x4513c6
movzx ecx, si
lea eax, [ebp + 4]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x1c], eax
push ecx
push dword [eax]
call fcn.004512f5
mov edx, eax
mov dword [esp + 0x20], edx
pop ecx
pop ecx
test edx, edx
jne 0x4513e1
mov eax, dword [esp + 0x1c]
inc ebx
mov ecx, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x1c], eax
cmp ebx, dword [ebp + 0x24]
jl 0x45139d
xor al, al
pop ebx
mov ecx, dword [esp + 0x1dc]
pop edi
pop esi
pop ebp
xor ecx, esp
call fcn.004659d6
add esp, 0x1d4
ret
cmp edi, 0x2b
jne 0x45149c
mov eax, dword [esp + 0x24]
lea edi, [esp + 0xc8]
mov ebx, dword [eax + 0x18]
lea esi, [eax + 0x1c]
movsd dword es:[edi], dword [esi]
xor eax, eax
inc eax
push eax
push ebx
movsd dword es:[edi], dword [esi]
mov dword [esp + 0x1c], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
call dword [sym.imp.GDI32.dll_SetMapMode]
mov esi, dword [esp + 0x18]
lea eax, [esp + 0x2c]
push eax
push dword [esi + 0x1c]
call fcn.0046a0b0
pop ecx
push eax
push dword [esi + 0x1c]
push ebx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
push 0x200f
push 6
lea eax, [esp + 0xd0]
push eax
push ebx
call dword [sym.imp.USER32.dll_DrawEdge]
push dword [esi + 0x1c]
call fcn.0046a0b0
pop ecx
push eax
mov eax, dword [esp + 0xd8]
sub eax, dword [esp + 0x34]
sub eax, dword [esp + 0xd0]
push dword [esi + 0x1c]
cdq
sub eax, edx
sar eax, 1
add eax, dword [esp + 0xd4]
push eax
mov eax, dword [esp + 0xdc]
sub eax, dword [esp + 0x38]
sub eax, dword [esp + 0xd4]
cdq
sub eax, edx
sar eax, 1
add eax, dword [esp + 0xd4]
push eax
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
mov al, byte [esp + 0x14]
jmp 0x4513c8
mov ecx, dword [esp + 0x28]
mov ebx, dword [edx]
sub ecx, dword [edx + 4]
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x20], ecx
test ebx, ebx
je 0x4513c6
xor eax, eax
cmp dword [ebx + 0x10], eax
je 0x4513c6
mov byte [esp + 0x1c], al
mov byte [ebp + 0xbc], al
mov eax, dword [ebx]
mov dword [esp + 0x14], 1
mov dword [esp + 0x10], 3
sub eax, 1
je 0x451afb
sub eax, 1
je 0x451aa4
sub eax, 1
je 0x451a5d
sub eax, 1
je 0x451a1b
push 2
pop edx
sub eax, 1
je 0x4518ec
sub eax, edx
je 0x45176b
sub eax, 1
jne 0x4516c0
cmp edi, 0x111
jne 0x451558
cmp ecx, edx
jne 0x4516c0
mov ecx, esi
push 6
shr ecx, 0x10
pop eax
cmp cx, ax
je 0x451543
cmp cx, 7
jne 0x45156c
cmp cx, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
mov ecx, dword [esp + 0x2c]
add esp, 0xc
cmp ecx, edx
jne 0x4516c0
cmp edi, 0x111
jne 0x4516c0
shr esi, 0x10
test si, si
je 0x45157e
cmp si, 5
jne 0x4516c0
mov ecx, dword [esp + 0x18]
push 0
mov edi, dword [ecx + 0x1c]
call dword [sym.imp.USER32.dll_GetDC]
push 0x48
mov esi, eax
push 0x5a
push esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push dword [edi + 8]
call dword [sym.imp.KERNEL32.dll_MulDiv]
push esi
neg eax
push 0
mov dword [esp + 0x94], eax
call dword [sym.imp.USER32.dll_ReleaseDC]
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x98], ecx
mov esi, 0x2bc
mov dword [esp + 0x94], ecx
mov dword [esp + 0x90], ecx
mov word [esp + 0xa1], cx
mov byte [esp + 0xa0], cl
cmp byte [edi + 4], al
push 0x1f
cmovne eax, esi
mov dword [esp + 0xa0], eax
mov al, byte [edi + 0xc]
mov byte [esp + 0xa7], al
mov eax, dword [esp + 0x18]
mov byte [esp + 0xab], al
lea eax, [esp + 0xac]
mov word [esp + 0xa8], cx
mov byte [esp + 0xaa], cl
push dword [edi]
push eax
call fcn.00475190
mov eax, dword [ebp]
add esp, 0xc
mov dword [esp + 0x38], eax
mov ecx, 0x4000
lea eax, [esp + 0x8c]
mov byte [esp + 0xc7], 0
mov dword [esp + 0x40], eax
xor eax, eax
cmp byte [ebp + 0xd0], al
mov dword [esp + 0x34], 0x3c
cmovne eax, ecx
or eax, 0x10041
mov dword [esp + 0x48], eax
lea eax, [esp + 0x34]
push eax
call dword [sym.imp.COMDLG32.dll_ChooseFontA]
test eax, eax
je 0x4516c0
movzx eax, byte [esp + 0xa3]
push eax
mov eax, dword [esp + 0x48]
push 0xa
cdq
pop ecx
idiv ecx
cmp dword [esp + 0xa0], esi
push eax
sete al
movzx eax, al
push eax
lea eax, [esp + 0xb4]
push eax
call fcn.0045e001
mov esi, eax
push esi
push ebp
push ebx
call fcn.0044f73e
push esi
call fcn.0045dfeb
push 2
pop eax
push eax
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x30
push 4
pop edi
mov esi, dword [esp + 0x10]
cmp byte [ebp + 0xbc], 0
je 0x451c6d
mov dword [0x4ae630], 0x24
mov eax, dword [ebp]
mov dword [0x4ae634], eax
mov eax, dword [0x4b27c8]
mov dword [0x4ae638], eax
mov dword [0x4ae640], 0x4ae5e0
movzx ecx, byte [ebp + 0xbf]
movzx eax, byte [ebp + 0xbe]
shl ecx, 8
or ecx, eax
movzx eax, byte [ebp + 0xbd]
shl ecx, 8
or ecx, eax
mov dword [0x4ae644], esi
push 0x4ae630
mov dword [0x4ae63c], ecx
call dword [sym.imp.COMDLG32.dll_ChooseColorA]
test eax, eax
je 0x451c5a
mov al, byte [0x4ae63c]
mov byte [ebp + 0xbd], al
mov eax, dword [0x4ae63c]
shr eax, 8
mov byte [ebp + 0xbe], al
mov al, byte [0x4ae63e]
mov byte [ebp + 0xbf], al
mov eax, dword [esp + 0x14]
mov byte [ebp + 0xc0], al
jmp 0x451c61
cmp edi, 0x111
jne 0x45180c
cmp ecx, dword [esp + 0x14]
jne 0x4517b1
mov eax, esi
lea ecx, [edi - 0x11]
shr eax, 0x10
cmp ax, cx
je 0x45179c
mov dword [esp + 0x24], 0x200
cmp ax, word [esp + 0x24]
jne 0x4517e6
cmp ax, cx
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
mov ecx, dword [esp + 0x2c]
add esp, 0xc
cmp ecx, edx
jne 0x4517e0
mov ecx, esi
push 6
shr ecx, 0x10
pop eax
cmp cx, ax
je 0x4517cb
cmp cx, 7
jne 0x451820
cmp cx, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
mov ecx, dword [esp + 0x2c]
add esp, 0xc
cmp ecx, dword [esp + 0x14]
jne 0x45180c
mov eax, esi
mov ecx, 0x300
shr eax, 0x10
cmp ax, cx
jne 0x4516c0
push edx
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
mov ecx, dword [esp + 0x30]
add esp, 0x10
push 2
pop edx
cmp ecx, edx
jne 0x4516c0
cmp edi, 0x111
jne 0x4516c0
shr esi, 0x10
test si, si
je 0x451832
cmp si, 5
jne 0x4516c0
push 0x58
lea eax, [esp + 0x38]
push 0
push eax
call fcn.00467540
mov esi, dword [esp + 0x24]
add esp, 0xc
cmp dword [ebx + 0x20], 0
mov eax, str.All_Files__._
mov ecx, dword [ebp]
mov edi, 0x104
cmovne eax, dword [ebx + 0x20]
and dword [esp + 0x44], 0
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x4c], eax
lea eax, [esp + 0xd8]
push edi
push eax
mov dword [esp + 0x58], eax
mov eax, dword [esi + 4]
inc eax
mov dword [esp + 0x40], ecx
push eax
push ecx
call dword [sym.imp.USER32.dll_GetDlgItemTextA]
mov eax, dword [ebx + 0x28]
xor ecx, ecx
mov dword [esp + 0x64], eax
movzx eax, byte [ebx + 0x24]
push eax
push ecx
lea eax, [esp + 0x3c]
mov byte [esp + 0x1e3], cl
push eax
push ecx
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], ecx
mov dword [esp + 0x78], ecx
call fcn.004642de
add esp, 0x10
test al, al
je 0x4516c0
lea eax, [esp + 0xd8]
push eax
mov eax, dword [esi + 4]
inc eax
push eax
push dword [ebp]
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push 2
pop eax
push eax
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x10
jmp 0x4516c0
cmp edi, 0x111
jne 0x451982
cmp dword [ebx + 0x20], 0
push 4
pop ecx
je 0x45192e
mov eax, esi
shr eax, 0x10
cmp ax, cx
je 0x451914
cmp ax, 5
jne 0x451928
cmp ax, cx
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
push 4
pop ecx
cmp dword [ebx + 0x20], 0
jne 0x451955
mov eax, esi
shr eax, 0x10
cmp ax, word [esp + 0x10]
je 0x451944
cmp ax, cx
jne 0x451955
cmp ax, word [esp + 0x10]
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
cmp dword [esp + 0x20], edx
jl 0x451982
mov ecx, esi
push 6
shr ecx, 0x10
pop eax
cmp cx, ax
je 0x451971
cmp cx, 7
jne 0x451982
cmp cx, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
cmp byte [ebx + 0x24], 0
je 0x4519d6
push dword [esp + 0x24]
mov ecx, dword [esp + 0x1c]
cmp edi, 0x111
push esi
push dword [ebp]
setne al
movzx eax, al
push eax
push 0
push 0
push dword [ecx + 0x1c]
call fcn.004501f2
add esp, 0x1c
mov dword [esp + 0x1c], eax
test al, 2
je 0x4519cb
push 2
pop eax
push eax
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
mov eax, dword [esp + 0x2c]
add esp, 0x10
and al, 1
mov dword [esp + 0x1c], eax
jmp 0x4516c0
cmp edi, 0x111
jne 0x4516c0
shr esi, 0x10
cmp si, dx
jne 0x4519fc
push dword [ebp]
call dword [sym.imp.USER32.dll_SetCapture]
push dword [esp + 0x14]
jmp 0x4518dc
cmp si, word [esp + 0x14]
mov esi, dword [esp + 0x10]
jne 0x451a13
push esi
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x10
push 4
pop edi
jmp 0x4516c7
cmp edi, 0x111
jne 0x4516c0
push 6
shr esi, 0x10
pop eax
cmp si, ax
je 0x451a3b
cmp si, 7
jne 0x451a4c
cmp si, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
test si, si
je 0x4519f3
cmp si, 5
jne 0x4516c0
jmp 0x4519f3
cmp edi, 0x111
jne 0x4516c0
push 6
shr esi, 0x10
pop eax
cmp si, ax
je 0x451a7d
cmp si, 7
jne 0x451a8e
cmp si, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
test si, si
je 0x451a9d
cmp si, 5
jne 0x4516c0
push 2
jmp 0x4518dc
cmp edi, 0x111
jne 0x4516c0
push 6
shr esi, 0x10
pop eax
cmp si, ax
je 0x451ac4
cmp si, 7
jne 0x451ad5
cmp si, ax
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
test si, si
je 0x451ae4
cmp si, 5
jne 0x4516c0
push dword [esp + 0x28]
push dword [ebp]
call dword [sym.imp.USER32.dll_IsDlgButtonChecked]
test eax, eax
je 0x4516c0
jmp 0x451a9d
cmp edi, 0x111
jne 0x4516c0
cmp byte [ebx + 0x25], 0
jne 0x451b3e
mov eax, esi
lea ecx, [edi - 0x11]
shr eax, 0x10
cmp ax, cx
je 0x451b27
mov edi, 0x200
cmp ax, di
jne 0x451b38
cmp ax, cx
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
cmp byte [ebx + 0x25], 0
je 0x451b68
mov edi, dword [esp + 0x10]
mov eax, esi
shr eax, 0x10
cmp ax, di
je 0x451b57
push 4
pop ecx
cmp ax, cx
jne 0x451b68
cmp ax, di
sete al
movzx eax, al
push eax
push ebp
push ebx
call fcn.004526fa
add esp, 0xc
cmp byte [ebx + 0x25], 0
push 2
pop ecx
jne 0x451b9d
mov eax, esi
mov edi, 0x300
shr eax, 0x10
cmp ax, di
jne 0x451b93
push ecx
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
mov edx, dword [esp + 0x28]
add esp, 0x10
push 2
pop ecx
cmp byte [ebx + 0x25], 0
je 0x4516c0
shr esi, 0x10
cmp si, word [esp + 0x14]
jne 0x451c30
mov eax, dword [edx + 4]
mov ebx, dword [sym.imp.USER32.dll_SendDlgItemMessageA]
inc eax
push 0
push 0
push 0x147
push eax
push dword [ebp]
call ebx
mov ecx, dword [esp + 0x18]
mov edi, eax
push 0
push edi
push 0x149
mov ecx, dword [ecx + 4]
inc ecx
push ecx
push dword [ebp]
call ebx
push 0
push dword [esp + 0x18]
inc eax
push eax
call fcn.0040dbd9
add esp, 0xc
mov esi, eax
push esi
push edi
mov edi, dword [esp + 0x20]
push 0x148
mov ecx, dword [edi + 4]
inc ecx
push ecx
push dword [ebp]
call ebx
mov eax, dword [edi + 4]
push esi
inc eax
push eax
push dword [ebp]
call dword [sym.imp.USER32.dll_SetDlgItemTextA]
push esi
call fcn.0040dab8
mov ebx, dword [esp + 0x30]
push 2
pop eax
push eax
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x14
jmp 0x4516c0
cmp si, 5
jne 0x451c3c
push ecx
jmp 0x4518dc
push 4
pop edi
cmp si, di
jne 0x4516c3
push 0
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x10
jmp 0x4516c3
mov byte [ebp + 0xc0], 0
push edi
push dword [ebp + 0x30]
push ebp
push ebx
call dword [ebx + 0x10]
add esp, 0x10
mov al, byte [esp + 0x1c]
jmp 0x4513c8