Function at 0x401260
Capabilities:
Set current directory

Disassembly:
sub esp, 0x618
mov eax, dword [0x452284]
xor eax, esp
mov dword [esp + 0x614], eax
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x630]
call fcn.00401ad0
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
xor ebx, ebx
push 0x103
lea eax, [esp + 0x125]
push ebx
push eax
mov byte [esp + 0x12c], bl
call fcn.0042b460
lea ecx, [esp + 0x12c]
push ecx
call fcn.00401fa0
call fcn.00401760
push 0x3ff
lea edx, [esp + 0x239]
push ebx
push edx
mov esi, eax
call fcn.0042b460
mov eax, dword [str._a_d_p_r_o_]
mov edx, dword [0x445a54]
mov ecx, dword [0x445a50]
mov dword [esp + 0x240], eax
mov ax, word [0x445a58]
mov word [esp + 0x24c], ax
lea eax, [esp + 0x240]
mov dword [esp + 0x248], edx
add esp, 0x1c
mov dword [esp + 0x228], ecx
lea edx, [eax + 1]
nop
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x401310
sub eax, edx
push eax
mov eax, dword [esi + 4]
lea ecx, [esp + 0x228]
push ecx
call fcn.00401800
mov ebp, 1
add esp, 8
cmp dword [esp + 0x62c], ebp
mov byte [esp + 0x13], 1
jle 0x40144e
jmp 0x401350
push 0x400
lea edx, [esp + 0x228]
push ebx
push edx
call fcn.0042b460
mov eax, dword [edi]
mov cl, byte [eax]
add esp, 0xc
cmp cl, 0x2f
je 0x401378
cmp cl, 0x2d
jne 0x40143d
mov ecx, dword [edi + 4]
mov cl, byte [ecx]
cmp cl, 0x2f
je 0x40143d
cmp cl, 0x2d
je 0x40143d
cmp byte [esp + 0x13], bl
je 0x40139b
mov byte [esp + 0x13], bl
jmp 0x4013b7
mov dx, word [0x445a5c]
mov cl, byte [0x445a5e]
mov word [esp + 0x224], dx
mov byte [esp + 0x226], cl
push 0x3ff
inc eax
push eax
lea edx, [esp + 0x22c]
push edx
call fcn.00425bc0
push 0x3ff
lea eax, [esp + 0x234]
push 0x445a60
push eax
call fcn.00425bc0
mov ecx, dword [edi + 4]
push 0x3ff
push ecx
lea edx, [esp + 0x244]
push edx
call fcn.00425bc0
push 0x3ff
lea eax, [esp + 0x24c]
push 0x445a64
push eax
add edi, 4
inc ebp
call fcn.00425bc0
lea eax, [esp + 0x254]
add esp, 0x30
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x401420
sub eax, edx
push eax
mov eax, dword [esi + 4]
lea ecx, [esp + 0x228]
push ecx
call fcn.00401800
add esp, 8
inc ebp
add edi, 4
cmp ebp, dword [esp + 0x62c]
jl 0x401350
mov eax, dword [esi + 4]
push 2
push 0x445a68
call fcn.00401800
push 0x103
lea edx, [esp + 0x29]
push ebx
push edx
mov byte [esp + 0x30], bl
call fcn.0042b460
push 0x65
lea eax, [esp + 0x34]
push eax
push str.shock.dll
lea ebx, [esp + 0x140]
call fcn.00401000
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
push eax
push ecx
lea edi, [esp + 0x44]
mov dword [esp + 0x3c], 0x11479
mov dword [esp + 0x40], eax
call fcn.004018a0
lea edx, [esp + 0x3c]
push 8
push edx
call fcn.004018a0
add esp, 0x30
push 0
push 0
call dword [sym.imp.ole32.dll_CoInitializeEx]
mov ebx, edi
xor ebp, ebp
call fcn.00401b60
xor edi, edi
lea ebx, [ebx]
test ebp, ebp
jne 0x4014f4
lea ebx, [esp + 0x1c]
call fcn.00401c10
mov ebp, eax
push edi
push ebp
push str.RegistryDll_d_i___d
call fcn.00401a30
inc edi
add esp, 0xc
cmp edi, 1
jl 0x4014d0
call dword [sym.imp.ole32.dll_CoUninitialize]
mov edi, dword [esi + 8]
call fcn.00437b40
mov edx, edi
lea ecx, [esp + 0x120]
call fcn.00401130
mov ecx, dword [esi]
mov eax, dword [esi + 8]
call fcn.004016f0
mov edi, dword [0x454bd4]
lea ebx, [edi + 0x18]
mov dword [esi + 4], 0
push ebx
add esi, 0xfffffffc
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [edi + 0xc]
mov dword [esi], eax
inc dword [edi + 8]
push ebx
mov dword [edi + 0xc], esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call fcn.004011e0
mov ecx, dword [esp + 0x624]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00425608
add esp, 0x618
ret