Function at 0x408ff0
Capabilities:
Delete file
Extract resource via kernel32 functions
Get common file path
Move file
Resolve function by parsing pe exports
Set current directory

Disassembly:
push 0xffffffffffffffff
push 0x439b78
mov eax, dword fs:[0]
push eax
sub esp, 0x294
mov eax, dword [0x44e584]
xor eax, esp
mov dword [esp + 0x290], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x44e584]
xor eax, esp
push eax
lea eax, [esp + 0x2a8]
mov dword fs:[0], eax
mov eax, dword [str.AllatKeyIn.exe]
mov edx, dword [0x43ca18]
mov dword [esp + 0x18], ecx
mov ecx, dword [0x43ca14]
mov dword [esp + 0x40], eax
mov ax, word [0x43ca1c]
mov dword [esp + 0x44], ecx
movzx ecx, byte [0x43ca1e]
mov word [esp + 0x4c], ax
xor eax, eax
mov dword [esp + 0x48], edx
mov edx, dword [str.AllatPayRE.dll]
mov dword [esp + 0x4f], eax
mov dword [esp + 0x53], eax
mov dword [esp + 0x57], eax
mov dword [esp + 0x5b], eax
mov byte [esp + 0x5f], al
mov eax, dword [0x43ca04]
mov byte [esp + 0x4e], cl
mov ecx, dword [0x43ca08]
mov dword [esp + 0x70], edx
mov dx, word [0x43ca0c]
mov dword [esp + 0x74], eax
mov al, byte [0x43ca0e]
xor ebx, ebx
mov dword [esp + 0x78], ecx
mov ecx, dword [str._allat_t.p_0]
mov word [esp + 0x7c], dx
mov edx, dword [0x43c9f4]
mov byte [esp + 0x7e], al
xor eax, eax
mov dword [esp + 0x9c], ecx
movzx ecx, byte [0x43c9fc]
push 0xf7
mov dword [esp + 0xa4], edx
mov dword [esp + 0x83], eax
mov dword [esp + 0x87], eax
mov dword [esp + 0x8b], eax
mov dword [esp + 0x8f], eax
mov byte [esp + 0x93], al
mov eax, dword [0x43c9f8]
lea edx, [esp + 0xad]
push ebx
push edx
mov dword [esp + 0x48], 0x81
mov dword [esp + 0x6c], ebx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
mov dword [esp + 0x78], 4
mov dword [esp + 0x9c], 1
mov dword [esp + 0xa0], ebx
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xb0], eax
mov byte [esp + 0xb4], cl
call fcn.004265c0
add esp, 0xc
push 0x104
lea eax, [esp + 0x1a4]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
lea ecx, [esp + 0x1a0]
push ecx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push ebx
call dword [sym.imp.ole32.dll_OleInitialize]
xor ebp, ebp
mov dword [esp + 0x14], ebp
cmp ebp, 1
je 0x4092bf
cmp ebp, ebx
je 0x4092bf
lea edi, [ebp + ebp*2]
shl edi, 4
cmp dword [esp + edi + 0x60], ebx
je 0x4092f2
lea edx, [esp + edi + 0x40]
push edx
lea ecx, [esp + 0x38]
call fcn.00408f30
mov esi, eax
lea eax, [esp + 0x1a0]
push eax
lea ecx, [esp + 0x2c]
mov dword [esp + 0x2b4], ebx
call fcn.00408f30
push 0x43c9ec
push eax
lea ecx, [esp + 0x40]
push ecx
mov byte [esp + 0x2bc], 1
call fcn.00408e10
push esi
push eax
lea edx, [esp + 0x44]
push edx
mov byte [esp + 0x2c8], 2
call fcn.00408d50
mov eax, dword [eax]
add esp, 0x18
push 8
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409225
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
mov byte [esp + 0x2b0], 1
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40924d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
mov byte [esp + 0x2b0], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409275
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
mov dword [esp + 0x2b0], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4092a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, ebx
je 0x4092f2
push str.DllRegisterServer
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x4092b6
call eax
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
jmp 0x4092f2
push 0x104
lea ecx, [esp + 0x1a4]
push ecx
call dword [sym.imp.KERNEL32.dll_GetWindowsDirectoryA]
lea edx, [esp + 0x1a0]
push edx
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
lea edi, [ebp + ebp*2]
shl edi, 4
lea eax, [esp + edi + 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
movzx ecx, word [esp + edi + 0x3c]
push 0x43c9d0
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov esi, eax
cmp esi, ebx
je 0x4094e8
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_LoadResource]
push esi
push ebx
mov ebp, eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov esi, eax
cmp ebp, ebx
je 0x4094e4
push ebp
call dword [sym.imp.KERNEL32.dll_LockResource]
cmp eax, ebx
je 0x4094e4
cmp esi, ebx
je 0x4094e4
mov ecx, dword [esp + 0x18]
push esi
push eax
lea edx, [esp + 0xa4]
push edx
call fcn.004080a0
test eax, eax
je 0x4094e4
lea esi, [esp + edi + 0x40]
push esi
lea eax, [esp + 0xa0]
mov ebp, 1
push eax
mov dword [esp + edi + 0x6c], ebp
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x4094bb
cmp dword [esp + edi + 0x60], ebx
je 0x4094af
push esi
lea ecx, [esp + 0x30]
call fcn.00408f30
mov esi, eax
lea ecx, [esp + 0x1a0]
push ecx
lea ecx, [esp + 0x28]
mov dword [esp + 0x2b4], 3
call fcn.00408f30
push 0x43c9ec
push eax
lea edx, [esp + 0x28]
push edx
mov byte [esp + 0x2bc], 4
call fcn.00408e10
push esi
push eax
lea eax, [esp + 0x30]
push eax
mov byte [esp + 0x2c8], 5
call fcn.00408d50
mov eax, dword [eax]
add esp, 0x18
push 8
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryExA]
mov esi, eax
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40940f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
mov byte [esp + 0x2b0], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409437
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
mov byte [esp + 0x2b0], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40945f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
mov dword [esp + 0x2b0], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40948a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, ebx
je 0x4094af
push str.DllRegisterServer
push esi
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x4094a8
call eax
test eax, eax
jne 0x4094a8
mov dword [esp + edi + 0x68], ebp
push esi
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
cmp dword [esp + 0x14], ebp
je 0x4094d6
mov dword [esp + edi + 0x68], ebp
jmp 0x4094d6
cmp dword [esp + 0x14], ebp
jne 0x4094ce
mov dword [esp + 0x98], 3
jmp 0x4094d6
mov dword [esp + edi + 0x68], 2
lea ecx, [esp + 0x9c]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov ebp, dword [esp + 0x14]
inc ebp
cmp ebp, 2
mov dword [esp + 0x14], ebp
jl 0x40917e
call dword [sym.imp.ole32.dll_OleUninitialize]
mov ebx, dword [esp + 0x18]
push 2
add ebx, 0x74
push 0x43c9cc
mov ecx, ebx
call fcn.004089b0
call fcn.0040f23c
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40952b
push 0x80004005
call fcn.00408270
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov dword [esp + 0x2b0], 6
xor ebp, ebp
lea edi, [esp + 0x40]
push 0x43c9c8
lea ecx, [esp + 0x1c]
call fcn.00408f30
cmp ebp, 3
mov byte [esp + 0x2b0], 7
jge 0x409577
push 2
push 0x43c9c4
lea ecx, [esp + 0x20]
call fcn.004089b0
cmp dword [edi + 0x24], 0
jne 0x40958f
mov ecx, dword [esp + 0x18]
push ecx
push edi
push str._s_s_:___
lea edx, [esp + 0x20]
push edx
jmp 0x4095e1
mov eax, dword [edi + 0x28]
test eax, eax
jne 0x4095a3
mov eax, dword [esp + 0x18]
push eax
push edi
push 0x43c970
jmp 0x4095dc
cmp eax, 2
jne 0x4095ba
mov edx, dword [esp + 0x18]
push edx
push edi
push 0x43c948
lea eax, [esp + 0x20]
push eax
jmp 0x4095e1
cmp eax, 3
jne 0x4095d1
mov ecx, dword [esp + 0x18]
push ecx
push edi
push 0x43c8b8
lea edx, [esp + 0x20]
push edx
jmp 0x4095e1
mov eax, dword [esp + 0x18]
push eax
push edi
push 0x43c890
lea ecx, [esp + 0x20]
push ecx
call fcn.00408d30
mov esi, dword [esp + 0x24]
mov eax, dword [esi - 0xc]
add esp, 0x10
push eax
push esi
mov ecx, ebx
call fcn.00408bd0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov byte [esp + 0x2b0], 6
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x409621
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
inc ebp
add edi, 0x30
cmp ebp, 2
jl 0x40954c
lea eax, [esi - 0x10]
mov dword [esp + 0x2b0], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409655
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x2a8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x290]
xor ecx, esp
call fcn.0042605e
add esp, 0x2a0
ret