Function at 0x46f440
Capabilities:
Create directory
Delete file
Enumerate files on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x508982
mov eax, dword fs:[0]
push eax
sub esp, 0x334
mov eax, dword [0x5364d0]
xor eax, esp
mov dword [esp + 0x330], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5364d0]
xor eax, esp
push eax
lea eax, [esp + 0x348]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x358]
mov eax, dword [esp + 0x364]
mov dword [esp + 0x5c], ebp
mov edi, edx
mov dword [esp + 0x40], eax
mov dword [esp + 0x20], ecx
lea ebx, [ebp + 0xa8]
mov eax, ebx
mov dword [esp + 0x350], 1
mov dword [esp + 0x48], ebx
call fcn.00474290
push ebx
call fcn.00474300
call fcn.004345d0
mov esi, eax
cmp dword [esi + 0x80], 0
mov dword [esi + 0x34], 1
je 0x46f4dc
mov edx, dword [esi + 0x60]
push 0xffffffffffffffff
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
xor ecx, ecx
mov dword [esi + 0x2c], ecx
mov eax, edi
mov dword [ebx + 0x2c], ecx
mov dword [esp + 0x1c], eax
cmp edi, ecx
je 0x46f4fa
mov eax, dword [edi]
mov ecx, dword [eax + 4]
push edi
call ecx
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x350], 2
test eax, eax
jne 0x46f5c9
lea edx, [esp + 0x1c]
push edx
call fcn.004283e0
test eax, eax
mov eax, dword [esp + 0x1c]
jne 0x46f622
test eax, eax
je 0x46f622
lea esi, [esp + 0x80]
call fcn.00428390
mov byte [esp + 0x350], 3
test ebp, ebp
je 0x46f545
lea edx, [ebp + 0x68]
jmp 0x46f547
xor edx, edx
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x1c]
mov esi, dword [ecx]
push 0
push edx
lea edx, [esp + 0x88]
push edx
mov edx, dword [esp + 0x368]
push 3
push edx
push eax
mov eax, dword [esi + 0x10]
push ecx
call eax
lea esi, [esp + 0x80]
test eax, eax
jne 0x46f5b8
mov dword [ebx + 0x2c], 1
call fcn.00499ca0
mov byte [esp + 0x350], 1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x46f59b
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x35c]
call fcn.004016f0
lea ecx, [esp + 0x36c]
call fcn.004016f0
jmp 0x4707c6
mov byte [esp + 0x350], 2
call fcn.00499ca0
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
lea edx, [esp + 0xf0]
push edx
push eax
mov eax, dword [ecx + 0x18]
call eax
lea ecx, [esp + 0x30]
push ecx
mov ecx, eax
call fcn.00401640
lea edx, [esp + 0x24]
push 1
push edx
mov byte [esp + 0x358], 4
call int.00429e20
add esp, 8
mov byte [esp + 0x350], 5
mov eax, dword [esp + 0x24]
cmp dword [eax - 0xc], 0
jne 0x46f636
mov dword [ebx + 0x2c], 1
mov byte [esp + 0x350], 4
jmp 0x470711
mov dword [ebx + 0x2c], 1
mov byte [esp + 0x350], 1
jmp 0x470761
lea esi, [esp + 0x9c]
call fcn.00404b40
mov byte [esp + 0x350], 6
mov ecx, dword [esp + 0x1c]
xor eax, eax
lea edx, [esp + 0x4c]
mov dword [esp + 0xa4], ecx
push edx
mov ecx, 0x510130
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], eax
call fcn.00401640
push eax
lea edi, [esp + 0xac]
mov byte [esp + 0x354], 7
call int.0041ca50
mov byte [esp + 0x350], 6
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46f6b1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [esp + 0x24]
lea edi, [esp + 0xc0]
call fcn.00404930
mov dword [esp + 0xc4], 0
call fcn.004b1f90
sub esp, 0x3c
mov ecx, esp
mov dword [esp + 0x74], esp
push ecx
lea edi, [esp + 0xdc]
mov esi, eax
call fcn.0040edf0
push esi
call fcn.004a4a80
test eax, eax
je 0x4706e3
mov edx, dword [esi]
mov edx, dword [edx + 0x2c]
mov dword [esi + 0x98], 0
mov eax, dword [ebp + 4]
push eax
mov ecx, esi
call edx
cmp eax, 1
je 0x46f778
mov dword [ebx + 0x2c], 1
mov eax, dword [esi]
mov edx, dword [eax + 0x28]
push 1
mov ecx, esi
call edx
mov esi, edi
call fcn.0040ed90
lea ecx, [esp + 0x24]
call fcn.004016f0
lea ecx, [esp + 0x30]
call fcn.004016f0
mov byte [esp + 0x350], 1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x46f756
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x35c]
call fcn.004016f0
lea ecx, [esp + 0x36c]
call fcn.004016f0
mov eax, 0x80004004
jmp 0x4707cb
mov eax, dword [esp + 0x368]
cmp eax, 4
je 0x46f78d
cmp eax, 3
jne 0x46fa7c
cmp dword [esp + 0x20], 0
je 0x46fa7c
lea eax, [esp + 0x18]
push 1
push eax
call int.00429e20
add esp, 8
mov byte [esp + 0x350], 8
mov ecx, dword [esp + 0x18]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x46f7ce
mov edx, 0x510130
lea edi, [esp + 0x18]
call fcn.00401600
mov edi, dword [esp + 0x20]
lea esi, [esp + 0x38]
xor ebp, ebp
call fcn.0041c960
mov ebx, dword [sym.imp.KERNEL32.dll_MoveFileExW]
mov edi, dword [esp + 0x20]
mov esi, dword [edi + 0x10]
cmp dword [edi + 0xc], esi
jbe 0x46f7f4
call fcn.004e48f7
mov ecx, dword [esp + 0x38]
mov eax, dword [edi]
test ecx, ecx
je 0x46f802
cmp ecx, eax
je 0x46f807
call fcn.004e48f7
cmp dword [esp + 0x3c], esi
je 0x46f99e
lea esi, [esp + 0x38]
call fcn.004761f0
push 0x511ddc
lea edx, [esp + 0x28]
mov esi, eax
push edx
lea eax, [esp + 0x5c]
push eax
call fcn.00404510
add esp, 0xc
push esi
push eax
lea ecx, [esp + 0x54]
push ecx
mov byte [esp + 0x35c], 9
call fcn.0041d700
add esp, 0xc
add esi, 8
push esi
push eax
lea edx, [esp + 0x3c]
push edx
mov byte [esp + 0x35c], 0xa
call fcn.0041d700
add esp, 0xc
mov byte [esp + 0x350], 0xc
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46f88c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 0xd
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46f8b4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
test al, 0x10
je 0x46f959
mov edx, dword [esp + 0x18]
cmp dword [edx - 0xc], 0
jne 0x46f8e3
lea eax, [esp + 0x34]
push eax
call fcn.0041abf0
add esp, 4
jmp 0x46f964
lea esi, [esp + 0x2c]
call fcn.004048a0
push ebp
push 0x5120d0
mov edi, esi
mov byte [esp + 0x358], 0xe
call fcn.00404890
push 0x511ddc
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x38]
push edx
inc ebp
call fcn.00404510
add esp, 0x14
mov ecx, esi
push ecx
push eax
lea edx, [esp + 0x4c]
push edx
mov byte [esp + 0x35c], 0xf
call fcn.0041d700
mov eax, dword [eax]
add esp, 0xc
push 1
push eax
mov eax, dword [esp + 0x3c]
push eax
call ebx
lea ecx, [esp + 0x44]
call fcn.004016f0
lea ecx, [esp + 0x28]
call fcn.004016f0
mov ecx, esi
call fcn.004016f0
jmp 0x46f964
mov ecx, dword [esp + 0x34]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [esp + 0x350], 8
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46f98c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea edi, [esp + 0x78]
lea esi, [esp + 0x38]
call fcn.00476220
jmp 0x46f7e3
mov byte [esp + 0x350], 6
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 0x46f9c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0
call fcn.004b1ee0
mov ebp, eax
add esp, 4
lea eax, [esp + 0x60]
push eax
mov dword [esp + 0x3c], ebp
call fcn.00474090
push 0x516538
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x30]
push edx
mov byte [esp + 0x35c], 0x13
call fcn.00404510
mov eax, dword [eax]
add esp, 0xc
lea ecx, [esp + 0xf4]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46fa32
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, 0xffffffff
jne 0x46fb8c
mov ecx, dword [esp + 0x48]
lea esi, [esp + 0x60]
mov dword [ecx + 0x2c], 1
call fcn.0041d600
lea esi, [esp + 0x9c]
call fcn.0040ed90
mov byte [esp + 0x350], 4
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x470721
cmp eax, 2
jne 0x46f9c6
cmp dword [esp + 0x20], 0
je 0x46f9c6
mov edi, dword [esp + 0x20]
lea esi, [esp + 0x38]
call fcn.0041c960
mov ebp, dword [sym.imp.KERNEL32.dll_MoveFileW]
mov bl, 0x12
mov edi, dword [esp + 0x20]
mov esi, dword [edi + 0x10]
cmp dword [edi + 0xc], esi
jbe 0x46fab6
call fcn.004e48f7
mov ecx, dword [esp + 0x38]
mov eax, dword [edi]
test ecx, ecx
je 0x46fac4
cmp ecx, eax
je 0x46fac9
call fcn.004e48f7
cmp dword [esp + 0x3c], esi
je 0x46f9c6
lea esi, [esp + 0x38]
call fcn.004761f0
push 0x511ddc
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x54]
push edx
mov esi, eax
call fcn.00404510
add esp, 0xc
lea ecx, [esi + 8]
push ecx
push eax
lea edx, [esp + 0x5c]
push edx
mov byte [esp + 0x35c], 0x10
call fcn.0041d700
add esp, 0xc
mov edi, eax
push 0x511ddc
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x4c]
push ecx
mov byte [esp + 0x35c], 0x11
call fcn.00404510
add esp, 0xc
push esi
push eax
lea edx, [esp + 0x30]
push edx
mov byte [esp + 0x35c], bl
call fcn.0041d700
mov edi, dword [edi]
mov eax, dword [eax]
add esp, 0xc
push edi
push eax
call ebp
lea ecx, [esp + 0x28]
call fcn.004016f0
lea ecx, [esp + 0x44]
call fcn.004016f0
lea ecx, [esp + 0x54]
call fcn.004016f0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x350], 6
call fcn.004016f0
lea edi, [esp + 0x78]
lea esi, [esp + 0x38]
call fcn.00476220
jmp 0x46faa5
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x124]
call fcn.00401640
mov bl, 0x15
mov byte [esp + 0x350], 0x14
mov edx, dword [esp + 0x18]
push 0x512924
push edx
call fcn.004e4707
add esp, 8
test eax, eax
je 0x46fc6d
mov eax, dword [esp + 0x18]
push 0x5153dc
push eax
call fcn.004e4707
add esp, 8
test eax, eax
je 0x46fc6d
push 0x511ddc
lea ecx, [esp + 0x28]
push ecx
lea edx, [esp + 0x5c]
push edx
call fcn.00404510
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
push eax
lea edx, [esp + 0x4c]
push edx
mov byte [esp + 0x35c], bl
call fcn.0041d700
add esp, 0xc
push eax
lea edi, [esp + 0x64]
mov byte [esp + 0x354], 0x16
call int.0041ca50
mov byte [esp + 0x350], bl
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46fc45
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 0x14
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46fc6d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xf4]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
mov byte [esp + 0x350], 0x13
test eax, eax
je 0x46fcbe
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46fca8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x124]
call fcn.00401640
jmp 0x46fb9f
lea ecx, [esp + 0x18]
call fcn.004016f0
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov edx, dword [0x563288]
mov eax, dword [edx + 0xc]
mov ecx, 0x563288
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
cmp dword [esp + 0x360], 0
mov byte [esp + 0x350], 0x17
lea edi, [esp + 0x18]
mov edx, str..zip
je 0x46fd05
mov edx, 0x510c08
call fcn.00401600
mov ebx, dword [esp + 0x40]
mov ecx, dword [ebx]
cmp dword [ecx - 0xc], 0
jne 0x46ff6a
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 0x6c]
call eax
mov edx, eax
mov edi, ebx
call fcn.00401600
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x7c]
push eax
call edx
mov ecx, eax
lea eax, [esp + 0x4c]
add ecx, 4
push eax
call fcn.00401640
mov esi, dword [esp + 0x5c]
mov byte [esp + 0x350], 0x18
mov ecx, dword [esi + 0x51d4]
add esi, 0x51d4
push ebx
call fcn.004047e0
test eax, eax
je 0x46fdba
lea ecx, [esp + 0x4c]
push ecx
mov ecx, 0x5105d8
call fcn.004047e0
test eax, eax
jne 0x46fdba
mov eax, esi
call fcn.00404930
mov ecx, 0x2e
mov esi, ebx
call fcn.00427460
test eax, eax
jle 0x46fe5e
push ebx
lea ecx, [esp + 0x2c]
call fcn.0041ce10
mov byte [esp + 0x350], 0x19
call fcn.00404930
lea ecx, [esp + 0x28]
jmp 0x46fe51
mov eax, dword [esp + 0x1c]
mov edx, dword [eax]
push eax
mov eax, dword [edx + 0x90]
call eax
test eax, eax
je 0x46fe5e
lea ecx, [esp + 0x4c]
push ecx
mov ecx, 0x50fd60
call fcn.004047e0
test eax, eax
jne 0x46fe5e
mov eax, dword [ebx]
sub eax, 0x10
call fcn.004048c0
add eax, 0x10
mov dword [esp + 0x2c], eax
lea edi, [esp + 0x2c]
mov byte [esp + 0x350], 0x1a
call fcn.00417800
xor ecx, ecx
mov esi, edi
call fcn.00401520
mov edx, dword [esp + 0x2c]
push str..part
push 0
push edx
mov esi, eax
call dword [sym.imp.SHLWAPI.dll_StrRStrIW]
test eax, eax
jbe 0x46fe4d
sub eax, esi
sar eax, 1
push ebx
lea ecx, [esp + 0x2c]
call fcn.0041ce10
mov edi, ebx
mov byte [esp + 0x350], 0x1b
call fcn.00404930
lea ecx, [esp + 0x28]
call fcn.004016f0
lea ecx, [esp + 0x2c]
mov byte [esp + 0x350], 0x18
call fcn.004016f0
mov eax, dword [ebx]
push 0x2e
push eax
call fcn.004e5c9d
add esp, 8
test eax, eax
jne 0x46fe74
or esi, 0xffffffff
jmp 0x46fe7a
sub eax, dword [ebx]
sar eax, 1
mov esi, eax
mov eax, dword [0x563288]
mov edx, dword [eax + 0xc]
mov ecx, 0x563288
call edx
add eax, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x40]
mov bl, 0x1c
mov byte [esp + 0x350], bl
test esi, esi
jle 0x46fed0
push eax
mov eax, esi
lea ecx, [esp + 0x2c]
call fcn.0041ce10
lea edi, [esp + 0x2c]
mov byte [esp + 0x350], 0x1d
call fcn.00404930
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], bl
call fcn.004016f0
jmp 0x46fed9
lea edi, [esp + 0x2c]
call fcn.00404930
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x30]
push edx
lea eax, [esp + 0x3c]
push eax
call fcn.0041d700
add esp, 0xc
mov byte [esp + 0x350], 0x1e
mov ecx, dword [esp + 0x34]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push ecx
call ebx
test eax, eax
je 0x46ff34
mov ebp, dword [esp + 0x2c]
xor esi, esi
nop
mov edx, dword [esp + 0x18]
push edx
inc esi
push esi
push ebp
push str._s__d__s
lea edi, [esp + 0x44]
call fcn.00404890
mov eax, dword [esp + 0x44]
add esp, 0x10
push eax
call ebx
test eax, eax
jne 0x46ff10
mov edi, dword [esp + 0x40]
lea eax, [esp + 0x34]
call fcn.00404930
lea ecx, [esp + 0x34]
call fcn.004016f0
lea ecx, [esp + 0x2c]
call fcn.004016f0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x350], 0x17
call fcn.004016f0
mov ebp, dword [esp + 0x38]
mov ebx, edi
mov ecx, dword [esp + 0x70]
mov edx, ecx
sub edx, dword [esp + 0x6c]
xor eax, eax
sar edx, 2
test edx, edx
jbe 0x46ffa0
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx]
push 1
push 0
push ecx
push 0
push 0
push eax
lea edx, [esp + 0x78]
push edx
push 0
push ebp
xor ecx, ecx
call fcn.0049ac90
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x368]
cmp edx, 4
je 0x46ffb4
test edx, edx
jne 0x4700f3
cmp dword [esp + 0x20], 0
je 0x4700f3
mov ebx, dword [esp + 0x20]
lea esi, [esp + 0x4c]
mov edi, ebx
call fcn.0041c960
mov esi, dword [esp + 0x50]
mov edi, dword [ebx + 0x10]
mov ecx, dword [esp + 0x4c]
cmp dword [ebx + 0xc], edi
jbe 0x46ffe7
call fcn.004e48f7
mov ecx, dword [esp + 0x4c]
mov eax, dword [ebx]
test ecx, ecx
je 0x46fff1
cmp ecx, eax
je 0x46fffa
call fcn.004e48f7
mov ecx, dword [esp + 0x4c]
cmp esi, edi
je 0x470235
test ecx, ecx
jne 0x4700e8
call fcn.004e48f7
xor eax, eax
cmp esi, dword [eax + 0x10]
jb 0x47001b
call fcn.004e48f7
mov eax, dword [esi]
push ecx
sub eax, 0x10
mov dword [esp + 0x2c], esp
mov edi, esp
call fcn.004048c0
add eax, 0x10
mov dword [edi], eax
mov eax, dword [esp + 0x44]
mov byte [esp + 0x354], 0x1f
mov eax, dword [eax]
push ecx
sub eax, 0x10
mov dword [esp + 0x4c], esp
mov edi, esp
call fcn.004048c0
add eax, 0x10
mov dword [edi], eax
push 0x511ddc
lea ecx, [esi + 4]
push ecx
lea edx, [esp + 0x48]
push edx
mov byte [esp + 0x364], 0x20
call fcn.00404510
add esp, 8
mov edx, esp
mov byte [esp + 0x35c], 0x21
lea ecx, [esi + 8]
mov dword [esp + 0x60], esp
push ecx
push eax
push edx
call fcn.0041d700
add esp, 0xc
push ebp
mov byte [esp + 0x360], 0x22
call fcn.0049a820
mov byte [esp + 0x350], 0x17
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4700c3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x4c]
test eax, eax
jne 0x4700ef
call fcn.004e48f7
xor eax, eax
cmp esi, dword [eax + 0x10]
jb 0x4700dc
call fcn.004e48f7
mov ebx, dword [esp + 0x20]
add esi, 0xc
jmp 0x46ffd2
mov eax, dword [ecx]
jmp 0x470011
mov eax, dword [eax]
jmp 0x4700d2
cmp edx, 1
jne 0x4701c5
cmp dword [esp + 0x20], 0
je 0x47022d
mov edi, dword [esp + 0x20]
lea esi, [esp + 0x54]
call fcn.0041c960
mov bl, 0x24
mov esi, dword [esp + 0x20]
mov edi, dword [esi + 0x10]
cmp dword [esi + 0xc], edi
jbe 0x470127
call fcn.004e48f7
mov ecx, dword [esp + 0x54]
mov eax, dword [esi]
test ecx, ecx
je 0x470135
cmp ecx, eax
je 0x47013a
call fcn.004e48f7
cmp dword [esp + 0x58], edi
je 0x470235
lea esi, [esp + 0x54]
call fcn.004761f0
mov esi, eax
mov eax, dword [esi]
push ecx
sub eax, 0x10
mov dword [esp + 0x3c], esp
mov edi, esp
call fcn.004048c0
add eax, 0x10
mov dword [edi], eax
push ecx
mov ecx, dword [esp + 0x48]
mov byte [esp + 0x358], 0x23
mov eax, dword [ecx]
sub eax, 0x10
mov dword [esp + 0x30], esp
mov edi, esp
call fcn.004048c0
add eax, 0x10
mov dword [edi], eax
mov byte [esp + 0x358], bl
mov eax, dword [esi + 8]
push ecx
sub eax, 0x10
mov dword [esp + 0x50], esp
mov edi, esp
call fcn.004048c0
add eax, 0x10
mov dword [edi], eax
push ebp
mov byte [esp + 0x360], 0x17
call fcn.0049aa70
lea edi, [esp + 0x78]
lea esi, [esp + 0x54]
call fcn.00476220
jmp 0x470116
cmp edx, 3
jne 0x47022d
sub ecx, dword [esp + 0x6c]
test ecx, 0xfffffffc
jne 0x47022d
push ecx
mov edx, esp
mov dword [esp + 0x3c], esp
push edx
xor ecx, ecx
call fcn.00401640
mov byte [esp + 0x354], 0x25
mov eax, dword [ebx]
push ecx
sub eax, 0x10
mov dword [esp + 0x30], esp
mov esi, esp
call fcn.004048c0
add eax, 0x10
mov dword [esi], eax
push ecx
mov byte [esp + 0x35c], 0x26
mov eax, esp
mov dword [esp + 0x50], esp
push eax
mov ecx, 0x516f68
call fcn.00401640
push ebp
mov byte [esp + 0x360], 0x17
call fcn.0049aa70
jmp 0x470235
test eax, eax
je 0x47065f
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x74]
push eax
call edx
push ecx
mov ecx, esp
mov dword [esp + 0x3c], esp
push ecx
mov ecx, eax
call fcn.00401640
mov ecx, ebp
call fcn.0049a720
mov edi, dword [esp + 0x368]
mov eax, dword [esp + 0x36c]
push ecx
mov dword [esp + 0x3c], esp
mov esi, esp
cmp edi, 5
je 0x470275
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
call fcn.004048c0
add eax, 0x10
mov dword [esi], eax
mov esi, ebp
call fcn.0049a7a0
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax + 4]
mov edx, dword [ebp]
mov edx, dword [edx + 0x2c]
push ecx
mov ecx, ebp
call edx
cmp eax, 1
je 0x4703c4
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov ecx, dword [esp + 0x48]
mov byte [esp + 0x350], 0x13
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [ecx + 0x2c], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4702e4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x60]
call fcn.0041d600
lea esi, [esp + 0x9c]
call fcn.0040ed90
mov byte [esp + 0x350], 4
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 0x470321
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 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 0x470349
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x470361
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x350], 0
mov eax, dword [esp + 0x35c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47038c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x350], 0xffffffff
mov eax, dword [esp + 0x36c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4703ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x80004004
jmp 0x4707cb
cmp edi, 3
jne 0x4705c9
mov ecx, dword [esp + 0x70]
sub ecx, dword [esp + 0x6c]
test ecx, 0xfffffffc
jne 0x4705c9
mov dword [esp + 0x20], 0
lea edx, [esp + 0x20]
push edx
mov byte [esp + 0x354], 0x27
call fcn.004283e0
test eax, eax
mov eax, dword [esp + 0x20]
jne 0x470647
test eax, eax
je 0x470647
lea esi, [esp + 0x80]
call fcn.00428390
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x40]
push 0
lea eax, [edx + 0x68]
push eax
mov byte [esp + 0x358], 0x28
mov ecx, dword [ecx]
mov esi, dword [esp + 0x28]
mov edx, dword [edx + 4]
mov edi, dword [esi]
lea eax, [esp + 0x88]
push eax
push 3
push ecx
mov ecx, dword [edi + 0x10]
push edx
push esi
call ecx
test eax, eax
jne 0x4704b6
mov edx, dword [esp + 0x48]
lea esi, [esp + 0x80]
mov dword [edx + 0x2c], 1
call fcn.00499ca0
mov byte [esp + 0x350], 0x17
mov eax, dword [esp + 0x20]
test eax, eax
je 0x470481
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x18]
call fcn.004016f0
lea esi, [esp + 0x60]
call fcn.0041d600
lea esi, [esp + 0x9c]
call fcn.0040ed90
lea ecx, [esp + 0x24]
call fcn.004016f0
lea ecx, [esp + 0x30]
call fcn.004016f0
jmp 0x46f583
push 0
call fcn.004b1ee0
mov esi, eax
add esp, 4
lea eax, [esp + 0xd8]
push eax
call fcn.00474090
lea ecx, [esp + 0x38]
push ecx
mov bl, 0x29
mov ecx, 0x516f68
mov byte [esp + 0x354], bl
call fcn.00401640
push eax
lea edi, [esp + 0xdc]
mov byte [esp + 0x354], 0x2a
call int.0041ca50
lea ecx, [esp + 0x38]
mov byte [esp + 0x350], bl
call fcn.004016f0
mov eax, dword [esp + 0x20]
push 0xffffffffffffffff
mov edx, edi
push edx
push eax
push esi
call fcn.0049a050
test eax, eax
jne 0x470564
mov ecx, dword [esp + 0x48]
lea esi, [esp + 0xd8]
mov dword [ecx + 0x2c], 1
call fcn.0041d600
lea esi, [esp + 0x80]
call fcn.00499ca0
mov byte [esp + 0x350], 0x17
mov eax, dword [esp + 0x20]
test eax, eax
je 0x470481
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
jmp 0x470481
mov eax, dword [esi + 4]
mov edx, dword [eax + 8]
lea ecx, [esi + 4]
push 0
call edx
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
mov ecx, dword [esp + 0x5c]
mov edx, dword [ecx + 4]
mov eax, dword [esi]
mov eax, dword [eax + 0x2c]
push edx
mov ecx, esi
call eax
cmp eax, 1
jne 0x470520
mov eax, dword [esi]
mov edx, dword [eax + 0x28]
push 1
mov ecx, esi
call edx
lea esi, [esp + 0xd8]
call fcn.0041d600
lea esi, [esp + 0x80]
call fcn.00499ca0
mov byte [esp + 0x350], 0x17
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4705c9
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp]
mov edx, dword [eax + 0x28]
push 1
mov ecx, ebp
call edx
mov eax, dword [esp + 0x48]
lea ecx, [esp + 0x18]
mov dword [eax + 0x2c], 1
call fcn.004016f0
lea esi, [esp + 0x60]
call fcn.0041d600
lea esi, [esp + 0x9c]
call fcn.0040ed90
lea ecx, [esp + 0x24]
call fcn.004016f0
lea ecx, [esp + 0x30]
call fcn.004016f0
mov byte [esp + 0x350], 1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x470628
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
lea ecx, [esp + 0x35c]
call fcn.004016f0
lea ecx, [esp + 0x36c]
call fcn.004016f0
xor eax, eax
jmp 0x4707cb
mov ecx, dword [esp + 0x48]
mov dword [ecx + 0x2c], 1
mov byte [esp + 0x350], 0x17
jmp 0x47054f
lea eax, [esp + 0x38]
push 0x1c2
push eax
call fcn.00433510
mov eax, dword [eax]
mov ecx, dword [esp + 0x64]
mov edx, dword [ecx + 4]
push 0x40
push eax
push edx
xor eax, eax
call fcn.00488c60
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
add esp, 0x14
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4706a5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x48]
mov byte [esp + 0x350], 0x13
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
mov dword [ecx + 0x2c], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4706d8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x60]
call fcn.0041d600
jmp 0x4706f9
mov dword [ebx + 0x2c], 1
test esi, esi
je 0x4706f9
mov edx, dword [esi]
mov eax, dword [edx + 0x28]
push 1
mov ecx, esi
call eax
lea esi, [esp + 0x9c]
call fcn.0040ed90
mov byte [esp + 0x350], 4
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 0x47072d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 2
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x470755
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x350], 1
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x47076d
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov byte [esp + 0x350], 0
mov eax, dword [esp + 0x35c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x470798
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x350], 0xffffffff
mov eax, dword [esp + 0x36c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4707c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 0x80004005
mov ecx, dword [esp + 0x348]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x330]
xor ecx, esp
call fcn.004e3edb
add esp, 0x340
ret 0x18