Function at 0x4023a0
Capabilities:
Create directory
Delete file
Get common file path
Get program files directory

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x954
mov eax, dword [0x4360fc]
mov dword [esp + 0x950], eax
xor eax, eax
push ebx
xor ebx, ebx
push esi
push edi
mov esi, ecx
mov byte [esp + 0x10], bl
mov ecx, 0x40
lea edi, [esp + 0x11]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x328], bl
mov ecx, 0x40
lea edi, [esp + 0x329]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x748], bl
mov ecx, 0x40
lea edi, [esp + 0x749]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x118], bl
mov ecx, 0x40
lea edi, [esp + 0x119]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x220], bl
mov ecx, 0x40
lea edi, [esp + 0x221]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x430], bl
mov ecx, 0x40
lea edi, [esp + 0x431]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x640], bl
mov ecx, 0x40
lea edi, [esp + 0x641]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x850], bl
mov ecx, 0x40
lea edi, [esp + 0x851]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
xor eax, eax
mov byte [esp + 0x538], bl
mov ecx, 0x40
lea edi, [esp + 0x539]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x10]
push eax
push ebx
push ebx
push 0x26
push ebx
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
lea edi, [esp + 0x10]
dec edi
mov al, byte [edi + 1]
inc edi
cmp al, bl
jne 0x4024b8
mov ecx, dword [str.BIOSUPDATE]
mov edx, dword [0x42a784]
mov eax, dword [0x42a788]
mov dword [edi], ecx
push ebx
lea ecx, [esp + 0x14]
mov dword [edi + 4], edx
push ecx
mov dword [edi + 8], eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov edi, dword [sym.imp.USER32.dll_wsprintfA]
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x53c]
push str._sSWinFlash.exe
push eax
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileA]
add esp, 0xc
lea ecx, [esp + 0x538]
push ecx
call ebx
lea edx, [esp + 0x538]
push edx
push 0xa5
mov ecx, esi
call fcn.00402250
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x32c]
push str._smfc42.dll
push ecx
call edi
add esp, 0xc
lea edx, [esp + 0x328]
push edx
call ebx
lea eax, [esp + 0x328]
push eax
push 0x9a
mov ecx, esi
call fcn.00402250
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x74c]
push str._smsvcp60.dll
push edx
call edi
add esp, 0xc
lea eax, [esp + 0x748]
push eax
call ebx
lea ecx, [esp + 0x748]
push ecx
push 0x9c
mov ecx, esi
call fcn.00402250
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x11c]
push str._smsvcrt.dll
push eax
call edi
add esp, 0xc
lea ecx, [esp + 0x118]
push ecx
call ebx
lea edx, [esp + 0x118]
push edx
push 0x9d
mov ecx, esi
call fcn.00402250
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x224]
push str._sPHLASH.INI
push ecx
call edi
add esp, 0xc
lea edx, [esp + 0x220]
push edx
call ebx
lea eax, [esp + 0x220]
push eax
push 0x9e
mov ecx, esi
call fcn.00402250
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x434]
push str._sPhlashLc.dll
push edx
call edi
add esp, 0xc
lea eax, [esp + 0x430]
push eax
call ebx
lea ecx, [esp + 0x430]
push ecx
push 0xa0
mov ecx, esi
call fcn.00402250
lea edx, [esp + 0x10]
push edx
lea eax, [esp + 0x644]
push str._sPhlash9X.vxd
push eax
call edi
add esp, 0xc
lea ecx, [esp + 0x640]
push ecx
call ebx
lea edx, [esp + 0x640]
push edx
push 0x9f
mov ecx, esi
call fcn.00402250
lea eax, [esp + 0x10]
push eax
lea ecx, [esp + 0x854]
push str._sPhlashNT.sys
push ecx
call edi
add esp, 0xc
lea edx, [esp + 0x850]
push edx
call ebx
lea eax, [esp + 0x850]
push eax
push 0xa1
mov ecx, esi
call fcn.00402250
mov ecx, dword [esp + 0x95c]
xor eax, eax
call fcn.0040e7f0
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret