Function at 0x46f960
Capabilities:
Enumerate files on windows
Enumerate files recursively

Disassembly:
mov eax, 0x167c
call fcn.004c5440
mov edx, dword [0x4e3a2c]
push ebx
push ebp
push esi
mov ebp, ecx
push edi
mov ecx, 0xff
xor eax, eax
lea edi, [esp + 0xe90]
mov dword [esp + 0xe8c], edx
rep stosd dword es:[edi], eax
mov ecx, 0xff
lea edi, [esp + 0x890]
mov dword [esp + 0x88c], edx
mov esi, dword [esp + 0x1690]
rep stosd dword es:[edi], eax
xor edx, edx
mov ecx, 0x93
lea edi, [esp + 0x40]
mov dword [esp + 0x3c], edx
rep stosd dword es:[edi], eax
mov ecx, dword [ebp + 0x5e4]
mov dword [esp + 0x14], edx
inc ecx
cmp esi, edx
mov dword [esp + 0x18], edx
mov dword [ebp + 0x5e4], ecx
lea ebx, [ebp + 0x5e0]
jne 0x46f9e1
xor edi, edi
mov dword [esp + 0x10], edi
jmp 0x46f9ee
push esi
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [esp + 0x10], eax
mov edi, eax
mov eax, dword [ebx]
cmp dword [eax - 0xc], 1
jg 0x46f9fb
cmp edi, dword [eax - 4]
jle 0x46fa0e
mov ecx, ebx
call fcn.0040e950
push edi
mov ecx, ebx
call fcn.004012f0
test eax, eax
je 0x46fa3b
lea eax, [edi + edi]
mov edi, dword [ebx]
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx]
mov esi, dword [esp + 0x1690]
mov dword [ecx - 8], edx
mov ecx, dword [ebx]
mov word [eax + ecx], 0
mov ecx, ebp
call fcn.00472120
lea edx, [esp + 0x88c]
push esi
push edx
call fcn.004c60da
lea eax, [esp + 0x894]
push 0x4d9c5c
push eax
call fcn.004c60da
lea ecx, [esp + 0x89c]
lea edx, [esp + 0xe9c]
push ecx
push edx
call fcn.004c60da
lea eax, [esp + 0xea4]
push 0x4da1f4
push eax
call fcn.004c60da
mov eax, dword [ebp + 0x670]
xor edi, edi
add esp, 0x20
cmp eax, edi
jne 0x470320
lea ecx, [esp + 0x3c]
lea edx, [esp + 0xe8c]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
cmp esi, edi
mov dword [esp + 0x38], esi
je 0x470335
cmp esi, 0xffffffff
je 0x470335
cmp dword [ebp + 0x670], edi
jne 0x470319
mov ecx, ebp
call fcn.00472120
test byte [esp + 0x3c], 0x10
je 0x46ff51
lea eax, [esp + 0x68]
push 0x4d9e7c
push eax
call fcn.004c5509
add esp, 8
test eax, eax
je 0x4702cb
lea ecx, [esp + 0x68]
push 0x4d9e80
push ecx
call fcn.004c5509
add esp, 8
test eax, eax
je 0x4702cb
cmp dword [0x4de55c], edi
je 0x46fb2d
mov eax, dword [esp + 0x3c]
test ah, 4
jne 0x4702cb
mov edx, dword [0x4d9540]
push ecx
mov edi, esp
lea eax, [esp + 0x6c]
test eax, eax
mov dword [edi], edx
je 0x46fc22
lea ecx, [esp + 0x6c]
shr ecx, 0x10
jne 0x46fbee
xor ebx, ebx
lea edx, [esp + 0x6c]
lea eax, [esp + 0x290]
mov bx, dx
push 0x100
push eax
push ebx
call fcn.0040e810
mov ecx, 0x100
sub ecx, eax
cmp ecx, 1
jle 0x46fba8
lea edx, [esp + 0x290]
test edx, edx
jne 0x46fb88
xor eax, eax
jmp 0x46fb96
lea eax, [esp + 0x290]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea ecx, [esp + 0x290]
push ecx
push eax
mov ecx, edi
call fcn.00401630
jmp 0x46fc22
push 0x1ff
mov ecx, edi
mov esi, 0x200
call fcn.0040f900
test eax, eax
je 0x46fbe3
push esi
push eax
push ebx
call fcn.0040e810
mov edx, esi
sub edx, eax
cmp edx, 1
jg 0x46fbe3
add esi, 0x100
mov ecx, edi
lea eax, [esi - 1]
push eax
call fcn.0040f900
test eax, eax
jne 0x46fbbd
push 0xffffffffffffffff
mov ecx, edi
call int.00401970
jmp 0x46fc22
lea ecx, [esp + 0x6c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
test esi, esi
je 0x46fc22
push esi
mov ecx, edi
call fcn.004012f0
test eax, eax
je 0x46fc22
mov edi, dword [edi]
lea ecx, [esi + esi]
mov edx, ecx
lea esi, [esp + 0x6c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call fcn.00470a10
test eax, eax
je 0x4702cb
mov eax, dword [ebp + 0x668]
mov ebx, 1
add eax, ebx
mov esi, 0
mov dword [ebp + 0x668], eax
mov edi, dword [ebp + 0x66c]
adc edi, esi
mov ecx, 0xff
mov dword [ebp + 0x66c], edi
mov eax, dword [0x4e3a2c]
mov dword [esp + 0x48c], eax
xor eax, eax
lea edi, [esp + 0x490]
lea edx, [esp + 0x48c]
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x88c]
push ecx
push edx
call fcn.004c6104
lea eax, [esp + 0x70]
lea ecx, [esp + 0x494]
push eax
push ecx
call fcn.004c60da
mov eax, dword [ebp + 0x2c4]
add esp, 0x10
cmp eax, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x10], esi
jle 0x46fd12
mov eax, dword [esp + 0x169c]
mov edx, dword [esp + 0x16a0]
inc eax
push edx
lea ecx, [esp + 0x14]
push eax
lea edx, [esp + 0x24]
push ecx
lea eax, [esp + 0x498]
push edx
push eax
mov ecx, ebp
call fcn.0046f960
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
add edi, eax
mov eax, dword [esp + 0x1694]
mov dword [esp + 0x14], edi
adc esi, edx
mov edx, dword [eax]
mov dword [esp + 0x18], esi
add edx, ecx
mov dword [eax], edx
mov eax, dword [esp + 0x1698]
mov edx, dword [esp + 0x10]
mov ecx, dword [eax]
add ecx, edx
jmp 0x4702c9
mov eax, dword [esp + 0x16a0]
push esi
push eax
push ecx
lea edx, [esp + 0x498]
mov ecx, esp
push edx
call fcn.0040ea20
mov ecx, ebp
call fcn.0046e1e0
mov esi, eax
mov eax, dword [esp + 0x169c]
inc eax
push esi
lea ecx, [esp + 0x14]
push eax
lea edx, [esp + 0x24]
push ecx
lea eax, [esp + 0x498]
push edx
push eax
mov ecx, ebp
mov dword [esp + 0x40], esi
call fcn.0046f960
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x1690]
test eax, eax
mov dword [esp + 0x24], edx
jne 0x46fd76
xor edi, edi
mov dword [esp + 0x28], edi
jmp 0x46fd83
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov dword [esp + 0x28], eax
mov edi, eax
mov eax, dword [ebp + 0x5e0]
lea ebx, [ebp + 0x5e0]
mov edx, dword [eax - 0xc]
lea ecx, [eax - 0xc]
cmp edx, 1
jg 0x46fd9f
cmp edi, dword [eax - 4]
jle 0x46fdd9
mov edx, dword [0x4d9544]
add eax, 0xfffffff4
cmp eax, edx
je 0x46fdcd
push ecx
call dword [sym.imp.KERNEL32.dll_InterlockedDecrement]
test eax, eax
jg 0x46fdc5
mov ecx, dword [ebx]
sub ecx, 0xc
push ecx
call fcn.004c5432
add esp, 4
mov edx, dword [0x4d9540]
mov dword [ebx], edx
push edi
mov ecx, ebx
call fcn.004012f0
test eax, eax
je 0x46fe0a
mov esi, dword [esp + 0x1690]
lea eax, [edi + edi]
mov edi, dword [ebx]
mov ecx, eax
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
mov edx, dword [esp + 0x28]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebx]
mov esi, dword [esp + 0x2c]
mov dword [ecx - 8], edx
mov ecx, dword [ebx]
mov word [eax + ecx], 0
mov ecx, dword [esp + 0x1c]
test ecx, ecx
ja 0x46fe21
push 0
push esi
mov ecx, ebp
call fcn.00450950
jmp 0x4702ef
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
add esi, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x14], esi
adc edx, eax
mov eax, dword [esp + 0x1694]
mov dword [esp + 0x18], edx
lea edx, [esp + 0x68]
mov ebx, dword [eax]
push edx
add ebx, ecx
mov ecx, dword [esp + 0x14]
mov dword [eax], ebx
mov eax, dword [esp + 0x169c]
add dword [eax], ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ecx, dword [ebp + 0x67c]
cdq
mov edi, eax
mov eax, dword [esp + 0x24]
cmp ecx, eax
mov ebx, edx
ja 0x46fe95
jb 0x46fe85
mov edx, dword [ebp + 0x678]
mov ecx, dword [esp + 0x20]
cmp edx, ecx
jae 0x46fe95
mov ecx, dword [esp + 0x20]
mov dword [ebp + 0x678], ecx
mov dword [ebp + 0x67c], eax
mov edx, dword [esp + 0x2c]
mov ecx, ebp
push edx
call fcn.0046e1c0
mov esi, eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 0x2c], eax
mov ecx, dword [esp + 0x10]
mov eax, 1
mov dword [esi + 0x28], ecx
mov dword [esi + 0x58], eax
mov edx, dword [esp + 0x50]
mov dword [esi + 0x38], edx
mov ecx, dword [esp + 0x54]
mov dword [esi + 0x3c], ecx
mov edx, dword [esp + 0x40]
mov dword [esi + 0x40], edx
mov ecx, dword [esp + 0x44]
mov dword [esi + 0x44], ecx
mov edx, dword [esp + 0x48]
mov dword [esi + 0x48], edx
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x20]
mov dword [esi + 0x4c], ecx
mov ecx, dword [esp + 0x24]
mov dword [esi + 0x30], edx
mov edx, dword [esp + 0x16a0]
mov dword [esi + 0x34], ecx
mov dword [esi + 0x60], edi
push edx
mov ecx, ebp
mov dword [esi + 0x68], eax
mov dword [esi + 0x64], ebx
call fcn.0046e1c0
mov ecx, dword [esi + 0x60]
mov edx, dword [esi + 0x64]
mov esi, dword [eax + 0x60]
add esi, ecx
mov dword [eax + 0x60], esi
mov ecx, dword [eax + 0x64]
adc ecx, edx
mov dword [eax + 0x64], ecx
mov eax, dword [ebp + 0x680]
push eax
mov ecx, ebp
call fcn.0046e1c0
mov edx, dword [eax + 0x60]
add edx, edi
mov dword [eax + 0x60], edx
mov ecx, dword [eax + 0x64]
adc ecx, ebx
mov dword [eax + 0x64], ecx
mov eax, dword [esp + 0x1698]
test eax, eax
je 0x4702cb
jmp 0x4702c6
mov esi, dword [ebp + 0x660]
push ecx
add esi, 1
mov dword [ebp + 0x660], esi
mov edx, dword [ebp + 0x664]
adc edx, edi
mov edi, esp
mov dword [ebp + 0x664], edx
mov ecx, dword [0x4d9540]
lea edx, [esp + 0x6c]
mov dword [edi], ecx
test edx, edx
je 0x470078
lea eax, [esp + 0x6c]
shr eax, 0x10
jne 0x470027
mov eax, dword [0x4edfe8]
xor ebx, ebx
lea ecx, [esp + 0x6c]
lea edx, [esp + 0xc90]
mov bx, cx
push 0x100
push edx
push ebx
push eax
call dword [sym.imp.USER32.dll_LoadStringW]
test eax, eax
jne 0x46ffc1
mov word [esp + 0xc90], ax
mov ecx, 0x100
sub ecx, eax
cmp ecx, 1
jle 0x46ffe1
lea edx, [esp + 0xc90]
mov ecx, edi
push edx
call fcn.004016e0
jmp 0x470078
push 0x1ff
mov ecx, edi
mov esi, 0x200
call fcn.0040f900
test eax, eax
je 0x47001c
push esi
push eax
push ebx
call fcn.0040e810
mov ecx, esi
sub ecx, eax
cmp ecx, 1
jg 0x47001c
add esi, 0x100
mov ecx, edi
lea edx, [esi - 1]
push edx
call fcn.0040f900
test eax, eax
jne 0x46fff6
push 0xffffffffffffffff
mov ecx, edi
call int.00401970
jmp 0x470078
lea eax, [esp + 0x6c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, eax
test esi, esi
je 0x470078
lea ecx, [esi + esi + 0xe]
push ecx
call fcn.004c58a5
add esp, 4
test eax, eax
je 0x470078
mov dword [eax], 1
mov word [eax + esi*2 + 0xc], 0
mov dword [eax + 4], esi
mov dword [eax + 8], esi
lea ecx, [esi + esi]
add eax, 0xc
mov edx, ecx
mov dword [edi], eax
lea esi, [esp + 0x6c]
mov edi, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call fcn.00470c90
test eax, eax
je 0x4702ef
mov ecx, dword [ebp + 0x5f0]
lea edi, [esp + 0x1290]
inc ecx
lea edx, [esp + 0x128c]
mov dword [ebp + 0x5f0], ecx
mov eax, dword [0x4e3a2c]
mov dword [esp + 0x128c], eax
mov ecx, 0xff
xor eax, eax
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x88c]
push ecx
push edx
call fcn.004c6104
lea eax, [esp + 0x70]
lea ecx, [esp + 0x1294]
push eax
push ecx
call fcn.004c60da
mov eax, dword [ebp + 0x2c4]
add esp, 0x10
cmp eax, 1
je 0x4700f8
lea edx, [esp + 0x3c]
mov ecx, ebp
push edx
call fcn.0046f170
mov dword [esp + 0x16a0], eax
lea eax, [esp + 0x68]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x5c]
cdq
mov dword [esp + 0x34], edx
xor edx, edx
mov ebx, eax
mov eax, dword [ebp + 0x67c]
xor edi, edi
or esi, edx
or edi, ecx
cmp eax, esi
ja 0x47013c
jb 0x470130
mov ecx, dword [ebp + 0x678]
cmp ecx, edi
jae 0x47013c
mov dword [ebp + 0x678], edi
mov dword [ebp + 0x67c], esi
mov eax, dword [ebp + 0x468]
test eax, eax
jne 0x4701ca
mov edx, dword [esp + 0x16a0]
push 0
push edx
push ecx
lea eax, [esp + 0x1298]
mov ecx, esp
push eax
call fcn.0040ea20
mov ecx, ebp
call fcn.0046e1e0
push eax
mov ecx, ebp
call fcn.0046e1c0
add eax, 0x28
mov ecx, 1
mov dword [eax + 8], edi
mov dword [eax + 4], ecx
mov dword [eax], 0
mov dword [eax + 0x30], ecx
mov dword [eax + 0xc], esi
mov edx, dword [esp + 0x50]
mov dword [eax + 0x10], edx
mov edx, dword [esp + 0x54]
mov dword [eax + 0x14], edx
mov edx, dword [esp + 0x40]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x44]
mov dword [eax + 0x1c], edx
mov edx, dword [esp + 0x48]
mov dword [eax + 0x20], edx
mov edx, dword [esp + 0x4c]
mov dword [eax + 0x24], edx
mov edx, dword [esp + 0x34]
mov dword [eax + 0x38], ebx
mov dword [eax + 0x3c], edx
mov dword [eax + 0x40], 0
jmp 0x4701cf
mov ecx, 1
cmp dword [ebp + 0x2c4], ecx
jle 0x470237
mov eax, dword [esp + 0x16a0]
mov ecx, ebp
push eax
call fcn.0046e1c0
mov edx, dword [eax + 0x2c]
mov ecx, dword [eax + 0x30]
inc edx
add ecx, edi
mov dword [eax + 0x2c], edx
mov dword [eax + 0x30], ecx
mov edx, dword [eax + 0x34]
mov ecx, dword [eax + 0x60]
adc edx, esi
add ecx, ebx
mov dword [eax + 0x34], edx
mov dword [eax + 0x60], ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [eax + 0x64]
adc edx, ecx
mov ecx, dword [eax + 0x30]
mov dword [eax + 0x64], edx
mov eax, dword [eax + 0x34]
cmp eax, dword [ebp + 0x67c]
jb 0x470255
ja 0x470229
cmp ecx, dword [ebp + 0x678]
jbe 0x470255
mov dword [ebp + 0x678], ecx
mov dword [ebp + 0x67c], eax
jmp 0x470255
mov edx, dword [esp + 0x16a0]
mov ecx, ebp
push edx
call fcn.0046e1c0
mov ecx, dword [eax + 0x60]
add ecx, ebx
mov dword [eax + 0x60], ecx
mov ecx, dword [esp + 0x34]
adc dword [eax + 0x64], ecx
mov eax, dword [ebp + 0x688]
mov ecx, dword [esp + 0x16a0]
add eax, edi
mov dword [ebp + 0x688], eax
mov edx, dword [ebp + 0x68c]
mov eax, dword [ebp + 0x680]
adc edx, esi
cmp eax, ecx
mov dword [ebp + 0x68c], edx
je 0x4702bb
push eax
mov ecx, ebp
call fcn.0046e1c0
test eax, eax
je 0x4702bb
mov edx, dword [ebp + 0x688]
mov edi, dword [eax + 0x60]
mov dword [eax + 0x30], edx
mov ecx, dword [ebp + 0x68c]
mov edx, dword [esp + 0x34]
add edi, ebx
mov dword [eax + 0x60], edi
mov esi, dword [eax + 0x64]
mov dword [eax + 0x34], ecx
mov ecx, dword [eax + 0x2c]
adc esi, edx
inc ecx
mov dword [eax + 0x64], esi
mov dword [eax + 0x2c], ecx
mov eax, dword [esp + 0x1694]
test eax, eax
je 0x4702cb
mov ecx, dword [eax]
inc ecx
mov dword [eax], ecx
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
xor eax, eax
xor esi, esi
or eax, edx
mov edx, dword [esp + 0x14]
or ecx, esi
add edx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], edx
adc eax, ecx
mov dword [esp + 0x18], eax
mov esi, dword [esp + 0x38]
lea eax, [esp + 0x3c]
xor edi, edi
push eax
push esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x470319
cmp dword [ebp + 0x670], edi
je 0x46fad2
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x167c
ret 0x14
pop edi
pop esi
xor eax, eax
pop ebp
xor edx, edx
pop ebx
add esp, 0x167c
ret 0x14