Function at 0x4098c0
Capabilities:
Copy file
Get common file path

Disassembly:
sub esp, 0x728
push ebx
push ebp
push esi
push edi
mov ebp, dword [esp + 0x73c]
mov ecx, 0x4b
xor eax, eax
lea edi, [esp + 0x30]
rep stosd dword es:[edi], eax
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x30]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x30]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
mov dword [esp + 0x1c], 0x64
rep movsb byte es:[edi], byte [esi]
mov edi, str..IDX
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebx, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
lea eax, [esp + 0x30]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.0040bbe0
mov ebx, eax
mov ecx, 0x4b
xor eax, eax
lea edi, [esp + 0x34]
rep stosd dword es:[edi], eax
mov edi, ebp
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x34]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x34]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str..DAT
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x34]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.0040bbe0
add esp, 8
test ebx, ebx
jl 0x40a134
test eax, eax
jl 0x40a134
mov ecx, 0x4b
xor eax, eax
lea edi, [esp + 0x30]
lea edx, [esp + 0x1c0]
rep stosd dword es:[edi], eax
mov ecx, 0x19
lea edi, [esp + 0x1c0]
rep stosd dword es:[edi], eax
mov ecx, 0x19
lea edi, [esp + 0x15c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x15c]
lea eax, [esp + 0x30]
push ecx
push edx
push eax
push ebp
call fcn.0040a290
add esp, 0x10
cmp eax, 0xfffffffe
mov dword [esp + 0x24], eax
jne 0x409a19
pop edi
pop esi
pop ebp
mov ax, 0xff9d
pop ebx
add esp, 0x728
ret
lea edi, [esp + 0x30]
or ecx, 0xffffffff
xor eax, eax
xor ebx, ebx
repne scasb al, byte es:[edi]
mov eax, dword [0x49fb50]
mov dword [esp + 0x10], ebx
not ecx
dec ecx
cmp eax, ebx
mov esi, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x14], ebx
jne 0x409a4f
mov dword [esp + 0x14], ebx
mov edi, 1
jmp 0x409a68
add eax, 0x66
push eax
call fcn.0040c0d0
mov edi, 1
add esp, 4
cmp eax, edi
jne 0x409a68
mov dword [esp + 0x14], edi
lea ecx, [esp + 0x30]
push ecx
call fcn.0040c0d0
add esp, 4
cmp eax, edi
jne 0x409a7d
mov dword [esp + 0x14], ebx
cmp esi, 4
mov dword [esp + 0x18], ebx
mov dword [esp + 0x2c], ebx
jl 0x409b77
mov eax, dword [esp + esi + 0x2c]
lea esi, [esp + esi + 0x2c]
mov edx, str.f300
cmp eax, dword [edx]
je 0x409b66
mov ecx, 0x4203bc
mov edx, eax
cmp edx, dword [ecx]
je 0x409b66
mov eax, 0x4208b4
mov ecx, edx
cmp ecx, dword [eax]
je 0x409b58
mov edx, str.F100
mov eax, ecx
cmp eax, dword [edx]
je 0x409b58
mov ecx, str.f220
mov edx, eax
cmp edx, dword [ecx]
je 0x409b4a
mov eax, str.F220
mov ecx, edx
cmp ecx, dword [eax]
je 0x409b4a
mov edx, str.f550
mov eax, ecx
cmp eax, dword [edx]
je 0x409b3c
mov ecx, str.F550
mov edx, eax
cmp edx, dword [ecx]
je 0x409b3c
mov eax, str.f770
mov ecx, edx
cmp ecx, dword [eax]
je 0x409b2e
mov edx, str.F770
mov eax, ecx
cmp eax, dword [edx]
je 0x409b2e
mov ecx, str.f302
mov edx, eax
cmp edx, dword [ecx]
je 0x409b28
mov eax, str.F302
mov ecx, edx
cmp ecx, dword [eax]
jne 0x409b77
mov dword [esp + 0x18], edi
jmp 0x409b77
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0x302
jmp 0x409b77
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0x226
jmp 0x409b77
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0xdc
jmp 0x409b77
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], 0x64
jmp 0x409b77
mov eax, 0x12c
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], eax
mov ebx, dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [esp + 0x740]
lea eax, [esp + 0x30]
push edx
push eax
call sub.F3CCISAM.dll_xism_open
mov ebp, eax
cmp bp, 0xffd4
je 0x409e40
test bp, bp
jg 0x409fd3
mov eax, dword [esp + 0x18]
test eax, eax
je 0x409fce
mov esi, dword [esp + 0x10]
test si, si
jle 0x409dd6
cmp word [esp + 0x14], di
jne 0x409dd6
cmp bp, 0xffe9
jne 0x409dd6
push edi
call dword [sym.imp.USER32.dll_ShowCursor]
cmp word [esp + 0x20], di
je 0x409e49
mov ecx, 0x4b
xor eax, eax
lea edi, [esp + 0x288]
lea esi, [esp + 0x30]
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x28]
lea edi, [esp + 0x288]
add ecx, 0xfffffffc
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x288]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, str.IDXBK_
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov eax, dword [esp + 0x28]
and ecx, 3
lea edx, [esp + 0x288]
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + eax + 0x2c]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x288]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str..idx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x288]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.0040bbe0
add esp, 4
test eax, eax
jl 0x409ee5
push 0x420b7c
push 0x420d00
lea ecx, [esp + 0x38]
push 0xffffffffffffffe9
push ecx
call fcn.0040c3a0
add esp, 0x10
cmp word [esp + 0x10], 0x12c
jne 0x409d2d
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x3b4]
lea edx, [esp + 0x15c]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x1c4]
push 0xffffffffffffffe9
push eax
lea ecx, [esp + 0x3c0]
push 0x420c9c
push ecx
call fcn.004157b1
add esp, 0x14
lea edx, [esp + 0x3b4]
push 0x40040
push 0x420c90
push edx
push 0
call ebx
mov ecx, 0x19
xor eax, eax
lea edi, [esp + 0x224]
lea edx, [esp + 0x224]
rep stosd dword es:[edi], eax
lea edi, [esp + 0x30]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x224]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
mov edi, str..IDX
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x228]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x290]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x20], 1
mov edi, 1
dec esi
test esi, esi
mov dword [esp + 0x1c], esi
jle 0x409fce
push 0x64
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x409b7d
mov esi, dword [esp + 0x1c]
cmp esi, 0x46
je 0x409dee
cmp esi, 0x3c
je 0x409dee
cmp esi, 0x32
je 0x409dee
cmp esi, 0x28
jge 0x409dbc
mov ecx, 0x4b
xor eax, eax
lea edi, [esp + 0x60c]
movsx edx, bp
rep stosd dword es:[edi], eax
lea eax, [esp + 0x30]
push edx
push eax
lea ecx, [esp + 0x614]
push 0x420bcc
push ecx
call fcn.004157b1
add esp, 0x10
lea edx, [esp + 0x60c]
push 0x40015
push 0x42093c
push edx
push 0
call ebx
cmp eax, 4
jne 0x409fc9
jmp 0x409db7
mov esi, dword [esp + 0x1c]
jmp 0x409dbc
push str.NG_2
push 0x420d00
lea eax, [esp + 0x38]
push 0xffffffffffffffe9
push eax
call fcn.0040c3a0
push esi
call fcn.0040c740
add esp, 0x14
cmp eax, edi
je 0x409f7d
mov ecx, dword [0x4ae788]
mov al, byte [ecx + 0x376e9]
test al, al
jne 0x409ed2
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x3b4]
lea edx, [esp + 0x15c]
rep stosd dword es:[edi], eax
push edx
lea eax, [esp + 0x1c4]
push 0xffffffffffffffe9
push eax
lea ecx, [esp + 0x3c0]
push 0x4208c0
push ecx
call fcn.004157b1
add esp, 0x14
lea edx, [esp + 0x3b4]
push 0x40010
push 0x42093c
push edx
push 0
call ebx
mov edi, 1
mov eax, dword [esp + 0x10]
push edi
push eax
call fcn.0040c6b0
add esp, 8
jmp 0x409f7d
push str.NG_BK
push 0x420d00
lea ecx, [esp + 0x38]
push 0xffffffffffffffe9
push ecx
call fcn.0040c3a0
mov edx, dword [esp + 0x20]
push edx
call fcn.0040c740
add esp, 0x14
cmp eax, 1
je 0x409f78
mov eax, dword [0x4ae788]
mov cl, byte [eax + 0x376e9]
test cl, cl
jne 0x409f69
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x3b4]
lea edx, [esp + 0x1c0]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x15c]
lea eax, [esp + 0x3b4]
push ecx
push 0xffffffffffffffe9
push edx
push 0x4208c0
push eax
call fcn.004157b1
add esp, 0x14
lea ecx, [esp + 0x3b4]
push 0x40010
push 0x42093c
push ecx
push 0
call ebx
mov edx, dword [esp + 0x10]
push 2
push edx
call fcn.0040c6b0
add esp, 8
mov edi, 1
mov eax, dword [esp + 0x24]
test eax, eax
jl 0x409f8e
push eax
call fcn.0040b5c0
add esp, 4
cmp bp, 0xffe9
je 0x40a0fe
cmp word [esp + 0x14], di
jne 0x40a126
push 0x42085c
push 0x420d00
lea ecx, [esp + 0x38]
push ebp
push ecx
call fcn.0040c3a0
add esp, 0x10
mov ax, bp
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x728
ret
mov edi, 1
test bp, bp
jle 0x409f7d
cmp word [esp + 0x20], di
jne 0x40a023
cmp word [esp + 0x10], 0x12c
jne 0x40a023
mov ecx, 0x96
xor eax, eax
lea edi, [esp + 0x3b4]
push 0x420b98
rep stosd dword es:[edi], eax
lea eax, [esp + 0x3b8]
push eax
call fcn.004157b1
add esp, 8
lea ecx, [esp + 0x3b4]
push 0x40040
push 0x420c90
push ecx
push 0
call ebx
mov edi, 1
cmp word [esp + 0x14], di
jne 0x40a042
push 0x4208bc
push 0x420d00
lea edx, [esp + 0x38]
push ebp
push edx
call fcn.0040c3a0
add esp, 0x10
mov eax, dword [esp + 0x10]
push 0
push eax
call fcn.0040c6b0
mov eax, dword [esp + 0x2c]
add esp, 8
test eax, eax
jl 0x40a067
lea eax, [eax + eax*4]
lea ecx, [eax + eax*8]
mov word [ecx*4 + 0x4c0d08], bp
mov eax, dword [esp + 0x2c]
movsx edx, bp
cmp eax, 0x12c
mov dword [edx*4 + 0x4c3218], eax
jne 0x40a126
mov ecx, 0x19
xor eax, eax
mov edi, 0x4c30e8
push 0x4c30e8
rep stosd dword es:[edi], eax
push 0x64
mov dword [0x4c3368], 0
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov esi, dword [esp + 0x73c]
mov ecx, 0x19
xor eax, eax
mov edi, 0x4c0a78
rep stosd dword es:[edi], eax
mov edi, esi
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
js 0x40a126
cmp byte [ecx + esi], 0x5c
je 0x40a0dd
dec ecx
jns 0x40a0c6
pop edi
mov ax, bp
pop esi
pop ebp
pop ebx
add esp, 0x728
ret
mov eax, ecx
mov edi, 0x4c0a78
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov ax, bp
and ecx, 3
rep movsb byte es:[edi], byte [esi]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x728
ret
cmp word [esp + 0x10], 0
jne 0x40a126
cmp word [esp + 0x14], di
jne 0x40a126
push 0x42085c
push 0x420d00
lea edx, [esp + 0x38]
push 0xffffffffffffffe9
push edx
call fcn.0040c3a0
add esp, 0x10
pop edi
mov ax, bp
pop esi
pop ebp
pop ebx
add esp, 0x728
ret
pop edi
pop esi
pop ebp
mov ax, 0xfffe
pop ebx
add esp, 0x728
ret