Function at 0x4097e0
Capabilities:
Create directory
Move file

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x268
mov esi, edx
mov ebx, ecx
mov edi, dword [ebp + 8]
mov eax, dword [0x43300c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [edi + 4]
test eax, eax
jne 0x409808
mov eax, dword [ebx]
jmp 0x409827
mov ecx, dword [ebx + 4]
test ecx, ecx
je 0x409835
mov edx, dword [ebx]
mov byte [ebp - 0x25d], 1
cmp edx, dword [edi]
ja 0x409850
push edx
push ecx
push eax
call fcn.004163a9
add esp, 0xc
mov byte [ebp - 0x25d], 1
test eax, eax
jne 0x409850
mov eax, dword [edi + 4]
mov ecx, dword [ebx]
movzx eax, word [eax + ecx*2]
cmp ax, 0x5c
setne cl
test ax, ax
setne al
and al, cl
mov byte [ebp - 0x25d], al
mov edi, dword [ebp + 0xc]
mov eax, dword [esi + 4]
cmp eax, 0xffffffff
mov dword [ebp - 0x26c], esi
je 0x4098e9
mov ecx, eax
and ecx, 0x10
je 0x4098e9
bt eax, 0xa
jb 0x4098e9
mov eax, dword [esi]
dec eax
cmp eax, 1
jbe 0x4098e9
mov ecx, esi
mov edx, ebx
push edi
call fcn.00426fb0
add esp, 4
test eax, eax
je 0x40997f
cmp dword [ebp + 0x10], 1
jne 0x40989e
cmp eax, 2
je 0x40997f
xor ecx, ecx
cmp eax, 1
mov esi, 0x80004005
cmove esi, ecx
mov edx, dword [ebp - 0x26c]
cmp dword [edx + 8], 0xffffffff
je 0x4098e0
mov eax, dword [edx + 4]
cmp eax, 0xffffffff
setne cl
test al, 0x10
je 0x4098e0
cmp eax, 0xffffffff
je 0x4098e0
mov edx, dword [edx]
cmp edx, 2
je 0x4098e0
cmp edx, 1
je 0x4098e0
shr eax, 0xa
and al, cl
je 0x409d50
test esi, esi
mov eax, 0x80004005
jmp 0x409965
mov dword [ebp - 0x268], ebx
mov ecx, esi
mov edx, edi
call fcn.004271c0
mov edi, eax
mov ecx, dword [esi + 4]
cmp ecx, 0xffffffff
setne dl
cmp ecx, 0xffffffff
je 0x409922
mov eax, dword [esi]
cmp eax, 2
je 0x409922
cmp eax, 1
je 0x409922
shr ecx, 0xa
xor eax, eax
mov ebx, 0
and cl, dl
je 0x409934
mov ecx, dword [ebp - 0x268]
mov edx, esi
call fcn.0040a170
test eax, eax
setns bl
test bl, bl
mov esi, edi
cmovne esi, eax
test edi, edi
cmovns esi, eax
test eax, eax
cmovs esi, eax
or byte [ebp - 0x25d], bl
jne 0x409968
mov ecx, dword [ebp - 0x268]
mov edx, dword [ebp - 0x26c]
push 0
call fcn.00409590
add esp, 4
test esi, esi
cmovns esi, eax
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040dac1
mov eax, esi
add esp, 0x268
pop esi
pop edi
pop ebx
pop ebp
ret
xor eax, eax
lea ecx, [ebp - 0x228]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x264], 0
mov dword [ebp - 0x22c], eax
mov edx, ebx
call fcn.00426770
test eax, eax
js 0x409a02
mov ecx, dword [ebp - 0x228]
test ecx, ecx
je 0x409a02
mov edi, dword [ebp - 0x224]
dec ecx
movzx eax, word [edi + ecx*2]
cmp ax, 0x5c
je 0x4099d2
cmp ax, 0x2f
jne 0x409f23
cmp dword [ebp - 0x228], ecx
jb 0x4099bd
mov dword [ebp - 0x228], ecx
test edi, edi
je 0x4099ea
mov word [edi + ecx*2], 0
test ecx, ecx
jne 0x4099b7
mov esi, 0x80004005
mov dword [ebp - 0x264], 0
jmp 0x40a03e
test eax, eax
js 0x409fcd
push 0x20a
call fcn.0040cf57
add esp, 4
mov edi, eax
add eax, 2
push 0x208
push 0
push eax
call fcn.0040f9d0
add esp, 0xc
mov dword [ebp - 0x234], edi
mov word [edi], 0
push edi
push dword [ebp - 0x264]
push dword [ebp - 0x224]
call fcn.00426a90
add esp, 0xc
mov esi, 0x80004005
test eax, eax
je 0x409ffa
push edi
call fcn.0040d0bb
add esp, 4
mov dword [ebp - 0x238], eax
test eax, eax
je 0x409ffa
mov dword [ebp - 0x270], edi
mov edi, dword [ebp - 0x26c]
mov eax, dword [edi + 8]
lea ecx, [eax + 1]
cmp ecx, 2
jb 0x409a8e
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [edi + 8], 0xffffffff
mov edi, dword [ebp - 0x270]
push edi
push dword [ebx + 4]
call dword [sym.imp.KERNEL32.dll_MoveFileW]
test eax, eax
je 0x409fe6
mov edi, dword [ebp + 0xc]
lea eax, [edi + 0x80]
push eax
push dword [ebx + 4]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x40a025
mov edi, dword [ebp - 0x26c]
mov ecx, edi
mov edx, ebx
push 0
call fcn.00401d10
add esp, 4
mov eax, dword [edi + 8]
cmp eax, 0xffffffff
je 0x40a006
mov ecx, dword [edi + 4]
cmp ecx, 0xffffffff
setne dl
test cl, 0x10
je 0x40a009
cmp ecx, 0xffffffff
je 0x40a009
mov edi, dword [ebp - 0x26c]
mov edi, dword [edi]
cmp edi, 2
je 0x40a009
cmp edi, 1
je 0x40a009
shr ecx, 0xa
and cl, dl
mov edi, dword [ebp + 0xc]
jne 0x40a009
mov ecx, dword [ebp - 0x26c]
mov dword [ebp - 0x268], ebx
mov edx, ebx
push edi
call fcn.00426fb0
add esp, 4
cmp eax, 1
jne 0x40a0b1
movaps xmm0, xmmword [0x42b450]
lea edi, [ebp - 0x24c]
movups xmmword [edi], xmm0
xor eax, eax
mov dword [edi + 0x10], eax
lea edx, [ebp - 0x238]
mov ecx, edi
push eax
call fcn.00401d10
add esp, 4
mov esi, 0x80004005
cmp dword [edi + 8], 0xffffffff
je 0x40a12f
mov eax, dword [ebp - 0x248]
cmp eax, 0xffffffff
setne cl
test al, 0x10
je 0x40a12f
cmp eax, 0xffffffff
je 0x40a12f
mov edx, dword [ebp - 0x24c]
cmp edx, 2
je 0x40a12f
cmp edx, 1
je 0x40a12f
shr eax, 0xa
and al, cl
jne 0x40a12f
mov eax, 0x20a
push eax
call fcn.0040cf57
add esp, 4
mov edi, eax
add eax, 2
mov esi, 0x208
xor ebx, ebx
push esi
push ebx
push eax
call fcn.0040f9d0
add esp, 0xc
mov dword [ebp - 0x250], edi
mov dword [ebp - 0x254], ebx
mov word [edi], bx
mov eax, 0x20a
push eax
call fcn.0040cf57
add esp, 4
mov edi, eax
add eax, 2
push esi
push ebx
push eax
call fcn.0040f9d0
add esp, 0xc
mov dword [ebp - 0x258], edi
mov dword [ebp - 0x25c], ebx
mov word [edi], bx
lea esi, [ebp - 0x220]
mov ecx, esi
push dword [ebp - 0x270]
call fcn.00426be0
call fcn.0040d386
mov dword [eax], ebx
push esi
call fcn.00426c40
add esp, 4
test eax, eax
je 0x40a0ca
mov edi, eax
mov eax, dword [ebp - 0x240]
mov dword [ebp - 0x264], eax
mov eax, dword [ebp - 0x23c]
mov dword [ebp - 0x274], eax
xor ebx, ebx
push 0x42e1e2
push edi
call fcn.00416097
add esp, 8
test eax, eax
je 0x409ca8
push 0x42e1e0
push edi
call fcn.00416097
add esp, 8
test eax, eax
je 0x409ca8
cmp dword [ebp - 0x264], 0
je 0x409cbc
push dword [ebp - 0x274]
push edi
call fcn.00416097
add esp, 8
test eax, eax
jne 0x409cbc
push esi
call fcn.00426c40
add esp, 4
mov edi, eax
test eax, eax
jne 0x409c68
jmp 0x40a0ca
push edi
push dword [ebp - 0x270]
push 0x42dcc6
push 0x105
lea eax, [ebp - 0x254]
push eax
call fcn.00426a50
add esp, 0x14
cmp dword [ebp - 0x254], 0
jne 0x409cf1
test ebx, ebx
mov eax, 0x8007006f
cmovns ebx, eax
jmp 0x409ca8
push edi
mov eax, dword [ebp - 0x268]
push dword [eax + 4]
push 0x42dcc6
push 0x105
lea eax, [ebp - 0x25c]
push eax
call fcn.00426a50
add esp, 0x14
cmp dword [ebp - 0x25c], 0
je 0x409ce5
lea ecx, [ebp - 0x254]
lea edx, [ebp - 0x25c]
push dword [ebp + 0xc]
call fcn.0040a250
add esp, 4
test ebx, ebx
mov ecx, eax
cmovs ecx, ebx
test eax, eax
cmovs ebx, ecx
call fcn.0040d386
mov dword [eax], 0
jmp 0x409ca8
lea edi, [ebp - 0x220]
mov ecx, edi
push dword [ebx + 4]
call fcn.00426be0
call fcn.0040d386
mov dword [eax], 0
push edi
call fcn.00426c40
add esp, 4
test eax, eax
je 0x409ef1
mov edi, eax
mov dword [ebp - 0x268], ebx
mov ebx, esi
push 0x42e1e2
push edi
call fcn.00416097
add esp, 8
test eax, eax
je 0x409dc6
push 0x42e1e0
push edi
call fcn.00416097
add esp, 8
test eax, eax
je 0x409dc6
mov eax, dword [ebp - 0x26c]
cmp dword [eax + 0xc], 0
je 0x409de4
push dword [eax + 0x10]
push edi
call fcn.00416097
add esp, 8
test eax, eax
jne 0x409de4
mov esi, ebx
lea eax, [ebp - 0x220]
push eax
call fcn.00426c40
add esp, 4
mov edi, eax
mov ebx, esi
test eax, eax
jne 0x409d86
jmp 0x409ef1
push 0x20a
call fcn.0040cf57
add esp, 4
mov esi, eax
add eax, 2
push 0x208
xor ecx, ecx
push ecx
push eax
call fcn.0040f9d0
add esp, 0xc
mov dword [ebp - 0x224], esi
xor eax, eax
mov dword [ebp - 0x228], eax
mov word [esi], 0
push edi
xor esi, esi
mov eax, dword [ebp - 0x268]
push dword [eax + 4]
push 0x42dcc6
push 0x105
lea edi, [ebp - 0x228]
push edi
call fcn.00426a50
add esp, 0x14
cmp dword [ebp - 0x228], esi
je 0x409ebf
movaps xmm0, xmmword [0x42b450]
movups xmmword [ebp - 0x24c], xmm0
mov dword [ebp - 0x23c], esi
lea ecx, [ebp - 0x24c]
mov edx, edi
push esi
call fcn.00401d10
add esp, 4
mov ecx, edi
lea edx, [ebp - 0x24c]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.004097e0
add esp, 0xc
mov esi, eax
test ebx, ebx
cmovs esi, ebx
xor edi, edi
call fcn.0040d386
mov dword [eax], edi
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x409ea8
push eax
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x244]
lea ecx, [eax + 1]
cmp ecx, 2
jb 0x409ecb
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x409ecb
test ebx, ebx
mov eax, 0x8007006f
cmovns ebx, eax
mov esi, ebx
mov eax, dword [ebp - 0x224]
mov dword [ebp - 0x224], 0
test eax, eax
je 0x409dc8
push eax
call fcn.0040d268
add esp, 4
jmp 0x409dc8
call fcn.0040d386
cmp dword [eax], 0
mov eax, 0x80004005
cmove eax, esi
test esi, esi
cmovs eax, esi
mov esi, eax
mov eax, dword [ebp - 0x220]
cmp eax, 0xffffffff
je 0x409968
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
jmp 0x409968
mov dword [ebp - 0x268], ebx
push 0x2f
push edi
call fcn.0040fb2a
add esp, 8
mov ebx, eax
push 0x5c
push edi
call fcn.0040fb2a
add esp, 8
cmp ebx, eax
cmova eax, ebx
mov esi, 0x80004005
test eax, eax
je 0x409fd4
add eax, 2
lea ecx, [ebp - 0x230]
mov edx, eax
call fcn.00401c00
mov dword [ebp - 0x264], 0
test eax, eax
mov ebx, dword [ebp - 0x268]
js 0x40a03e
mov eax, dword [ebp - 0x230]
test eax, eax
je 0x40a03e
mov ecx, dword [ebp - 0x228]
lea edx, [eax + 1]
cmp ecx, edx
jb 0x4099f3
not eax
add eax, ecx
cmp ecx, eax
jb 0x409fb4
mov dword [ebp - 0x228], eax
test edi, edi
je 0x409fb2
mov word [edi + eax*2], 0
mov ecx, eax
test ecx, ecx
je 0x4099f3
mov eax, dword [ebp - 0x22c]
mov dword [ebp - 0x264], eax
jmp 0x409a0a
mov esi, 0x80004005
jmp 0x40a03e
mov dword [ebp - 0x264], 0
mov ebx, dword [ebp - 0x268]
jmp 0x40a03e
call dword [sym.imp.KERNEL32.dll_GetLastError]
movzx esi, ax
or esi, 0x80070000
test eax, eax
cmovle esi, eax
mov dword [ebp - 0x264], 0
jmp 0x40a035
xor eax, eax
dec eax
lea ecx, [eax + 1]
cmp ecx, 2
jb 0x40a018
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [ebp - 0x26c]
mov dword [eax + 8], 0xffffffff
mov dword [ebp - 0x264], 0
mov edi, dword [ebp - 0x270]
push edi
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x22c]
test eax, eax
je 0x40a051
push eax
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x224]
test eax, eax
je 0x40a064
push eax
call fcn.0040d268
add esp, 4
cmp byte [ebp - 0x264], 0
setne al
or byte [ebp - 0x25d], al
jne 0x40a090
mov ecx, ebx
mov edx, dword [ebp - 0x26c]
push ebx
call fcn.00409590
add esp, 4
cmp dword [ebx], 0
je 0x409968
mov ecx, dword [ebp - 0x26c]
cmp dword [ecx + 8], 0xffffffff
jne 0x4098ab
mov edx, ebx
push 0
call fcn.00401d10
add esp, 4
jmp 0x4098ab
mov eax, dword [ebp - 0x26c]
mov eax, dword [eax + 8]
mov ebx, dword [ebp - 0x268]
mov esi, 0x80004005
jmp 0x40a009
call fcn.0040d386
cmp dword [eax], 0
mov edi, 0x80004005
cmove edi, ebx
test ebx, ebx
cmovs edi, ebx
lea ecx, [ebp - 0x238]
lea edx, [ebp - 0x24c]
call fcn.0040a170
mov esi, eax
test edi, edi
cmovs esi, edi
mov eax, dword [ebp - 0x220]
cmp eax, 0xffffffff
je 0x40a109
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [ebp - 0x258]
test eax, eax
je 0x40a11c
push eax
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x250]
test eax, eax
je 0x40a12f
push eax
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x23c]
test eax, eax
je 0x40a142
push eax
call fcn.0040d268
add esp, 4
mov eax, dword [ebp - 0x244]
lea ecx, [eax + 1]
cmp ecx, 2
jb 0x40a157
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov al, 1
mov dword [ebp - 0x264], eax
mov ebx, dword [ebp - 0x268]
jmp 0x40a02f