Function at 0x41c230
Capabilities:
Delete file
Extract resource via kernel32 functions
Get common file path

Disassembly:
sub esp, 0x50
mov eax, dword [0x4896a0]
xor eax, esp
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x60]
push ebp
xor ebp, ebp
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x68]
push esi
mov esi, dword [esp + 0x60]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], ebp
cmp eax, ebp
jne 0x41c530
mov dword [esp + 0xc], ebp
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
push ebx
xor ebx, ebx
shr eax, 0x1f
add eax, edx
push edi
mov dword [esp + 0x18], ebx
je 0x41c68d
mov dword [esp + 0x10], ebp
xor ecx, ecx
mov byte [esp + 0x3c], 0
mov dword [esp + 0x3d], ecx
mov dword [esp + 0x41], ecx
mov dword [esp + 0x45], ecx
mov dword [esp + 0x49], ecx
mov dword [esp + 0x4d], ecx
mov dword [esp + 0x51], ecx
mov dword [esp + 0x55], ecx
mov word [esp + 0x59], cx
mov byte [esp + 0x5b], cl
mov dword [esp + 0x24], ebp
cmp ebx, eax
jb 0x41c2da
call fcn.0044c1d8
mov edx, dword [esi + 0xc]
mov eax, dword [esp + 0x10]
cmp dword [eax + edx], 0x64
jne 0x41c65f
mov dword [esp + 0x1c], ebp
xor edi, edi
push edi
lea ecx, [esp + 0x40]
push str.DOC_d
push ecx
call dword [sym.imp.USER32.dll_wsprintfA]
mov eax, dword [esp + 0x20]
add esp, 0xc
push str.DATA
lea edx, [esp + 0x40]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceA]
test eax, eax
je 0x41c335
mov ecx, dword [esp + 0x14]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_SizeofResource]
inc edi
add ebp, eax
cmp edi, 0x400
jb 0x41c2f1
push ebp
call fcn.0044a002
mov edi, eax
add esp, 4
mov dword [esp + 0x20], edi
test edi, edi
jne 0x41c556
push 0x4000000
call fcn.0044a002
add esp, 4
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], 1
test eax, eax
je 0x41c697
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x41c38f
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
mov ebp, dword [esp + 0x10]
lea edx, [ecx + ebp + 0xc]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x41c3c8
call fcn.0044c1d8
mov edx, dword [esi + 0xc]
lea eax, [edx + ebp + 0xc]
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x41c3d2
mov ecx, dword [esi + 0x10]
sub eax, edi
sub ecx, edx
mov edi, eax
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebx, ecx
jb 0x41c3fe
call fcn.0044c1d8
mov eax, dword [esi + 0xc]
lea edx, [eax + ebp]
cmp byte [edx + edi + 0xb], 0x5c
je 0x41c43f
mov ecx, dword [esi + 0x10]
sub ecx, eax
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x41c42c
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
push 0x46d8b4
lea edx, [ecx + ebp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x41c461
call fcn.0044c1d8
mov ebp, dword [esi + 0xc]
mov ecx, dword [esi + 0x10]
sub ecx, ebp
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp ebx, ecx
jb 0x41c485
call fcn.0044c1d8
mov edi, dword [esi + 0xc]
mov ebx, dword [esp + 0x10]
add edi, ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
push eax
lea edx, [ebx + ebp + 0xc]
push edx
push str._s_x08.tmp
add edi, 0xc
push edi
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
xor ebx, ebx
mov edi, edi
push ebx
lea eax, [esp + 0x40]
push str.DOC_d
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov edx, dword [esp + 0x20]
add esp, 0xc
push str.DATA
lea ecx, [esp + 0x40]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov ebp, eax
test ebp, ebp
je 0x41c659
mov eax, dword [esp + 0x14]
push ebp
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
test edi, edi
je 0x41c697
mov ecx, dword [esp + 0x14]
push ebp
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
test eax, eax
je 0x41c697
push eax
call dword [sym.imp.KERNEL32.dll_LockResource]
test eax, eax
je 0x41c697
cmp dword [esp + 0x24], 0
je 0x41c5c1
mov ebp, dword [esp + 0x20]
jmp 0x41c5cc
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [esp + 0xc], eax
cmp eax, ebp
jne 0x41c276
pop esi
xor eax, eax
pop ebp
mov ecx, dword [esp + 0x4c]
xor ecx, esp
call fcn.00449ba6
add esp, 0x50
ret
push ebp
push 0
push edi
call fcn.00449a70
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
add esp, 0xc
cmp ebx, eax
jb 0x41c584
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx + 4], edi
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp ebx, eax
jb 0x41c5b1
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x10]
mov dword [ecx + edx + 8], ebp
jmp 0x41c4ac
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
lea ebp, [edx + ecx]
push edi
push eax
push ebp
call fcn.00449bc0
mov edx, dword [esp + 0x38]
push 0x20
push edx
push edi
push ebp
call fcn.00420a20
add esp, 0x1c
cmp dword [esp + 0x24], 0
je 0x41c62f
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x18], eax
jb 0x41c610
call fcn.0044c1d8
mov eax, dword [esi + 0xc]
xor ecx, ecx
cmp ecx, ebx
mov ecx, dword [esp + 0x10]
sbb edx, edx
neg edx
push edx
push edi
lea edx, [eax + ecx + 0xc]
push ebp
push edx
call fcn.0041b570
add esp, 0x10
mov eax, dword [esp + 0x38]
add dword [esp + 0x1c], edi
test eax, eax
je 0x41c64c
mov ecx, dword [esp + 0x30]
push ecx
push edi
push 0
call eax
add esp, 0xc
test al, al
je 0x41c697
inc ebx
cmp ebx, 0x400
jb 0x41c4b0
mov ebx, dword [esp + 0x18]
xor ebp, ebp
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
add dword [esp + 0x10], 0x111
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
inc ebx
add eax, edx
mov dword [esp + 0x18], ebx
cmp ebx, eax
jb 0x41c2a1
mov dword [esp + 0x28], 1
jmp 0x41c699
xor ebp, ebp
cmp dword [esp + 0x34], ebp
je 0x41c6ae
mov eax, dword [esp + 0x14]
cmp eax, ebp
je 0x41c6ae
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x28], ebp
jne 0x41c832
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
xor edi, edi
add eax, edx
je 0x41c832
cmp edi, eax
jb 0x41c6e2
call fcn.0044c1d8
mov eax, dword [esi + 0xc]
xor ebx, ebx
cmp dword [eax + ebp + 4], ebx
je 0x41c71e
mov ecx, dword [esi + 0x10]
sub ecx, eax
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x41c70e
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
mov edx, dword [ecx + ebp + 4]
push edx
call fcn.00449f25
add esp, 4
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x41c740
call fcn.0044c1d8
mov eax, dword [esi + 0xc]
add eax, ebp
add eax, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
test eax, eax
je 0x41c783
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x41c775
call fcn.0044c1d8
mov edx, dword [esi + 0xc]
lea eax, [edx + ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x41c7a5
call fcn.0044c1d8
mov edx, dword [esi + 0xc]
push 0x46db5c
lea eax, [edx + ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
cmp edi, ecx
jb 0x41c7da
call fcn.0044c1d8
mov edx, dword [esi + 0xc]
mov dword [edx + ebp + 4], ebx
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp edi, eax
jb 0x41c803
call fcn.0044c1d8
mov ecx, dword [esi + 0xc]
mov dword [ecx + ebp + 8], ebx
mov ecx, dword [esi + 0x10]
sub ecx, dword [esi + 0xc]
mov eax, 0xf00f00f1
imul ecx
add edx, ecx
sar edx, 8
mov eax, edx
shr eax, 0x1f
inc edi
add eax, edx
add ebp, 0x111
cmp edi, eax
jb 0x41c6e2
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x28]
pop edi
pop ebx
pop esi
pop ebp
xor ecx, esp
call fcn.00449ba6
add esp, 0x50
ret