Function at 0x46c23c
Capabilities:
Create thread
Get disk information
Get graphical window text
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc4
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x46cdd1
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x4be6d8]
mov eax, dword [eax]
mov dword [ebx + 0xc], eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_IsZoomed
test eax, eax
jne 0x46c277
mov eax, dword [ebx]
push eax
call sub.user32.dll_IsIconic
test eax, eax
je 0x46c2b1
mov eax, dword [0x4be52c]
movsx eax, word [eax]
sub eax, 0x16
movsx edx, word [ebx + 0x58]
sub eax, edx
mov dword [ebp - 0x3c], eax
fild dword [ebp - 0x3c]
mov eax, dword [0x4be324]
fild word [eax]
fdivp st(1)
call fcn.004028f4
mov edx, eax
mov eax, 0x80
call fcn.004aa570
mov word [ebx + 0x3fc], ax
jmp 0x46c2fd
mov eax, dword [0x4be6d4]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetClientRect
mov eax, dword [0x4be6d4]
mov eax, dword [eax + 0xc]
mov edx, dword [0x4be6d4]
sub eax, dword [edx + 4]
movsx edx, word [ebx + 0x58]
sub eax, edx
mov dword [ebp - 0x3c], eax
fild dword [ebp - 0x3c]
mov eax, dword [0x4be324]
fild word [eax]
fdivp st(1)
call fcn.004028f4
mov edx, eax
mov eax, 0x80
call fcn.004aa570
mov word [ebx + 0x3fc], ax
mov eax, ebx
call fcn.00417aa0
cmp word [ebx + 0x3fc], 0
jne 0x46c31e
mov word [ebx + 0x3fc], 3
mov eax, ebx
call fcn.00417aa0
mov eax, dword [0x4beca4]
mov al, byte [eax]
mov byte [ebx + 0x449], al
mov eax, dword [0x4be55c]
mov al, byte [eax]
mov byte [ebx + 0x442], al
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x4be874]
movsx edx, word [edx]
add eax, edx
mov dword [ebx + 0x30], eax
cmp byte [ebx + 0x442], 0
je 0x46c69a
mov eax, dword [0x4be45c]
mov esi, eax
lea edi, [ebx + 0x15c]
mov ecx, 0x1e
rep movsd dword es:[edi], dword [esi]
cmp byte [ebx + 0x442], 0
jle 0x46c385
movzx eax, word [ebx + 0x15e]
imul dword [ebx + 0x160]
mov dword [ebx + 0x1c], eax
cmp byte [ebx + 0x442], 0
jle 0x46c3b9
cmp byte [ebx + 0x442], 0x1a
jg 0x46c3b9
mov edx, dword [0x4beb38]
mov al, byte [ebx + 0x442]
call fcn.0049e05c
test al, al
je 0x46c3b9
mov eax, dword [0x4beb38]
call fcn.004b8404
mov dword [ebx + 0x10], eax
movsx eax, byte [ebx + 0x442]
mov edx, dword [0x4be408]
mov esi, dword [edx + eax*4 + 0xa8]
mov dword [ebx + 0x2c], esi
mov eax, esi
call fcn.004aef80
mov edi, dword [ebx + 0xc]
fistp qword [edi + 0x10]
wait
movsx eax, byte [ebx + 0x442]
mov edx, dword [0x4becf0]
movzx eax, word [edx + eax*2 + 0x54]
mov dword [ebp - 0x3c], eax
fild dword [ebp - 0x3c]
mov eax, dword [ebx + 0xc]
fild qword [eax + 0x10]
fmulp st(1)
fistp qword [edi + 0x10]
wait
movsx eax, byte [ebx + 0x442]
mov edx, dword [0x4becf0]
movzx eax, word [edx + eax*2 + 0x54]
shr eax, 4
movzx edx, word [ebx + 0x3fc]
cmp eax, edx
jbe 0x46c430
mov al, byte [ebx + 0x3fc]
mov byte [ebx + 0x1d4], al
jmp 0x46c443
movsx edx, byte [ebx + 0x442]
mov ecx, dword [0x4becf0]
mov byte [ebx + 0x1d4], al
mov dword [ebx + 0x14c], 0xffffffff
mov dword [ebx + 0x150], 0xffffffff
mov al, byte [ebx + 0x442]
test al, al
jle 0x46c471
movsx edx, al
mov ecx, dword [0x4be4fc]
cmp byte [ecx + edx - 1], 4
je 0x46c479
cmp al, 0xdf
je 0x46c479
cmp al, 0xde
jne 0x46c480
mov byte [ebx + 0x438], 1
push 0x7f00
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
mov byte [ebx + 0x440], 1
mov eax, 4
call fcn.00402504
mov dword [ebx + 0x34], eax
movsx eax, byte [ebx + 0x442]
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jl 0x46c4fe
cmp byte [ebx + 0x442], 0xfe
jge 0x46c4de
movsx eax, byte [ebx + 0x442]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [0x4bec00]
cmp byte [edx + eax*2 + 0x258], 0
jne 0x46c4fe
cmp byte [ebx + 0x442], 2
jle 0x46c514
mov eax, dword [0x4be55c]
mov al, byte [eax]
call fcn.004ab84c
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x46c514
push 7
mov eax, dword [0x4be9f0]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x34]
mov dword [edx], eax
jmp 0x46c528
push 9
mov eax, dword [0x4be9f0]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x34]
mov dword [edx], eax
mov byte [ebx + 0x443], 0
mov eax, ebx
call fcn.0046c13c
mov eax, dword [0x4be538]
mov byte [eax], 0
mov eax, dword [0x4becd4]
mov ax, word [eax]
sub ax, 7
mov edx, dword [0x4be768]
mov word [edx], ax
mov eax, dword [0x4be784]
cmp byte [eax + 0x18ac], 2
jne 0x46c56b
mov eax, dword [0x4be768]
mov word [eax], 5
mov al, byte [ebx + 0x442]
test al, al
jge 0x46c588
movsx eax, al
mov ecx, dword [0x4be5fc]
cmp dword [ecx + eax*4 + 0xa8], 0
jne 0x46c5ad
mov dl, byte [ebx + 0x442]
test dl, dl
jle 0x46c5e5
movsx eax, dl
mov edx, dword [0x4be4fc]
movsx eax, byte [edx + eax - 1]
mov edx, dword [0x4be9e0]
cmp byte [edx + eax + 9], 0
je 0x46c5e5
push 0
mov eax, dword [0x4bf704]
push eax
push 0x8a
mov eax, dword [ebx]
push eax
push 0x14
push 0x50
push 0
mov eax, dword [0x4be768]
movsx eax, word [eax]
push eax
push 0x5000000b
push 0
mov eax, dword [0x4be9a8]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 4], eax
mov al, byte [ebx + 0x442]
test al, al
jle 0x46c648
movsx eax, al
mov edx, dword [0x4be4fc]
movsx eax, byte [edx + eax - 1]
mov edx, dword [0x4be9e0]
cmp byte [edx + eax + 9], 0
je 0x46c648
push 0
mov eax, dword [0x4bf704]
push eax
push 0xac
mov eax, dword [ebx]
push eax
push 0x14
push 0x2c
movsx eax, word [ebx + 0x58]
push eax
mov eax, dword [0x4be768]
movsx eax, word [eax]
add eax, 0x50
push eax
push 0x5000000b
push 0
mov eax, dword [0x4be9a8]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 8], eax
mov eax, dword [0x4be6d4]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetClientRect
cmp byte [ebx + 0x442], 0
jle 0x46c987
push 0
mov eax, dword [0x4bf704]
push eax
push 0x12d687
mov eax, dword [ebx]
push eax
push 0xa
push 0xa
push 0xa
push 0xa
push 0x50000001
push 0
mov eax, dword [0x4be9a8]
mov eax, dword [eax + 0x10]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 0x48], eax
jmp 0x46c987
xor eax, eax
mov dword [ebx + 0x24], eax
xor eax, eax
mov dword [ebx + 0x2c], eax
mov byte [ebx + 0x437], 0
mov byte [ebx + 0x443], 0
mov eax, dword [ebx + 0xc]
cmp dword [eax + 0x5c], 0
jne 0x46c731
mov eax, dword [0x4be784]
movzx eax, byte [eax + 0x188c]
mov edx, dword [0x4bef64]
mov eax, dword [edx + eax*4]
push eax
mov eax, dword [0x4be538]
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
jne 0x46c731
mov byte [ebx + 0x437], 1
mov byte [ebx + 0x443], 1
mov byte [ebx + 0x444], 1
lea eax, [ebp - 0x10]
push eax
call sub.kernel32.dll_GetSystemTimeAsFileTime
lea eax, [ebp - 0x18]
push eax
call sub.kernel32.dll_GetSystemTimeAsFileTime
mov eax, dword [ebx + 0xc]
add eax, 0x2c
push eax
lea eax, [ebp - 0x10]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
mov eax, dword [ebx + 0xc]
add eax, 0x24
push eax
lea eax, [ebp - 0x18]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
mov eax, dword [ebx + 0xc]
mov dword [eax + 0x20], 0x20
mov eax, ebx
call fcn.0046c13c
cmp byte [ebx + 0x437], 0
jne 0x46c950
mov eax, dword [ebx + 0xc]
cmp dword [eax + 0x3c], 0
jne 0x46c950
mov eax, dword [0x4be784]
cmp byte [eax + 0x189f], 0
jbe 0x46c950
mov esi, dword [ebx + 0xc]
cmp dword [esi + 0x5c], 0
jne 0x46c928
mov eax, dword [esi + 0xc]
call fcn.004aecd8
mov edx, eax
mov eax, dword [0x4beb38]
call fcn.004b81b0
mov eax, dword [0x4be450]
cmp byte [eax], 0
jne 0x46c7cb
push 0x46cde0
mov eax, dword [0x4beb38]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
je 0x46c7cb
push 0x46cde4
mov eax, dword [0x4beb38]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
je 0x46c7cb
push 0x46cde8
mov eax, dword [0x4beb38]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x46c818
push 0xffffffffffffffff
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [0x4bf704]
push eax
call sub.shell32.dll_ExtractIconA
mov edx, dword [0x4be6b0]
mov dword [edx], eax
mov eax, dword [0x4be6b0]
mov eax, dword [eax]
mov edx, 0xff
call fcn.004aa570
mov byte [ebx + 0x441], al
xor eax, eax
mov al, byte [ebx + 0x441]
mov edx, 0x32
call fcn.004aa570
mov byte [ebx + 0x440], al
jmp 0x46c81f
mov byte [ebx + 0x440], 0
cmp byte [ebx + 0x440], 0
jbe 0x46c8ce
mov eax, dword [0x4bef14]
cmp byte [eax], 1
jne 0x46c83d
mov byte [ebx + 0x440], 1
xor eax, eax
mov al, byte [ebx + 0x440]
shl eax, 2
call fcn.00402504
mov dword [ebx + 0x34], eax
mov eax, dword [ebx + 0xc]
cmp byte [eax + 0x96], 3
je 0x46c86b
mov edx, dword [eax + 0xc]
mov eax, dword [0x4bedb0]
call fcn.004b81b0
jmp 0x46c884
mov eax, dword [0x4be874]
mov ax, word [eax]
call fcn.004b1cb8
mov edx, eax
mov eax, dword [0x4bedb0]
call fcn.004b81b0
mov al, byte [ebx + 0x440]
dec eax
test al, al
jb 0x46c950
inc eax
mov byte [ebp - 0x1a], al
mov byte [ebp - 0x19], 0
xor eax, eax
mov al, byte [ebp - 0x19]
push eax
mov eax, dword [0x4bedb0]
push eax
mov eax, dword [0x4bf704]
push eax
call sub.shell32.dll_ExtractIconA
mov edx, dword [ebx + 0x34]
xor ecx, ecx
mov cl, byte [ebp - 0x19]
shl ecx, 2
add edx, ecx
mov dword [edx], eax
inc byte [ebp - 0x19]
dec byte [ebp - 0x1a]
jne 0x46c89b
jmp 0x46c950
mov eax, dword [0x4be784]
cmp byte [eax + 0x189f], 1
jne 0x46c950
mov eax, 4
call fcn.00402504
mov dword [ebx + 0x34], eax
mov eax, dword [0x4beed8]
mov word [eax], 0
mov eax, dword [ebx + 0xc]
mov edx, dword [eax + 0xc]
mov eax, dword [0x4bedb0]
call fcn.004b81b0
mov eax, dword [0x4beed8]
push eax
mov eax, dword [0x4bedb0]
push eax
mov eax, dword [0x4bf704]
push eax
call sub.shell32.dll_ExtractAssociatedIconA
mov edx, dword [ebx + 0x34]
mov dword [edx], eax
mov byte [ebx + 0x440], 1
jmp 0x46c950
mov byte [ebx + 0x440], 1
mov eax, 4
call fcn.00402504
mov dword [ebx + 0x34], eax
push 0xd
mov eax, dword [0x4be9f0]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x34]
mov dword [edx], eax
mov dword [ebx + 0x14c], 0xffffffff
mov dword [ebx + 0x150], 0xffffffff
mov eax, dword [0x4bef04]
cmp byte [eax], 0
je 0x46c977
mov eax, ebx
xor edx, edx
call fcn.0045bb28
mov eax, dword [ebx + 0xc]
cmp dword [eax + 0x5c], 0
jne 0x46c987
mov eax, dword [0x4bec74]
inc dword [eax]
xor eax, eax
mov dword [ebx + 0x3c], eax
mov dword [ebx + 0x40], eax
mov dword [ebx + 0x20], 1
mov dword [ebx + 0x13c], 0xffffffff
mov dword [ebx + 0x140], 0xffffffff
mov eax, dword [0x4be784]
cmp byte [eax + 0x18f2], 0
je 0x46ca06
mov edx, dword [0x4be784]
mov dl, byte [edx + 0x1862]
mov eax, dword [ebx + 0xc]
mov byte [eax + 0xa4], dl
mov edx, dword [0x4be784]
mov dl, byte [edx + 0x1863]
mov byte [eax + 0xa3], dl
mov edx, dword [0x4be784]
mov ecx, dword [edx + 0x1714]
mov dword [eax + 0x74], ecx
mov ecx, dword [edx + 0x1718]
mov dword [eax + 0x78], ecx
mov edx, dword [0x4be784]
mov edx, dword [edx + 0x171c]
mov dword [eax + 0x7c], edx
cmp byte [ebx + 0x440], 0
jbe 0x46ca24
mov eax, dword [ebx + 0x34]
mov eax, dword [eax]
push eax
push 1
push 0x80
mov eax, dword [ebx]
push eax
call sub.user32.dll_SendMessageA
mov eax, ebx
call fcn.0046ee24
mov eax, ebx
call fcn.0046ec34
mov eax, dword [0x4be744]
inc dword [eax]
mov eax, dword [0x4be744]
cmp dword [eax], 1
jne 0x46ca6a
mov eax, dword [0x4beb10]
mov byte [eax], 0
push 0xffffffffffffffff
push 0
mov eax, dword [0x4beb60]
mov eax, dword [eax]
push eax
call sub.user32.dll_InvalidateRect
mov al, 1
call fcn.00428184
mov al, 1
call fcn.004244dc
mov eax, dword [0x4be744]
cmp dword [eax], 1
sete al
call fcn.0044ec28
mov eax, dword [0x4be744]
cmp dword [eax], 1
jne 0x46caaa
mov eax, dword [0x4be7e4]
cmp byte [eax], 0
jne 0x46caaa
mov eax, dword [0x4be450]
cmp byte [eax], 0
je 0x46caaa
mov eax, dword [0x4beb24]
cmp byte [eax], 0
jne 0x46caaa
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetFocus
xor eax, eax
call fcn.00468d20
mov eax, dword [0x4be8e4]
cmp dword [eax], 0
jbe 0x46cb06
push 0xff
mov eax, dword [0x4bedb0]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetWindowTextA
mov dword [ebp - 0x36], 9
mov eax, dword [0x4bedb0]
mov dword [ebp - 0x2a], eax
movsx eax, word [ebx + 0x424]
mov dword [ebp - 0x1e], eax
lea eax, [ebp - 0x36]
push eax
mov eax, dword [0x4be744]
mov eax, dword [eax]
dec eax
push eax
push 0x1307
mov eax, dword [0x4be8e4]
mov eax, dword [eax]
push eax
call sub.user32.dll_SendMessageA
mov eax, ebx
call fcn.0046ebc8
mov al, byte [ebx + 0x442]
cmp al, 0xfe
jge 0x46cb6b
mov edx, dword [0x4be784]
cmp byte [edx + 0x198a], 0
jne 0x46cb6b
movsx edx, al
mov ecx, dword [0x4be5fc]
cmp dword [ecx + edx*4 + 0xa8], 0
je 0x46cb6b
movsx eax, al
mov edx, dword [0x4be5fc]
mov eax, dword [edx + eax*4 + 0xa8]
cmp dword [eax], 0
jle 0x46cb6b
push 0
push 0
push 0x40b
mov eax, dword [ebx]
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [0x4be784]
mov byte [eax + 0x198a], 1
mov eax, dword [0x4be810]
mov byte [eax], 0x13
mov byte [ebx + 0x436], 1
mov eax, dword [0x4be784]
cmp byte [eax + 0x1984], 0
jne 0x46cc1c
mov eax, dword [0x4be784]
movzx eax, byte [eax + 0x188c]
mov edx, dword [0x4bef64]
mov eax, dword [edx + eax*4]
push eax
mov eax, dword [0x4be6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
je 0x46cc1c
mov edi, dword [0x4be4ec]
mov di, word [edi]
test di, di
jle 0x46cc1c
mov word [ebp - 6], 1
mov esi, dword [0x4be754]
mov eax, dword [0x4be874]
mov ax, word [eax]
cmp ax, word [ebp - 6]
je 0x46cc10
cmp dword [esi], 0
je 0x46cc10
mov eax, dword [0x4be6d8]
mov eax, dword [eax]
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [esi]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x46cc10
push 0
push 1
push 0xf
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetTimer
jmp 0x46cc1c
inc word [ebp - 6]
add esi, 4
dec di
jne 0x46cbd0
mov eax, dword [0x4be784]
cmp byte [eax + 0x18f1], 0
je 0x46ccae
cmp byte [ebx + 0x442], 0
jne 0x46ccae
mov eax, dword [ebx + 0xc]
cmp byte [eax + 0x96], 3
je 0x46ccae
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 0xc]
add eax, 3
push eax
mov ax, 0x267
call fcn.004aa600
add eax, 3
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
je 0x46ccae
mov eax, dword [ebx + 0xc]
cmp dword [eax + 0x5c], 0
jne 0x46ccae
mov eax, dword [0x4be570]
cmp byte [eax], 0
jne 0x46ccae
lea eax, [ebp - 4]
push eax
push 0
movsx eax, word [ebx + 0x424]
neg eax
push eax
push fcn.00438d08
push 0x10000
push 0
call sub.kernel32.dll_CreateThread
mov edx, dword [0x4be360]
mov dword [edx], eax
push 0xffffffffffffffff
mov eax, dword [0x4be360]
mov eax, dword [eax]
push eax
call sub.kernel32.dll_SetThreadPriority
mov al, byte [ebx + 0x442]
test al, al
jge 0x46ccdc
movsx eax, al
mov edx, dword [0x4be408]
cmp dword [edx + eax*4 + 0xa8], 1
jne 0x46ccdc
push 0
push 0x7e
push 0x111
mov eax, dword [ebx]
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [0x4bef50]
cmp dword [eax], 0
je 0x46cd5e
mov eax, dword [ebx + 0xc]
mov ecx, dword [eax + 0xc]
mov dl, byte [ebx + 0x442]
mov eax, dword [0x4bef50]
mov eax, dword [eax]
mov eax, dword [eax + 0x164]
call fcn.004a9924
mov esi, eax
mov dword [ebx + 0x84], esi
test esi, esi
je 0x46cd5e
mov ax, word [ebx + 0x424]
mov word [esi + 0x208], ax
mov dx, word [esi + 2]
xor eax, eax
call fcn.004066c4
mov dword [ebx + 0x80], eax
mov eax, dword [ebx + 0x84]
add eax, 0x158
mov edx, dword [ebx + 0xc]
mov dword [edx + 0x6c], eax
mov eax, dword [ebx + 0x84]
add eax, 0x108
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetWindowTextA
mov eax, dword [ebx + 0x84]
mov byte [eax + 5], 1
mov eax, dword [0x4beb20]
cmp byte [eax], 0
jne 0x46cdbb
cmp byte [ebx + 0x442], 0
jle 0x46cdc3
movsx eax, byte [ebx + 0x442]
mov edx, dword [0x4be4fc]
mov al, byte [edx + eax - 1]
cmp al, 1
jl 0x46cd97
movsx edx, byte [ebx + 0x442]
mov ecx, dword [0x4be4fc]
cmp al, 3
jle 0x46cda8
movsx edx, byte [ebx + 0x442]
mov ecx, dword [0x4be4fc]
cmp al, 0xff
jne 0x46cdc3
push 0
push 4
push 0x113
mov eax, dword [ebx]
push eax
call sub.user32.dll_PostMessageA
jmp 0x46cdc3
mov eax, dword [0x4beb20]
mov byte [eax], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46cdd8
ret