Function at 0x47ab98
Capabilities:
Create thread
Get disk information
Get graphical window text

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffe84
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x47b755
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [0x48d4b0]
mov esi, eax
lea edi, [ebx + 0xc]
mov ecx, 0x53
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
mov eax, dword [ebx]
push eax
call sub.user32.dll_IsZoomed
test eax, eax
jne 0x47abe0
mov eax, dword [ebx]
push eax
call sub.user32.dll_IsIconic
test eax, eax
je 0x47ac23
mov eax, dword [0x48d368]
movsx eax, word [eax]
sub eax, 0x16
movsx edx, word [ebx + 0x1b4]
sub eax, edx
mov dword [ebp - 0x17c], eax
fild dword [ebp - 0x17c]
mov eax, dword [0x48d1c4]
fild word [eax]
fdivp st(1)
call fcn.004028ac
mov edx, eax
mov eax, 0x80
call fcn.0040bb7c
mov word [ebx + 0x50c], ax
jmp 0x47ac78
mov eax, dword [0x48d4ac]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetClientRect
mov eax, dword [0x48d4ac]
mov eax, dword [eax + 0xc]
mov edx, dword [0x48d4ac]
sub eax, dword [edx + 4]
movsx edx, word [ebx + 0x1b4]
sub eax, edx
mov dword [ebp - 0x17c], eax
fild dword [ebp - 0x17c]
mov eax, dword [0x48d1c4]
fild word [eax]
fdivp st(1)
call fcn.004028ac
mov edx, eax
mov eax, 0x80
call fcn.0040bb7c
mov word [ebx + 0x50c], ax
mov eax, ebx
call fcn.004232a4
cmp word [ebx + 0x50c], 0
jne 0x47ac99
mov word [ebx + 0x50c], 3
mov eax, ebx
call fcn.004232a4
mov eax, dword [0x48d954]
mov al, byte [eax]
mov byte [ebx + 0x564], al
mov eax, dword [0x48d550]
cmp byte [eax + 0x1984], 0
jne 0x47ad3c
mov edi, dword [0x48d330]
mov di, word [edi]
test di, di
jle 0x47ad3c
mov word [ebp - 6], 1
mov esi, dword [0x48d524]
mov eax, dword [0x48d614]
mov ax, word [eax]
cmp ax, word [ebp - 6]
je 0x47ad30
cmp dword [esi], 0
je 0x47ad30
mov eax, dword [ebx + 0x14]
push eax
mov eax, dword [esi]
mov eax, dword [eax + 0x14]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x47ad30
mov ax, 0x283
call fcn.0040bc04
mov edx, dword [ebx + 0x14]
call fcn.0040f5a0
mov eax, dword [0x48da44]
mov edx, 0x24
call fcn.00411d74
mov eax, dword [0x48d91c]
cmp byte [eax], 0
je 0x47ad3c
mov eax, dword [0x48d550]
mov byte [eax + 0x1984], 1
jmp 0x47ad3c
inc word [ebp - 6]
add esi, 4
dec di
jne 0x47acd2
mov eax, dword [0x48d390]
mov al, byte [eax]
mov byte [ebx + 0x55d], al
call sub.kernel32.dll_GetTickCount
mov edx, dword [0x48d614]
movsx edx, word [edx]
add eax, edx
mov dword [ebx + 0x17c], eax
cmp byte [ebx + 0x55d], 0
je 0x47b125
mov eax, dword [0x48d2bc]
mov esi, eax
lea edi, [ebx + 0x4a4]
mov ecx, 0x16
rep movsd dword es:[edi], dword [esi]
cmp byte [ebx + 0x55d], 0
jle 0x47ad9c
movzx eax, word [ebx + 0x4a6]
imul dword [ebx + 0x4a8]
mov dword [ebx + 0x168], eax
cmp byte [ebx + 0x55d], 0
jle 0x47add3
cmp byte [ebx + 0x55d], 0x1a
jg 0x47add3
mov edx, dword [0x48d830]
mov al, byte [ebx + 0x55d]
call fcn.0041aa4c
test al, al
je 0x47add3
mov eax, dword [0x48d830]
call fcn.00405e78
mov dword [ebx + 0x15c], eax
movsx eax, byte [ebx + 0x55d]
mov edx, dword [0x48d270]
mov esi, dword [edx + eax*4 + 0x98]
mov dword [ebx + 0x178], esi
mov eax, esi
call fcn.0040fd30
fistp qword [ebx + 0x18]
wait
movsx eax, byte [ebx + 0x55d]
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
mov dword [ebp - 0x17c], eax
fild dword [ebp - 0x17c]
fild qword [ebx + 0x18]
fmulp st(1)
fistp qword [ebx + 0x18]
wait
movsx eax, byte [ebx + 0x55d]
mov edx, dword [0x48d9a0]
movzx eax, word [edx + eax*2 + 0x4c]
shr eax, 4
movzx edx, word [ebx + 0x50c]
cmp eax, edx
jbe 0x47ae4d
mov al, byte [ebx + 0x50c]
mov byte [ebx + 0x4fc], al
jmp 0x47ae60
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d9a0]
mov byte [ebx + 0x4fc], al
mov dword [ebx + 0x494], 0xffffffff
mov dword [ebx + 0x498], 0xffffffff
mov al, byte [ebx + 0x55d]
test al, al
jle 0x47ae95
movsx eax, al
mov edx, dword [0x48d340]
cmp byte [edx + eax - 1], 4
jne 0x47ae95
mov byte [ebx + 0x557], 1
push 0x7f00
push 0
call sub.user32.dll_LoadCursorA
push eax
call sub.user32.dll_SetCursor
mov byte [ebx + 0x55b], 1
mov eax, 4
call fcn.004024e8
mov dword [ebx + 0x180], eax
movsx eax, byte [ebx + 0x55d]
cdq
xor eax, edx
sub eax, edx
cmp eax, 3
jl 0x47af16
cmp byte [ebx + 0x55d], 0xfe
jge 0x47aef6
movsx eax, byte [ebx + 0x55d]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [0x48d8cc]
cmp byte [edx + eax*2 + 0x220], 0
jne 0x47af16
cmp byte [ebx + 0x55d], 2
jle 0x47af2f
mov eax, dword [0x48d390]
mov al, byte [eax]
call fcn.0040cdd0
push eax
call sub.kernel32.dll_GetDriveTypeA
cmp eax, 2
jne 0x47af2f
push 7
mov eax, dword [0x48d738]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x180]
mov dword [edx], eax
jmp 0x47af46
push 9
mov eax, dword [0x48d738]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x180]
mov dword [edx], eax
mov byte [ebx + 0x55e], 0
mov eax, dword [ebx + 0x14]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetWindowTextA
mov eax, dword [0x48d370]
mov byte [eax], 0
mov eax, dword [0x48d978]
mov ax, word [eax]
sub ax, 7
mov edx, dword [0x48d530]
mov word [edx], ax
mov eax, dword [0x48d550]
cmp byte [eax + 0x18ac], 2
jne 0x47af8e
mov eax, dword [0x48d530]
mov word [eax], 5
mov dl, byte [ebx + 0x55d]
cmp dl, 0xfe
jge 0x47afac
movsx edx, dl
mov ecx, dword [0x48d404]
cmp dword [ecx + edx*4 + 0x98], 0
jne 0x47b001
cmp byte [ebx + 0x55d], 0
jle 0x47b039
movsx eax, byte [ebx + 0x55d]
mov edx, dword [0x48d340]
mov al, byte [edx + eax - 1]
cmp al, 1
je 0x47b001
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 2
je 0x47b001
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 3
je 0x47b001
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 0xff
jne 0x47b039
push 0
mov eax, dword [0x48e700]
push eax
push 0x8a
mov eax, dword [ebx]
push eax
push 0x14
push 0x50
push 0
mov eax, dword [0x48d530]
movsx eax, word [eax]
push eax
push 0x5000000b
push 0
mov eax, dword [0x48d704]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 4], eax
cmp byte [ebx + 0x55d], 0
jle 0x47b0d0
movsx eax, byte [ebx + 0x55d]
mov edx, dword [0x48d340]
mov al, byte [edx + eax - 1]
cmp al, 1
je 0x47b08e
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 2
je 0x47b08e
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 3
je 0x47b08e
movsx edx, byte [ebx + 0x55d]
mov ecx, dword [0x48d340]
cmp al, 0xff
jne 0x47b0d0
push 0
mov eax, dword [0x48e700]
push eax
push 0xac
mov eax, dword [ebx]
push eax
push 0x14
push 0x2c
movsx eax, word [ebx + 0x1b4]
push eax
mov eax, dword [0x48d530]
movsx eax, word [eax]
add eax, 0x50
inc eax
push eax
push 0x5000000b
push 0
mov eax, dword [0x48d704]
mov eax, dword [eax]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 8], eax
mov eax, dword [0x48d4ac]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetClientRect
cmp byte [ebx + 0x55d], 0
jle 0x47b4d7
push 0
mov eax, dword [0x48e700]
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 [0x48d704]
mov eax, dword [eax + 0x10]
push eax
push 0
call sub.user32.dll_CreateWindowExA
mov dword [ebx + 0x1a4], eax
jmp 0x47b4d7
xor eax, eax
mov dword [ebx + 0x170], eax
xor eax, eax
mov dword [ebx + 0x178], eax
mov byte [ebx + 0x556], 0
mov byte [ebx + 0x55e], 0
cmp dword [ebx + 0x4c], 0
jne 0x47b242
mov eax, dword [0x48d550]
movzx eax, byte [eax + 0x188c]
mov edx, dword [0x48dba0]
mov eax, dword [edx + eax*4]
push eax
mov eax, dword [0x48d370]
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
jne 0x47b1c2
mov byte [ebx + 0x556], 1
mov byte [ebx + 0x55e], 1
mov byte [ebx + 0x55f], 1
lea eax, [ebp - 0x10]
push eax
call sub.kernel32.dll_GetSystemTimeAsFileTime
lea eax, [ebp - 0x18]
push eax
call sub.kernel32.dll_GetSystemTimeAsFileTime
lea eax, [ebx + 0x198]
push eax
lea eax, [ebp - 0x10]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
lea eax, [ebx + 0x190]
push eax
lea eax, [ebp - 0x18]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
mov dword [ebx + 0x28], 0x20
jmp 0x47b22f
lea ecx, [ebp - 0x15c]
mov eax, dword [0x48d370]
xor edx, edx
call fcn.0040f34c
mov eax, dword [ebx + 0x14]
call fcn.00405eac
mov eax, dword [0x48d370]
call fcn.00405e78
mov dword [ebx + 0x14], eax
lea eax, [ebx + 0x198]
push eax
lea eax, [ebp - 0x148]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
lea eax, [ebx + 0x190]
push eax
lea eax, [ebp - 0x158]
push eax
call sub.kernel32.dll_FileTimeToLocalFileTime
mov eax, dword [ebp - 0x15c]
mov dword [ebx + 0x28], eax
cmp byte [ebx + 0x554], 0
jne 0x47b22f
lea edx, [ebp - 0x2c]
lea eax, [ebx + 0x544]
call fcn.00405c48
mov eax, dword [ebx + 0x14]
call fcn.0040fb28
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetWindowTextA
jmp 0x47b292
mov edx, dword [ebx + 0x14]
mov eax, dword [0x48da44]
call fcn.00405c48
mov eax, dword [0x48da44]
call fcn.0040fb08
push 0x47b764
mov eax, dword [0x48da44]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [ebx + 0x14]
call fcn.0040fb28
push eax
mov eax, dword [0x48da44]
push eax
call sub.kernel32.dll_lstrcatA
mov eax, dword [0x48da44]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetWindowTextA
mov byte [ebx + 0x544], 0
cmp byte [ebx + 0x556], 0
jne 0x47b4a3
mov eax, dword [0x48d550]
cmp byte [eax + 0x189f], 0
jbe 0x47b4a3
cmp dword [ebx + 0x4c], 0
jne 0x47b475
mov eax, dword [ebx + 0x14]
call fcn.0040faf0
mov edx, eax
mov eax, dword [0x48d830]
call fcn.00405c48
mov eax, dword [0x48d2b0]
cmp byte [eax], 0
jne 0x47b315
push 0x47b768
mov eax, dword [0x48d830]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
je 0x47b315
push 0x47b76c
mov eax, dword [0x48d830]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
je 0x47b315
push 0x47b770
mov eax, dword [0x48d830]
push eax
call sub.kernel32.dll_lstrcmpiA
test eax, eax
jne 0x47b35f
push 0xffffffffffffffff
mov eax, dword [ebx + 0x14]
push eax
mov eax, dword [0x48e700]
push eax
call sub.shell32.dll_ExtractIconA
mov edx, dword [0x48d498]
mov dword [edx], eax
mov eax, dword [0x48d498]
mov eax, dword [eax]
mov edx, 0xff
call fcn.0040bb7c
mov byte [ebx + 0x55c], al
xor eax, eax
mov al, byte [ebx + 0x55c]
mov edx, 0x32
call fcn.0040bb7c
mov byte [ebx + 0x55b], al
jmp 0x47b366
mov byte [ebx + 0x55b], 0
cmp byte [ebx + 0x55b], 0
jbe 0x47b418
mov eax, dword [0x48db74]
cmp byte [eax], 1
jne 0x47b384
mov byte [ebx + 0x55b], 1
xor eax, eax
mov al, byte [ebx + 0x55b]
shl eax, 2
call fcn.004024e8
mov dword [ebx + 0x180], eax
cmp byte [ebx + 0x82], 3
je 0x47b3b2
mov edx, dword [ebx + 0x14]
mov eax, dword [0x48da44]
call fcn.00405c48
jmp 0x47b3cb
mov eax, dword [0x48d614]
mov ax, word [eax]
call fcn.00412944
mov edx, eax
mov eax, dword [0x48da44]
call fcn.00405c48
mov al, byte [ebx + 0x55b]
dec eax
test al, al
jb 0x47b4a3
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 [0x48da44]
push eax
mov eax, dword [0x48e700]
push eax
call sub.shell32.dll_ExtractIconA
mov edx, dword [ebx + 0x180]
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 0x47b3e2
jmp 0x47b4a3
mov eax, dword [0x48d550]
cmp byte [eax + 0x189f], 1
jne 0x47b4a3
mov eax, 4
call fcn.004024e8
mov dword [ebx + 0x180], eax
mov eax, dword [0x48db3c]
mov word [eax], 0
mov edx, dword [ebx + 0x14]
mov eax, dword [0x48da44]
call fcn.00405c48
mov eax, dword [0x48db3c]
push eax
mov eax, dword [0x48da44]
push eax
mov eax, dword [0x48e700]
push eax
call sub.shell32.dll_ExtractAssociatedIconA
mov edx, dword [ebx + 0x180]
mov dword [edx], eax
mov byte [ebx + 0x55b], 1
jmp 0x47b4a3
mov byte [ebx + 0x55b], 1
mov eax, 4
call fcn.004024e8
mov dword [ebx + 0x180], eax
push 0xd
mov eax, dword [0x48d738]
mov eax, dword [eax]
push eax
call sub.user32.dll_LoadIconA
mov edx, dword [ebx + 0x180]
mov dword [edx], eax
mov dword [ebx + 0x494], 0xffffffff
mov dword [ebx + 0x498], 0xffffffff
mov eax, dword [0x48db64]
cmp byte [eax], 0
je 0x47b4ca
mov eax, ebx
xor edx, edx
call fcn.0046dd98
cmp dword [ebx + 0x4c], 0
jne 0x47b4d7
mov eax, dword [0x48d928]
inc dword [eax]
xor eax, eax
mov dword [ebx + 0x188], eax
mov dword [ebx + 0x18c], eax
mov dword [ebx + 0x16c], 1
mov dword [ebx + 0x484], 0xffffffff
mov dword [ebx + 0x488], 0xffffffff
mov eax, dword [0x48d510]
inc dword [eax]
mov eax, dword [0x48d510]
cmp dword [eax], 1
jne 0x47b53b
mov eax, dword [0x48d808]
mov byte [eax], 0
push 0xffffffffffffffff
push 0
mov eax, dword [0x48d858]
mov eax, dword [eax]
push eax
call sub.user32.dll_InvalidateRect
mov al, 1
call fcn.00444e00
mov al, 1
call fcn.00441408
mov eax, dword [0x48d510]
cmp dword [eax], 1
sete al
call fcn.00464398
mov eax, dword [0x48d510]
cmp dword [eax], 1
jne 0x47b567
mov eax, dword [0x48d5a8]
cmp byte [eax], 0
jne 0x47b567
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetFocus
xor eax, eax
call fcn.00477b88
mov eax, dword [0x48d67c]
cmp dword [eax], 0
jbe 0x47b5cf
push 0xff
mov eax, dword [0x48da44]
push eax
mov eax, dword [ebx]
push eax
call sub.user32.dll_GetWindowTextA
mov dword [ebp - 0x178], 9
mov eax, dword [0x48da44]
mov dword [ebp - 0x16c], eax
movsx eax, word [ebx + 0x534]
mov dword [ebp - 0x160], eax
lea eax, [ebp - 0x178]
push eax
mov eax, dword [0x48d510]
mov eax, dword [eax]
dec eax
push eax
push 0x1307
mov eax, dword [0x48d67c]
mov eax, dword [eax]
push eax
call sub.user32.dll_SendMessageA
mov eax, ebx
call fcn.0047d29c
mov eax, dword [0x48d5c8]
mov byte [eax], 0x13
mov byte [ebx + 0x555], 1
mov eax, dword [0x48d550]
cmp byte [eax + 0x18f2], 0
je 0x47b63a
mov eax, dword [0x48d550]
mov al, byte [eax + 0x1862]
mov byte [ebx + 0x8e], al
mov eax, dword [0x48d550]
mov al, byte [eax + 0x1863]
mov byte [ebx + 0x8d], al
mov eax, dword [0x48d550]
mov edx, dword [eax + 0x1714]
mov dword [ebx + 0x60], edx
mov edx, dword [eax + 0x1718]
mov dword [ebx + 0x64], edx
mov eax, dword [0x48d550]
mov eax, dword [eax + 0x171c]
mov dword [ebx + 0x68], eax
cmp byte [ebx + 0x55b], 0
jbe 0x47b65b
mov eax, dword [ebx + 0x180]
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.0047d4c8
mov eax, ebx
call fcn.0047d308
mov eax, dword [0x48d550]
cmp byte [eax + 0x18f1], 0
je 0x47b6ee
cmp byte [ebx + 0x55d], 0
jne 0x47b6ee
cmp byte [ebx + 0x82], 3
je 0x47b6ee
mov eax, dword [ebx + 0x14]
add eax, 3
push eax
mov ax, 0x267
call fcn.0040bc04
add eax, 3
push eax
call sub.kernel32.dll_lstrcmpA
test eax, eax
je 0x47b6ee
cmp dword [ebx + 0x4c], 0
jne 0x47b6ee
mov eax, dword [0x48d3a0]
cmp byte [eax], 0
jne 0x47b6ee
lea eax, [ebp - 4]
push eax
push 0
movsx eax, word [ebx + 0x534]
neg eax
push eax
push fcn.00455628
push 0x10000
push 0
call sub.kernel32.dll_CreateThread
mov edx, dword [0x48d1f0]
mov dword [edx], eax
push 0xffffffffffffffff
mov eax, dword [0x48d1f0]
mov eax, dword [eax]
push eax
call sub.kernel32.dll_SetThreadPriority
mov al, byte [ebx + 0x55d]
test al, al
jge 0x47b71c
movsx eax, al
mov edx, dword [0x48d270]
cmp dword [edx + eax*4 + 0x98], 1
jne 0x47b71c
push 0
push 0x7e
push 0x111
mov eax, dword [ebx]
push eax
call sub.user32.dll_PostMessageA
mov eax, dword [0x48d818]
cmp byte [eax], 0
jne 0x47b73f
cmp byte [ebx + 0x55d], 0
jle 0x47b747
push 0
push 1
push 4
mov eax, dword [ebx]
push eax
call sub.user32.dll_SetTimer
jmp 0x47b747
mov eax, dword [0x48d818]
mov byte [eax], 0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47b75c
ret