Function at 0x40c9a8
Capabilities:
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x43f164
mov eax, dword fs:[0]
push eax
sub esp, 0x5e8
mov eax, dword [0x44fb64]
xor eax, esp
mov dword [esp + 0x5e0], eax
push ebx
push esi
push edi
mov eax, dword [0x44fb64]
xor eax, esp
push eax
lea eax, [esp + 0x5f8]
mov dword fs:[0], eax
xor edi, edi
mov dword [esp + 0x64], ecx
mov dword [0x453d05], edi
call fcn.004133f1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b166
push 0x80004005
call fcn.00409d60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0x600], edi
mov byte [esp + 0x1f], 1
call fcn.004133f1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b19c
push 0x80004005
call fcn.00409d60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov byte [esp + 0x600], 1
call fcn.004133f1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b1ce
push 0x80004005
call fcn.00409d60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x600], 2
call fcn.004133f1
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x40b200
push 0x80004005
call fcn.00409d60
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x30], eax
push 0x208
lea ecx, [esp + 0x3e8]
push ecx
push edi
mov byte [esp + 0x60c], 3
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [esp + 0x3e4]
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x40b236
sub eax, ecx
mov esi, eax
mov dword [esp + 0x38], esi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
push eax
lea ecx, [esp + 0x14]
call fcn.004098c0
mov byte [esp + 0x600], 4
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0xc]
cmp eax, edi
jge 0x40b26d
or eax, 0xffffffff
jmp 0x40b28d
lea edx, [esp + 0x3e4]
push edx
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
jne 0x40b28b
or eax, 0xffffffff
jmp 0x40b28d
sub eax, ecx
mov edx, dword [ecx - 0xc]
add eax, esi
cmp eax, edi
jl 0x40b2b8
cmp eax, edx
jg 0x40b2b8
add eax, ecx
push 0x44845c
push eax
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b2b8
sub eax, ecx
mov esi, eax
jmp 0x40b2bb
or esi, 0xffffffff
push edi
push ecx
push 0x453d09
call fcn.0040d390
cmp esi, 0xffffffff
je 0x40c595
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
dec eax
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov ebx, 5
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], bl
call fcn.004099f0
mov byte [esp + 0x600], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40b327
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._Compress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b3ec
sub eax, ecx
jne 0x40b3ec
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 2
call fcn.004090f0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 6
call fcn.004099f0
mov byte [esp + 0x600], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40b3d8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x20]
push 0x44846c
push ecx
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._SimpleCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b48a
sub eax, ecx
jne 0x40b48a
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 9
call fcn.004090f0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 7
call fcn.004099f0
mov byte [esp + 0x600], 4
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x40b3cc
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._UDiskCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b530
sub eax, ecx
jne 0x40b530
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 0xb
call fcn.004090f0
mov byte [esp + 0x600], 8
push eax
lea ecx, [esp + 0x24]
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
lea eax, [esp + 0x20]
push 0x44846c
push eax
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._LdxCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b5d6
sub eax, ecx
jne 0x40b5d6
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 7
call fcn.004090f0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 9
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea edx, [esp + 0x24]
push edx
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._UnCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b732
sub eax, ecx
jne 0x40b732
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 1
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0xa
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0xb
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov edx, dword [esp + 0x10]
mov eax, dword [edx - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0xc
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea ecx, [esp + 0x24]
push ecx
call fcn.00408da0
push 0x44846c
lea edx, [esp + 0x1c]
push edx
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._UDiskUnCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b89d
sub eax, ecx
jne 0x40b89d
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 0xc
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0xd
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0xe
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov edx, dword [esp + 0x10]
mov eax, dword [edx - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0xf
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea ecx, [esp + 0x24]
push ecx
call fcn.00408da0
push 0x44846c
lea edx, [esp + 0x1c]
push edx
call fcn.00408da0
push 0x44845c
lea eax, [esp + 0x1c]
push eax
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._LdxUnCompress
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40b9f9
sub eax, ecx
jne 0x40b9f9
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 8
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x10
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x11
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov byte [esp + 0x600], 0x12
push eax
lea ecx, [esp + 0x1c]
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea edx, [esp + 0x24]
push edx
call fcn.00408da0
push 0x44846c
lea eax, [esp + 0x1c]
push eax
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._BackToDir
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40bb1c
sub eax, ecx
jne 0x40bb1c
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 6
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x13
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x14
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov byte [esp + 0x600], 0x15
jmp 0x40b9bb
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._Update
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40bc3f
sub eax, ecx
jne 0x40bc3f
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 3
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x16
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x17
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov byte [esp + 0x600], 0x18
jmp 0x40b9bb
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._SimpleUpdate
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40be4e
sub eax, ecx
jne 0x40be4e
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 0xa
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x19
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x1a
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea eax, [esp + 0x24]
push eax
call fcn.00408da0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x1b
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__Src
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40c599
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x1c
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0xc]
sub eax, esi
sub eax, 6
push eax
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x34]
mov byte [esp + 0x604], 0x1d
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea eax, [esp + 0x1c]
push eax
call fcn.00408da0
lea ecx, [esp + 0x30]
push 0x44846c
push ecx
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._Delete
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40bec6
sub eax, ecx
jne 0x40bec6
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 4
call fcn.004090f0
mov byte [esp + 0x600], 0x1e
jmp 0x40b501
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._Back
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40c045
sub eax, ecx
jne 0x40c045
push edi
push str.Find_Back
push 0x453d09
call fcn.0040d390
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push 0x44845c
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
cmp eax, 0xffffffff
je 0x40c599
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], bl
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x1f
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__To
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push edi
push str.Find_To
push 0x453d09
call fcn.0040d390
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x20
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, ebx
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x21
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea edx, [esp + 0x24]
push edx
call fcn.00408da0
lea eax, [esp + 0x18]
push 0x44846c
push eax
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._ChangeStrategy
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
je 0x40c19b
sub eax, ecx
jne 0x40c19b
cmp dword [ecx - 0xc], edi
mov byte [esp + 0x1f], 0xd
jge 0x40c07f
or eax, 0xffffffff
jmp 0x40c09c
push 0x44845c
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
jne 0x40c09a
or eax, 0xffffffff
jmp 0x40c09c
sub eax, ecx
mov ecx, dword [ecx - 0xc]
sub ecx, eax
dec ecx
push ecx
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x22
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__Src
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x23
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, 6
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov byte [esp + 0x600], 0x24
push eax
lea ecx, [esp + 0x34]
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
push 0x44846c
lea edx, [esp + 0x34]
push edx
call fcn.00408da0
lea eax, [esp + 0x18]
push 0x44846c
push eax
call fcn.00408da0
jmp 0x40c595
cmp dword [ecx - 0xc], edi
jl 0x40c2ba
push str._SimpleChangeStrategy
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c2ba
mov ecx, dword [esp + 0x10]
sub eax, ecx
jne 0x40c2ba
cmp dword [ecx - 0xc], edi
mov byte [esp + 0x1f], 0xe
jge 0x40c1d5
or edx, 0xffffffff
jmp 0x40c1f4
push 0x44845c
push ecx
call fcn.00423142
mov ecx, dword [esp + 0x18]
add esp, 8
cmp eax, edi
jne 0x40c1f0
or edx, 0xffffffff
jmp 0x40c1f4
sub eax, ecx
mov edx, eax
mov eax, dword [ecx - 0xc]
sub eax, edx
dec eax
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
push eax
lea ecx, [esp + 0x14]
mov byte [esp + 0x604], 0x25
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
cmp dword [ecx - 0xc], edi
jl 0x40c599
push str.__Src
push ecx
call fcn.00423142
add esp, 8
cmp eax, edi
je 0x40c595
mov ecx, dword [esp + 0x10]
sub eax, ecx
mov esi, eax
cmp esi, 0xffffffff
je 0x40c599
push esi
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x18]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x26
call fcn.004099f0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov eax, dword [esp + 0x10]
mov eax, dword [eax - 0xc]
sub eax, esi
sub eax, 6
push eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x18]
call fcn.004090f0
mov byte [esp + 0x600], 0x27
jmp 0x40c15d
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x2c]
call fcn.004095d0
mov bl, 0x28
lea edi, [esp + 0x28]
mov byte [esp + 0x600], bl
call fcn.00409090
mov esi, dword [esp + 0x28]
mov eax, dword [esi - 0xc]
test eax, eax
jl 0x40c445
push str..LDX
push esi
call fcn.00423142
add esp, 8
test eax, eax
je 0x40c445
sub eax, esi
cmp eax, 0xffffffff
je 0x40c445
mov edx, dword [esp + 0x10]
mov eax, dword [edx - 0xc]
dec eax
push eax
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 1
call fcn.004090f0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x29
call fcn.004099f0
lea ecx, [esp + 0x34]
mov byte [esp + 0x600], bl
call fcn.00409da0
push 0x44846c
lea ecx, [esp + 0x24]
push ecx
call fcn.00408da0
push 0x104
lea edx, [esp + 0x70]
push 0
push edx
call fcn.00424c40
add esp, 0xc
lea eax, [esp + 0x6c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x1c]
call fcn.00409d20
push str._eis_ldx_
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov edx, dword [esp + 0x18]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push 0
push edx
call esi
push str.ldxtmp_
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov eax, dword [esp + 0x18]
push 0
push eax
call esi
lea ecx, [esp + 0x14]
push ecx
call fcn.0040a080
add esp, 4
push 0x208
lea edx, [esp + 0x1e0]
push 0
push edx
mov byte [esp + 0x60c], 0x2a
call fcn.00424c40
mov esi, dword [esp + 0x20]
mov eax, dword [esi - 0xc]
add esp, 0xc
push eax
lea eax, [esp + 0x1e0]
push esi
push eax
call fcn.00429730
mov ebx, dword [esi - 0xc]
add esp, 0xc
lea edi, [esp + 0x1dc]
lea esi, [esp + 0x34]
call fcn.0040df40
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x2b
call fcn.0040d090
mov ecx, esi
call fcn.00409da0
lea ecx, [esp + 0x14]
mov byte [esp + 0x600], 0x28
call fcn.00409da0
mov esi, dword [esp + 0x28]
mov bl, 0x28
cmp dword [esi - 0xc], 0
jl 0x40c584
push str..LDM
push esi
call fcn.00423142
add esp, 8
test eax, eax
je 0x40c584
sub eax, esi
cmp eax, 0xffffffff
je 0x40c584
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx - 0xc]
dec eax
push eax
lea edx, [esp + 0x38]
push edx
lea ecx, [esp + 0x18]
mov byte [esp + 0x27], 1
call fcn.004090f0
push eax
lea ecx, [esp + 0x24]
mov byte [esp + 0x604], 0x2c
call fcn.004099f0
lea ecx, [esp + 0x34]
mov byte [esp + 0x600], bl
call fcn.00409da0
push 0x44846c
lea eax, [esp + 0x24]
push eax
call fcn.00408da0
push 0x104
lea ecx, [esp + 0x70]
push 0
push ecx
call fcn.00424c40
add esp, 0xc
lea edx, [esp + 0x6c]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x1c]
call fcn.00409d20
push str._tiprayldx__
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov ecx, dword [esp + 0x18]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea edx, [esp + 0x14]
push edx
call fcn.0040a080
add esp, 4
push 0x208
lea eax, [esp + 0x1e0]
push 0
push eax
mov byte [esp + 0x60c], 0x2d
call fcn.00424c40
mov esi, dword [esp + 0x20]
mov eax, dword [esi - 0xc]
add esp, 0xc
push eax
lea ecx, [esp + 0x1e0]
push esi
push ecx
call fcn.00429730
mov ebx, dword [esi - 0xc]
add esp, 0xc
lea edi, [esp + 0x1dc]
lea esi, [esp + 0x34]
call fcn.0040df40
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x2e
call fcn.0040d090
mov ecx, esi
call fcn.00409da0
lea ecx, [esp + 0x14]
call fcn.00409da0
lea ecx, [esp + 0x28]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov ecx, dword [esp + 0x10]
mov al, byte [esp + 0x1f]
mov edx, dword [esp + 0x64]
mov byte [edx + 0xb4], al
movzx eax, al
dec eax
cmp eax, 0xd
ja case.default.0x40c5b4
jmp dword [eax*4 + 0x40d050]
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.004011b0
push esi
lea eax, [esp + 0x28]
push str.miCompress__s_
push eax
call fcn.00409670
add esp, 0xc
jmp 0x40cf4d
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.00401bd0
push esi
lea edx, [esp + 0x28]
push str.miSimpleCompress__s_
push edx
call fcn.00409670
mov eax, dword [esp + 0x30]
add esp, 0xc
push 0
push eax
jmp 0x40cf54
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.00402600
push eax
push esi
lea ecx, [esp + 0x2c]
push str.miUDiskCompress__s___d_
push ecx
call fcn.00409670
mov edx, dword [esp + 0x34]
add esp, 0x10
push 0
push edx
push 0x453d09
call fcn.0040d390
push 4
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov esi, dword [esp + 0x20]
mov ecx, esi
call fcn.00401bd0
push esi
lea eax, [esp + 0x28]
push str.miLdxCompress__s_
push eax
call fcn.00409670
add esp, 0xc
jmp 0x40cf4d
mov esi, dword [esp + 0x20]
push 0x448368
push esi
call fcn.00422dad
add esp, 8
test eax, eax
sete al
test al, al
je 0x40c708
push 0x104
lea edx, [esp + 0x70]
push 0
push edx
call fcn.00424c40
add esp, 0xc
lea eax, [esp + 0x6c]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x1c]
call fcn.00409d20
push str._tiprayldx__
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov edx, dword [esp + 0x18]
push 0
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebx, dword [esp + 0x38]
lea edi, [esp + 0x3e4]
lea esi, [esp + 0x34]
call fcn.0040df40
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x2f
call fcn.0040d090
mov ecx, esi
mov byte [esp + 0x600], 4
call fcn.00409da0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov eax, dword [edi - 0xc]
lea ecx, [eax - 1]
lea eax, [esp + 0x18]
call fcn.0040ab40
cmp al, 0x5c
jne 0x40c759
mov edi, dword [edi - 0xc]
dec edi
push edi
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x20]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x30
call fcn.004099f0
lea ecx, [esp + 0x58]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov edi, dword [esp + 0x18]
call fcn.0040ed70
push edi
push esi
push str.miUnCompress__s_to__s_
lea ecx, [esp + 0x30]
push ecx
call fcn.00409670
mov edx, dword [esp + 0x34]
add esp, 0x10
push 0
push edx
jmp 0x40cf54
push 0x208
lea eax, [esp + 0x1e0]
push 0
push eax
call fcn.00424c40
add esp, 0xc
lea ecx, [esp + 0x1dc]
push ecx
push 0x208
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x28]
call fcn.00409dc0
lea edx, [esp + 0x1dc]
push edx
lea ecx, [esp + 0x2c]
mov byte [esp + 0x604], 0x31
call fcn.00409d20
push str.Ldx_
lea ecx, [esp + 0x2c]
call fcn.0040ac70
mov eax, dword [esp + 0x28]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebx, dword [esp + 0x38]
lea edi, [esp + 0x3e4]
lea esi, [esp + 0x44]
call fcn.0040df40
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x604], 0x32
call fcn.0040d090
mov bl, 0x31
mov ecx, esi
mov byte [esp + 0x600], bl
call fcn.00409da0
mov edi, dword [esp + 0x28]
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov esi, dword [esp + 0x18]
mov eax, dword [esi - 0xc]
lea ecx, [eax - 1]
lea eax, [esp + 0x18]
call fcn.0040ab40
cmp al, 0x5c
jne 0x40c878
mov eax, dword [esi - 0xc]
dec eax
push eax
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x20]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x33
call fcn.004099f0
lea ecx, [esp + 0x3c]
mov byte [esp + 0x600], bl
call fcn.00409da0
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
push esi
push edi
push ebx
lea edx, [esp + 0x30]
push str.miUDiskUnCompress__s___s___s_
push edx
call fcn.00409670
mov eax, dword [esp + 0x38]
add esp, 0x14
push 0
push eax
push 0x453d09
call fcn.0040d390
push 0x447988
push ebx
mov dword [esp + 0x1c], 0
call fcn.00422167
mov esi, eax
add esp, 8
test esi, esi
je 0x40c99a
push 0x64
lea ecx, [esp + 0x178]
push 0
push ecx
call fcn.00424c40
add esp, 0xc
push 0
push 0
push esi
call fcn.004236ef
add esp, 0xc
push esi
push 0x19
lea edx, [esp + 0x17c]
push 1
push edx
call fcn.00422af3
add esp, 0x10
mov ecx, str.LeaderCab
lea eax, [esp + 0x174]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40c924
test dl, dl
je 0x40c920
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40c924
add eax, 2
add ecx, 2
test dl, dl
jne 0x40c904
xor eax, eax
jmp 0x40c929
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40c935
mov dword [esp + 0x14], 1
push esi
call fcn.004221f5
add esp, 4
cmp dword [esp + 0x14], 0
je 0x40c99a
mov eax, dword [esp + 0x18]
push eax
mov edx, edi
mov ecx, ebx
call fcn.0040f8b0
add esp, 4
mov esi, eax
push esi
push ebx
lea ecx, [esp + 0x2c]
push str.miUDiskUnCompress__s___d_
push ecx
call fcn.00409670
mov edx, dword [esp + 0x34]
add esp, 0x10
push 0
push edx
push 0x453d09
call fcn.0040d390
push edi
call fcn.00409ea0
add esp, 4
test esi, esi
jne 0x40c992
push 4
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]
lea ecx, [esp + 0x28]
call fcn.00409da0
jmp 0x40cf5e
mov esi, dword [esp + 0x20]
push 0x448368
push esi
call fcn.00422dad
add esp, 8
test eax, eax
sete al
test al, al
je 0x40ca4d
push 0x104
lea eax, [esp + 0x70]
push 0
push eax
call fcn.00424c40
add esp, 0xc
lea ecx, [esp + 0x6c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea edx, [esp + 0x6c]
push edx
lea ecx, [esp + 0x1c]
call fcn.00409d20
push str._tiprayldx__
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov eax, dword [esp + 0x18]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebx, dword [esp + 0x38]
lea edi, [esp + 0x3e4]
lea esi, [esp + 0x4c]
call fcn.0040df40
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x34
call fcn.0040d090
mov ecx, esi
mov byte [esp + 0x600], 4
call fcn.00409da0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov eax, dword [edi - 0xc]
lea ecx, [eax - 1]
lea eax, [esp + 0x18]
call fcn.0040ab40
cmp al, 0x5c
jne 0x40ca9e
mov edi, dword [edi - 0xc]
dec edi
push edi
lea ecx, [esp + 0x6c]
push ecx
lea ecx, [esp + 0x20]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x35
call fcn.004099f0
lea ecx, [esp + 0x68]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov edi, dword [esp + 0x18]
call fcn.0040ed70
push edi
push esi
push str.miLdxUnCompress__s_to__s_
lea edx, [esp + 0x30]
push edx
call fcn.00409670
mov eax, dword [esp + 0x34]
add esp, 0x10
push 0
push eax
jmp 0x40cf54
mov esi, dword [esp + 0x20]
push 0x448368
push esi
call fcn.00422dad
add esp, 8
test eax, eax
sete al
test al, al
je 0x40cb68
push 0x104
lea ecx, [esp + 0x70]
push 0
push ecx
call fcn.00424c40
add esp, 0xc
lea edx, [esp + 0x6c]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x1c]
call fcn.00409d20
push str.Ldx_
lea ecx, [esp + 0x1c]
call fcn.0040ac70
mov ecx, dword [esp + 0x18]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebx, dword [esp + 0x38]
lea edi, [esp + 0x3e4]
lea esi, [esp + 0x54]
call fcn.0040df40
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x36
call fcn.0040d090
mov ecx, esi
mov byte [esp + 0x600], 4
call fcn.00409da0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov eax, dword [edi - 0xc]
lea ecx, [eax - 1]
lea eax, [esp + 0x18]
call fcn.0040ab40
cmp al, 0x5c
jne 0x40cbb9
mov edi, dword [edi - 0xc]
dec edi
push edi
lea edx, [esp + 0x64]
push edx
lea ecx, [esp + 0x20]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x37
call fcn.004099f0
lea ecx, [esp + 0x60]
mov byte [esp + 0x600], 4
call fcn.00409da0
mov edi, dword [esp + 0x18]
call fcn.0040ed70
push edi
push esi
push str.miBackToDir__s_to__s_
jmp 0x40cf40
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
call fcn.004055f0
push edi
push esi
push str.miUpdate__s_to__s_
jmp 0x40caaa
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
call fcn.00405470
mov ecx, ebx
push ecx
mov edx, esi
push edx
mov eax, edi
push eax
lea ecx, [esp + 0x30]
push str.miSimpleUpdate__s_to__s___s_
push ecx
call fcn.00409670
mov edx, dword [esp + 0x38]
add esp, 0x14
push 0
push edx
jmp 0x40cf54
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x20]
push eax
call fcn.00409ea0
add esp, 4
push 0x104
lea ecx, [esp + 0x70]
push 0
push ecx
call fcn.00424c40
add esp, 0xc
lea edx, [esp + 0x6c]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
lea ecx, [esp + 0x28]
call fcn.00409dc0
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x2c]
mov byte [esp + 0x604], 0x38
call fcn.00409d20
push str.Ldx_
lea ecx, [esp + 0x2c]
call fcn.0040ac70
mov ecx, dword [esp + 0x28]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov ebx, dword [esp + 0x38]
lea edi, [esp + 0x3e4]
lea esi, [esp + 0x5c]
call fcn.0040df40
mov byte [esp + 0x600], 0x39
mov eax, dword [eax]
mov ecx, dword [eax - 0xc]
push ecx
push eax
lea ecx, [esp + 0x30]
call fcn.0040ab80
mov bl, 0x38
mov byte [esp + 0x600], bl
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40cce6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x28]
push 0
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov edi, dword [esp + 0x18]
mov ecx, dword [edi - 0xc]
lea eax, [ecx - 1]
test eax, eax
jl 0x40cf01
cmp eax, ecx
jg 0x40cf01
cmp byte [eax + edi], 0x5c
jne 0x40cd49
dec ecx
push ecx
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x20]
call fcn.00409170
push eax
lea ecx, [esp + 0x1c]
mov byte [esp + 0x604], 0x3a
call fcn.004099f0
lea ecx, [esp + 0x40]
mov byte [esp + 0x600], bl
call fcn.00409da0
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x20]
push edi
push esi
push ebx
lea edx, [esp + 0x30]
push str.miBack__s___s___s_
push edx
call fcn.00409670
mov eax, dword [esp + 0x38]
add esp, 0x14
push 0
push eax
push 0x453d09
call fcn.0040d390
push 0x447988
push ebx
mov dword [esp + 0x1c], 0
call fcn.00422167
mov esi, eax
add esp, 8
test esi, esi
je 0x40ce26
push 0x64
lea ecx, [esp + 0x178]
push 0
push ecx
call fcn.00424c40
add esp, 0xc
push 0
push 0
push 0
push esi
call fcn.00422bac
push esi
push 0x19
lea edx, [esp + 0x18c]
push 1
push edx
call fcn.00422af3
add esp, 0x20
mov ecx, str.LeaderCab
lea eax, [esp + 0x174]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x40cdf4
test dl, dl
je 0x40cdf0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x40cdf4
add eax, 2
add ecx, 2
test dl, dl
jne 0x40cdd4
xor eax, eax
jmp 0x40cdf9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40ce05
mov dword [esp + 0x14], 1
push esi
call fcn.004221f5
add esp, 4
cmp dword [esp + 0x14], 0
je 0x40ce26
mov edx, dword [esp + 0x28]
push edi
mov ecx, ebx
call fcn.0040f2e0
add esp, 4
jmp 0x40ce36
mov eax, dword [esp + 0x28]
push edi
push eax
mov ecx, ebx
call fcn.0040fbc0
add esp, 8
cmp eax, 3
je 0x40ced7
call dword [sym.imp.KERNEL32.dll_GetSystemDefaultLCID]
cmp eax, 0x404
je 0x40cea5
cmp eax, 0xc04
je 0x40cea5
lea ecx, [esp + 0x50]
push ecx
mov edi, 7
call fcn.0040ec10
add esp, 4
mov esi, eax
lea edx, [esp + 0x48]
push edx
mov edi, 0x14
mov byte [esp + 0x604], 0x3b
call fcn.0040ec10
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 4
push 0
push esi
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x48]
call fcn.00409da0
lea ecx, [esp + 0x50]
jmp 0x40ced2
lea eax, [esp + 0x2c]
push eax
mov edi, 7
call fcn.0040ec10
mov eax, dword [eax]
add esp, 4
push 0
push eax
push 0x4486b0
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x2c]
call fcn.00409da0
mov byte [esp + 0x600], 4
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40cf5e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40cf5e
push 0x80070057
call fcn.00409d60
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
mov edx, edi
mov ecx, esi
call fcn.00407e30
push edi
push esi
push str.miUpdateStrategy__cstrDstPath:__s___cstrTmpPath:__s_
jmp 0x40c765
mov edi, dword [esp + 0x30]
mov esi, dword [esp + 0x18]
mov edx, edi
mov ecx, esi
call fcn.00408760
push edi
push esi
push str.miSimpleChangeStrategy__cstrDstPath:__s___cstrTmpPath:__s_
lea eax, [esp + 0x30]
push eax
call fcn.00409670
add esp, 0x10
mov ecx, dword [esp + 0x24]
push 0
push ecx
push 0x453d09
call fcn.0040d390
mov ecx, dword [esp + 0x10]
lea eax, [ecx - 0x10]
mov byte [esp + 0x600], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40cf86
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x600], 2
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 0x40cfae
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x600], 1
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40cfd6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x600], 0
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40cffe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x600], 0xffffffff
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40d029
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x5f8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x5e0]
xor ecx, esp
call fcn.0042179d
mov esp, ebp
pop ebp
ret