Function at 0x4039c0
Capabilities:
Delete directory
Terminate process

Disassembly:
push 0xffffffffffffffff
push reloc.mscms.dll_UninstallColorProfileA
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x930
push ebx
push ebp
push esi
mov ebp, ecx
push edi
lea ecx, [esp + 0x838]
call fcn.004066c0
xor ebx, ebx
mov dword [esp + 0x948], ebx
mov dword [esp + 0x1c], ebx
call fcn.0041b438
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [esp + 0x10], eax
lea eax, [ebp + 0x800]
mov edi, 0x424db2
mov esi, eax
mov ecx, 1
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
mov byte [esp + 0x948], 1
jne 0x403a34
push 0xfffffffffffffffd
call fcn.004090ef
lea edx, [esp + 0x28]
sub edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403a40
lea eax, [esp + 0x28]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403a51
sub eax, edx
cmp byte [esp + eax + 0x27], 0x5c
jne 0x403a75
lea eax, [esp + 0x28]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403a68
sub eax, edx
mov byte [esp + eax + 0x27], cl
push 0x425148
push str.filelist.txt
call fcn.00409644
mov edi, eax
add esp, 8
cmp edi, ebx
mov dword [esp + 0x14], edi
je 0x4040bf
mov al, byte [edi + 0xc]
xor esi, esi
test al, 0x10
mov dword [esp + 0x20], esi
jne 0x403ac4
push edi
lea eax, [esp + 0x43c]
push 0x400
push eax
call fcn.0040a950
mov al, byte [edi + 0xc]
add esp, 0xc
inc esi
test al, 0x10
je 0x403aa2
mov dword [esp + 0x20], esi
push edi
call fcn.0040a8c7
mov al, byte [edi + 0xc]
add esp, 4
test al, 0x10
jne 0x403ce9
mov ebp, dword [esp + 0x950]
mov edi, dword [esp + 0x14]
push edi
lea ecx, [esp + 0x43c]
push 0x400
push ecx
mov byte [esp + 0x444], 0
call fcn.0040a950
lea edx, [esp + 0x444]
push 0xd
push edx
call fcn.00409670
add esp, 0x14
test eax, eax
je 0x403b17
mov byte [eax], 0
lea eax, [esp + 0x438]
push 0xa
push eax
call fcn.00409670
add esp, 8
test eax, eax
je 0x403b30
mov byte [eax], 0
lea ecx, [esp + 0x438]
push 0x425134
push ecx
call fcn.00409130
add esp, 8
test eax, eax
jne 0x403b62
lea edx, [esp + 0x438]
push 0x425130
push edx
call fcn.00409130
add esp, 8
test eax, eax
je 0x403b69
mov byte [eax], 0
mov bl, 1
jmp 0x403b6b
xor bl, bl
lea eax, [esp + 0x438]
mov byte [esp + 0x18], bl
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403b80
sub eax, edx
push eax
lea eax, [esp + 0x43c]
push eax
lea ecx, [esp + 0x18]
call fcn.004035f0
lea ecx, [esp + 0x10]
call fcn.00403690
lea ecx, [esp + 0x10]
call fcn.00403700
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x438]
sub edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403bc0
lea ecx, [esp + 0x438]
push ecx
call fcn.0040a8c2
lea edx, [esp + 0x43c]
push 0x2c
push edx
call fcn.00409670
mov esi, eax
add esp, 0xc
test esi, esi
je 0x403cdf
inc esi
push esi
call fcn.0040a8c2
push 0x2c
push esi
call fcn.00409670
add esp, 0xc
test eax, eax
je 0x403cdf
inc eax
lea edx, [esp + 0x12c]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403c17
lea eax, [esp + 0x12c]
lea edx, [eax + 1]
jmp 0x403c30
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403c30
sub eax, edx
mov dword [esp + 0x24], eax
je 0x403cdf
lea eax, [esp + 0x12c]
push 0x42512c
push eax
call fcn.00409130
mov esi, eax
add esp, 8
test esi, esi
jne 0x403c75
lea ecx, [esp + 0x12c]
push 0x425128
push ecx
call fcn.00409130
add esp, 8
mov esi, eax
lea edx, [esp + 0x12c]
push edx
lea eax, [esp + 0x2c]
push eax
lea ecx, [esp + 0x33c]
push str._s_s
push ecx
call fcn.00408f1d
add esp, 0x10
test bl, bl
jne 0x403cb1
test esi, esi
jne 0x403cb1
lea edx, [esp + 0x334]
push edx
call fcn.0040a1ff
add esp, 4
jmp 0x403cca
mov eax, dword [esp + 0x18]
push eax
lea ecx, [esp + 0x338]
push ecx
lea ecx, [esp + 0x840]
call fcn.00406410
inc dword [esp + 0x1c]
fild dword [esp + 0x1c]
fidiv dword [esp + 0x20]
fmul dword [0x425124]
fstp dword [ebp]
test byte [edi + 0xc], 0x10
je 0x403ae3
mov esi, dword [esp + 0x14]
push esi
call fcn.0040a8c7
add esp, 4
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
test byte [esi + 0xc], 0x10
jne 0x403ff0
jmp 0x403d10
mov edx, dword [esp + 0x14]
push edx
lea eax, [esp + 0x43c]
push 0x400
push eax
mov byte [esp + 0x444], 0
call fcn.0040a950
lea ecx, [esp + 0x444]
push 0xd
push ecx
call fcn.00409670
add esp, 0x14
test eax, eax
je 0x403d48
mov byte [eax], 0
lea edx, [esp + 0x438]
push 0xa
push edx
call fcn.00409670
add esp, 8
test eax, eax
je 0x403d61
mov byte [eax], 0
lea eax, [esp + 0x438]
push 0x425134
push eax
call fcn.00409130
add esp, 8
test eax, eax
jne 0x403d93
lea ecx, [esp + 0x438]
push 0x425130
push ecx
call fcn.00409130
add esp, 8
test eax, eax
je 0x403d9a
mov byte [eax], 0
mov bl, 1
jmp 0x403d9c
xor bl, bl
lea eax, [esp + 0x438]
mov byte [esp + 0x18], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403db0
sub eax, edx
push eax
lea edx, [esp + 0x43c]
push edx
lea ecx, [esp + 0x18]
call fcn.004035f0
lea ecx, [esp + 0x10]
call fcn.00403690
lea ecx, [esp + 0x10]
call fcn.00403700
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x438]
sub edx, eax
lea ebx, [ebx]
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403df0
lea eax, [esp + 0x438]
push eax
call fcn.0040a8c2
lea ecx, [esp + 0x43c]
push 0x2c
push ecx
call fcn.00409670
mov esi, eax
add esp, 0xc
test esi, esi
je 0x403fe2
inc esi
push esi
call fcn.0040a8c2
push 0x2c
push esi
call fcn.00409670
add esp, 0xc
test eax, eax
je 0x403fe2
inc eax
lea edx, [esp + 0x12c]
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x403e47
lea eax, [esp + 0x12c]
lea edx, [eax + 1]
jmp 0x403e60
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403e60
sub eax, edx
mov dword [esp + 0x24], eax
je 0x403fe2
lea edx, [esp + 0x12c]
push 0x42512c
push edx
call fcn.00409130
mov esi, eax
add esp, 8
test esi, esi
jne 0x403ea5
lea eax, [esp + 0x12c]
push 0x425128
push eax
call fcn.00409130
add esp, 8
mov esi, eax
lea ecx, [esp + 0x12c]
push ecx
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x33c]
push str._s_s
push eax
call fcn.00408f1d
add esp, 0x10
test bl, bl
jne 0x403ecf
test esi, esi
je 0x403ee8
mov ecx, dword [esp + 0x18]
push ecx
lea edx, [esp + 0x338]
push edx
lea ecx, [esp + 0x840]
call fcn.00406410
xor eax, eax
lea ebx, [ebx]
mov cl, byte [esp + eax + 0x334]
mov byte [esp + eax + 0x230], cl
inc eax
test cl, cl
jne 0x403ef0
lea eax, [esp + 0x334]
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x403f10
sub eax, edx
mov ebp, eax
lea esi, [esp + 0x28]
lea eax, [esp + 0x230]
mov dl, byte [eax]
mov bl, byte [esi]
mov cl, dl
cmp dl, bl
jne 0x403f4e
test cl, cl
je 0x403f4a
mov dl, byte [eax + 1]
mov bl, byte [esi + 1]
mov cl, dl
cmp dl, bl
jne 0x403f4e
add eax, 2
add esi, 2
test cl, cl
jne 0x403f26
xor eax, eax
jmp 0x403f53
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x403fe2
mov ebx, dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
lea edi, [esp + 0x334]
lea eax, [esp + 0x230]
sub edi, eax
lea ecx, [edi + ebp]
cmp byte [esp + ecx + 0x230], 0x5c
jne 0x403fa9
push ebp
lea edx, [esp + 0x338]
push edx
lea eax, [esp + 0x238]
push eax
call fcn.0040a230
add esp, 0xc
lea ecx, [esp + 0x230]
push ecx
mov byte [esp + ebp + 0x234], 0
call ebx
dec ebp
lea esi, [esp + 0x28]
lea eax, [esp + 0x230]
mov dl, byte [eax]
mov cl, dl
cmp dl, byte [esi]
jne 0x403fd9
test cl, cl
je 0x403fd5
mov dl, byte [eax + 1]
mov cl, dl
cmp dl, byte [esi + 1]
jne 0x403fd9
add eax, 2
add esi, 2
test cl, cl
jne 0x403fb5
xor eax, eax
jmp 0x403fde
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x403f71
mov eax, dword [esp + 0x14]
test byte [eax + 0xc], 0x10
je 0x403d10
mov ecx, dword [esp + 0x14]
push ecx
call fcn.0040a7e9
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x134]
push str._s_filelist.txt
push eax
call fcn.00408f1d
lea ecx, [esp + 0x13c]
push ecx
call fcn.0040a1ff
lea edx, [esp + 0x3c]
push edx
lea eax, [esp + 0x144]
push str._scache.dat
push eax
call fcn.00408f1d
lea ecx, [esp + 0x14c]
push ecx
call fcn.0040a1ff
add esp, 0x24
lea edx, [esp + 0x28]
push edx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
lea eax, [esp + 0x28]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x404057
sub eax, edx
mov edi, eax
test edi, edi
jle 0x4040db
mov ebp, dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
cmp byte [esp + edi + 0x28], 0x5c
jne 0x4040b8
lea eax, [edi - 1]
push eax
lea ecx, [esp + 0x2c]
push ecx
lea edx, [esp + 0x238]
push edx
call fcn.0040a230
add esp, 0xc
mov byte [esp + edi + 0x230], 0
xor esi, esi
lea esp, [esp]
lea eax, [esp + 0x230]
push eax
call ebp
test eax, eax
jne 0x4040b8
push 1
call ebx
inc esi
cmp esi, 0xa
jl 0x4040a0
dec edi
test edi, edi
jg 0x404072
jmp 0x4040db
mov al, byte [ebp + 0x2310]
test al, al
je 0x4040db
push ebx
push str.filelist.txt
push str.No_cache_filelist
push ebx
call dword [0x42fc7c]
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
mov byte [esp + 0x948], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x404101
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
call dword [edx + reloc.mscms.dll_SetColorProfileElementReference]
lea ecx, [esp + 0x838]
mov dword [esp + 0x948], 0xffffffff
call fcn.00401390
mov ecx, dword [esp + 0x940]
pop edi
pop esi
pop ebp
mov al, 1
pop ebx
mov dword fs:[0], ecx
add esp, 0x93c
ret 4