Function at 0x402170
Capabilities:
Hide graphical window

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2f4
mov eax, dword [0x421018]
xor eax, esp
mov dword [esp + 0x2f0], eax
mov eax, dword [ebp + 0xc]
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
mov edi, dword [ebp + 8]
cmp eax, 0x110
ja 0x402478
je 0x402257
sub eax, 2
je 0x4021eb
sub eax, 0xe
je 0x4021ba
sub eax, 2
jne case.0x402489.276
push 0
push 2
push 0x111
push dword [0x423d80]
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
call fcn.00402120
mov eax, dword [0x423d8c]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
test eax, eax
je 0x40220c
push eax
call esi
mov dword [0x423d8c], 0
mov eax, dword [0x423d88]
test eax, eax
je 0x402222
push eax
call esi
mov dword [0x423d88], 0
mov eax, dword [0x423d90]
test eax, eax
je 0x402238
push eax
call esi
mov dword [0x423d90], 0
mov eax, dword [0x423d84]
test eax, eax
je case.0x402489.276
push eax
call esi
mov dword [0x423d84], 0
jmp case.0x402489.276
test edi, edi
je case.0x402489.276
mov al, byte [0x425052]
push edi
mov dword [0x423d80], edi
mov byte [esp + 0x17], al
call dword [sym.imp.USER32.dll_IsWindow]
mov esi, dword [sym.imp.USER32.dll_SetWindowLongW]
mov ebx, dword [sym.imp.USER32.dll_GetWindowLongW]
test eax, eax
je 0x40229c
cmp byte [esp + 0x13], 0
je 0x40229c
push 0xffffffffffffffec
push edi
call ebx
or eax, 0x400000
push eax
push 0xffffffffffffffec
push edi
call esi
mov al, byte [0x425052]
push 0x3ea
push edi
mov byte [esp + 0x1b], al
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
mov dword [esp + 0x18], eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x4022dd
cmp byte [esp + 0x13], 0
je 0x4022dd
push 0xffffffffffffffec
push dword [esp + 0x18]
call ebx
or eax, 0x400000
push eax
push 0xffffffffffffffec
push dword [esp + 0x1c]
call esi
mov al, byte [0x425052]
push 0x3f8
push edi
mov byte [esp + 0x1b], al
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
mov dword [esp + 0x18], eax
call dword [sym.imp.USER32.dll_IsWindow]
test eax, eax
je 0x40231e
cmp byte [esp + 0x13], 0
je 0x40231e
push 0xffffffffffffffec
push dword [esp + 0x18]
call ebx
or eax, 0x400000
push eax
push 0xffffffffffffffec
push dword [esp + 0x1c]
call esi
push 0x6b
push dword [0x423d64]
call dword [sym.imp.USER32.dll_LoadIconW]
test eax, eax
je 0x402344
push eax
push 1
push 0x80
push dword [0x423d80]
call dword [sym.imp.USER32.dll_SendMessageW]
lea eax, [esp + 0x18]
push eax
push 0x3ea
push edi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea edx, [esp + 0x18]
mov ecx, edi
call fcn.00401c50
push 0x41f2bc
push 0x3f
lea edx, [esp + 0x30]
mov ecx, 0x6c
call fcn.00407ac0
mov esi, dword [sym.imp.USER32.dll_SetDlgItemTextW]
add esp, 8
lea eax, [esp + 0x28]
push eax
push 0x3e8
push edi
call esi
push 0x41f2c8
push 0x3f
lea edx, [esp + 0x30]
mov ecx, 0x6b
call fcn.00407ac0
add esp, 8
lea eax, [esp + 0x28]
push eax
push 0x3e9
push edi
call esi
push 0x42505c
push 0x3ea
push edi
call esi
call fcn.00401ef0
push 0x425466
call dword [sym.imp.KERNEL32.dll_lstrlenW]
test eax, eax
je 0x4023e6
cmp byte [0x425869], 0
mov esi, 1
je 0x4023eb
mov esi, 3
mov ecx, esi
call fcn.00402990
cmp eax, esi
jne 0x40244a
cmp byte [0x425869], 0
mov dword [0x423d78], esi
je 0x40245c
push 0x97
push 0
push 0
push 0
push 0
push 0
push dword [0x423d80]
call dword [sym.imp.USER32.dll_SetWindowPos]
push 0
push dword [0x423d80]
call dword [sym.imp.USER32.dll_ShowWindow]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
push 0x21000110
push 0x40
push 0x112
push edi
call fcn.00402170
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
add eax, 0xfffffeef
cmp eax, 0x27
ja case.0x402489.276
movzx eax, byte [eax + 0x402820]
jmp dword [eax*4 + 0x40280c]
cmp esi, 0x1b5a
je 0x4024a0
cmp esi, 0x1b5c
jne case.0x402489.276
mov eax, dword [0x423d68]
dec eax
mov dword [0x423d68], eax
test eax, eax
jg case.0x402489.276
call fcn.00402120
push 0
cmp esi, 0x1b5a
jne 0x4024e5
push 0x30
push 0x112
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
push 0x3e8
push 0x111
jmp 0x4024c5
movzx ebx, si
shr esi, 0x10
cmp ebx, 0x3e9
jg 0x40261b
je 0x40255b
test ebx, ebx
jle case.0x402489.276
cmp ebx, 2
jle 0x40255b
cmp ebx, 0x3e8
jne case.0x402489.276
test esi, esi
jne case.0x402489.276
call fcn.00402120
mov eax, dword [0x423d70]
test eax, eax
je 0x40253e
push dword [0x423d7c]
push dword [0x423d80]
call eax
test eax, eax
jle 0x40245c
mov ecx, 3
call fcn.00402990
cmp eax, 3
jne 0x402640
mov dword [0x423d78], eax
jmp 0x40245c
test esi, esi
jne case.0x402489.276
mov eax, dword [0x423d74]
test eax, eax
je 0x402588
push dword [0x423d7c]
push edi
call eax
mov ecx, eax
test ecx, ecx
je 0x402588
xor eax, eax
cmp ecx, 0xffffffff
sete al
add eax, 6
jmp 0x4025e7
call fcn.00402120
cmp dword [0x423d80], 0
je 0x4025f0
cmp byte [0x425869], 0
jne 0x4025f0
push str.Exit_
push 0x104
lea edx, [esp + 0xf0]
mov ecx, 0x75
call fcn.00407ac0
add esp, 8
xor eax, eax
cmp byte [0x425052], al
mov ecx, 0x100000
cmovne eax, ecx
or eax, 0x40124
push eax
push 0x41f1d8
lea eax, [esp + 0xf0]
push eax
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp eax, 6
jne 0x40245c
push ebx
push 0x30
push 0x112
push edi
call dword [sym.imp.USER32.dll_PostMessageW]
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
cmp ebx, 0x3f7
jne case.0x402489.276
mov ecx, 2
call fcn.00402990
cmp eax, 2
jne 0x402640
mov dword [0x423d78], eax
jmp 0x40245c
push 0x21000110
push 0x40
jmp 0x4025f3
and esi, 0xfff0
cmp esi, 0x10
jne 0x402672
push 0
push 0x4019e0
push edi
push 0x422a08
push dword [0x423d64]
call dword [sym.imp.USER32.dll_DialogBoxIndirectParamW]
jmp 0x40245c
cmp esi, 0x20
jne 0x40268c
push dword [0x425048]
mov edx, edi
call fcn.00402b00
add esp, 4
jmp 0x40245c
mov ebx, dword [ebp + 0x14]
cmp esi, 0x30
je 0x40272e
cmp esi, 0x40
jne case.0x402489.276
push str.Error_occurred_in_system_module.
push 0x104
lea edx, [esp + 0xf0]
lea ecx, [esi + 0x38]
mov dword [0x423d60], ebx
call fcn.00407ac0
push dword [0x423d60]
lea eax, [esp + 0xb4]
push str.___d_
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
lea eax, [esp + 0xa8]
push eax
lea eax, [esp + 0xec]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatW]
cmp byte [0x425868], 0
jne 0x40272e
cmp byte [0x425869], 0
jne 0x40272e
xor eax, eax
cmp byte [0x425052], al
mov ecx, 0x100000
cmovne eax, ecx
or eax, 0x40010
push eax
push 0x41f1d8
lea eax, [esp + 0xf0]
push eax
push edi
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp dword [0x421dc0], 0
je 0x402744
push ebx
push edi
call dword [sym.imp.USER32.dll_EndDialog]
jmp 0x40245c
push dword [0x423d60]
call dword [sym.imp.USER32.dll_PostQuitMessage]
push edi
call dword [sym.imp.USER32.dll_DestroyWindow]
jmp 0x40245c
mov edi, dword [sym.imp.USER32.dll_GetDlgItem]
push 0x3eb
push dword [0x423d80]
call edi
mov ebx, dword [ebp + 0x14]
cmp eax, ebx
jne 0x402795
push 0
call dword [sym.imp.GDI32.dll_GetStockObject]
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
push 0x3ea
push dword [0x423d80]
call edi
cmp eax, ebx
jne 0x4027cd
push dword [0x423d8c]
mov edx, esi
call fcn.00407810
add esp, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2f0]
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10
push 0x3f8
push dword [0x423d80]
call edi
cmp eax, ebx
jne case.0x402489.276
push dword [0x423d88]
mov edx, esi
call fcn.00407810
mov ecx, dword [esp + 0x300]
add esp, 4
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.0040939c
mov esp, ebp
pop ebp
ret 0x10