Function at 0x406360
Capabilities:
Enumerate files on windows

Disassembly:
mov eax, 0x266c
call fcn.00407bf0
push ebp
push edi
mov edi, dword [esp + 0x2678]
mov ebp, ecx
mov dword [esp + 0x14], ebp
cmp edi, 1
jle 0x4063b5
mov eax, dword [esp + 0x267c]
mov eax, dword [eax + 4]
mov dl, byte [eax]
cmp dl, 0x2d
je 0x406394
cmp dl, 0x2f
jne 0x4063b5
cmp byte [eax + 1], 0x3f
jne 0x4063b5
push 0
push dword [esp + 0x2684]
call fcn.004071e0
pop edi
xor al, al
pop ebp
add esp, 0x266c
ret 0x18
push ebx
push esi
push 0x104
lea eax, [esp + 0x28]
mov esi, 1
push 0
push eax
mov dword [esp + 0x1c], esi
call fcn.00409470
push 0x104
lea eax, [esp + 0x23c]
push 0
push eax
call fcn.00409470
add esp, 0x18
mov ebx, esi
mov dword [esp + 0x14], ebx
cmp edi, esi
jle 0x406805
nop word [eax + eax]
push 0x104
lea eax, [esp + 0x28]
push 0
push eax
call fcn.00409470
push 0x104
lea eax, [esp + 0x23c]
push 0
push eax
call fcn.00409470
mov eax, dword [esp + 0x269c]
add esp, 0x18
mov ebx, dword [eax + ebx*4]
mov dword [esp + 0x18], ebx
mov al, byte [ebx]
cmp al, 0x2d
je 0x406710
cmp al, 0x2f
je 0x406710
push 0x2a
push ebx
call fcn.00408f90
add esp, 8
test eax, eax
jne 0x40646a
push 0x3f
push ebx
call fcn.00408f90
add esp, 8
test eax, eax
jne 0x40646a
xor al, al
jmp 0x40646c
mov al, 1
cmp byte [esp + 0x2694], 0
je 0x4066b1
test al, al
je 0x4066b1
push 0x104
lea eax, [esp + 0x43c]
push 0
push eax
call fcn.00409470
push 0x103
lea eax, [esp + 0x448]
push ebx
push eax
call fcn.0040a690
lea eax, [esp + 0x450]
push 0x5c
push eax
call fcn.004090c0
add esp, 0x20
lea ebx, [esp + 0x438]
test eax, eax
je 0x4064d5
mov byte [eax], 0
lea ebx, [eax + 1]
lea esi, [esp + 0x438]
jmp 0x4064da
mov esi, 0x4291dc
push 0x104
lea eax, [esp + 0x12c]
push 0
push eax
call fcn.00409470
lea ecx, [esp + 0x134]
add esp, 0xc
sub ecx, esi
nop word [eax + eax]
mov al, byte [esi]
lea esi, [esi + 1]
mov byte [esi + ecx - 1], al
test al, al
jne 0x406500
lea ecx, [esp + 0x128]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x406517
sub ecx, edx
je 0x406547
cmp byte [esp + ecx + 0x127], 0x5c
je 0x406547
lea edi, [esp + 0x128]
dec edi
mov al, byte [edi + 1]
lea edi, [edi + 1]
test al, al
jne 0x406534
mov ax, word [0x4291e0]
mov word [edi], ax
push 0x108
lea eax, [esp + 0x334]
push 0
push eax
call fcn.00409470
add esp, 0xc
xor ecx, ecx
mov al, byte [esp + ecx + 0x128]
lea ecx, [ecx + 1]
mov byte [esp + ecx + 0x32f], al
test al, al
jne 0x406560
mov esi, ebx
mov al, byte [ebx]
inc ebx
test al, al
jne 0x406577
lea edi, [esp + 0x330]
sub ebx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406588
mov ecx, ebx
lea eax, [esp + 0x53c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebx
xor ebx, ebx
push eax
and ecx, 3
lea eax, [esp + 0x334]
rep movsb byte es:[edi], byte [esi]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov edi, eax
mov dword [esp + 0x20], edi
test edi, edi
je 0x406956
cmp edi, 0xffffffff
je 0x406956
nop dword [eax]
test byte [esp + 0x53c], 0x10
jne 0x40667b
xor eax, eax
mov cl, byte [esp + eax + 0x128]
lea eax, [eax + 1]
mov byte [esp + eax + 0x32f], cl
test cl, cl
jne 0x4065e0
lea edx, [esp + 0x568]
mov esi, edx
nop
mov al, byte [edx]
inc edx
test al, al
jne 0x406600
lea edi, [esp + 0x330]
sub edx, esi
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x406611
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x268c]
cmp esi, edi
jg 0x406914
push esi
lea eax, [esp + 0x28]
push 0x4291e8
push eax
call fcn.004078a0
add esp, 0xc
lea eax, [esp + 0x330]
inc esi
mov ecx, ebp
mov dword [esp + 0x10], esi
push 0
push 0
push eax
push 0
lea eax, [esp + 0x34]
push eax
call fcn.00405790
test eax, eax
je 0x406b84
mov edi, dword [esp + 0x20]
inc ebx
jmp 0x40667f
mov esi, dword [esp + 0x10]
lea eax, [esp + 0x53c]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x4065d0
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
test ebx, ebx
je 0x406956
mov edi, dword [esp + 0x2680]
jmp 0x4067f4
cmp esi, dword [esp + 0x268c]
jg 0x406964
push esi
lea eax, [esp + 0x28]
push 0x4291e8
push eax
call fcn.004078a0
push 0x103
lea eax, [esp + 0x23c]
inc esi
push ebx
push eax
mov dword [esp + 0x28], esi
call fcn.0040a690
add esp, 0x18
lea eax, [esp + 0x22c]
mov ecx, ebp
push 0
push 0
push eax
push 0
lea eax, [esp + 0x34]
push eax
call fcn.00405790
test eax, eax
je 0x406b84
jmp 0x4067f4
push 0x3d
push ebx
call fcn.00408f90
mov esi, eax
add esp, 8
test esi, esi
jne 0x40674a
push 0x3a
push ebx
call fcn.00408f90
mov esi, eax
add esp, 8
test esi, esi
jne 0x40674a
push 0x103
lea eax, [ebx + 1]
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.0040a690
add esp, 0xc
jmp 0x406797
mov ecx, esi
xor eax, eax
sub ecx, ebx
lea edx, [ecx - 1]
test edx, edx
cmovns eax, edx
cmp eax, 0x103
jae 0x40676a
test edx, edx
jns 0x406767
xor ecx, ecx
jmp 0x40676f
dec ecx
jmp 0x40676f
mov ecx, 0x103
push ecx
lea eax, [ebx + 1]
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.0040a690
push 0x103
lea eax, [esi + 1]
push eax
lea eax, [esp + 0x240]
push eax
call fcn.0040a690
add esp, 0x18
lea eax, [esp + 0x24]
push eax
lea ecx, [ebp + 4]
call fcn.00406f70
mov esi, eax
test esi, esi
je 0x4069f2
test dword [esi + 0x28], 0x100
jne 0x4069b6
cmp byte [esp + 0x22c], 0
jne 0x4067cf
cmp dword [esi + 0x24], 7
jne 0x40697a
push 0
lea eax, [esp + 0x230]
mov ecx, ebp
push eax
push esi
call fcn.00407640
test al, al
je 0x406b84
or dword [esi + 0x28], 0x100
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
inc ebx
mov dword [esp + 0x14], ebx
cmp ebx, edi
jl 0x406400
push 0x2000
lea eax, [esp + 0x680]
push 0
push eax
call fcn.00409470
mov ebx, dword [esp + 0x28]
lea esi, [esp + 0x688]
xor eax, eax
add esp, 0xc
xor ebp, ebp
mov dword [esp + 0x14], eax
xor edi, edi
cmp dword [ebx + 0x88], eax
jle 0x406a4b
lea eax, [ebx + 4]
mov dword [esp + 0x18], eax
push edi
mov ecx, eax
call fcn.00405610
mov ebx, eax
test byte [ebx + 0x20], 0x10
je 0x4068a8
inc dword [esp + 0x14]
lea ecx, [ebp + 1]
test dword [ebx + 0x28], 0x100
cmove ecx, ebp
cmp byte [esp + 0x67c], 0
mov ebp, ecx
je 0x40688b
lea eax, [esp + 0x267b]
push 0x429778
sub eax, esi
push eax
push esi
call fcn.004077c0
add esp, 0xc
add esi, eax
push dword [ebx + 0x18]
lea eax, [esp + 0x267f]
push str.__s_
sub eax, esi
push eax
push esi
call fcn.004077c0
add esp, 0x10
add esi, eax
mov ebx, dword [esp + 0x1c]
inc edi
mov eax, dword [esp + 0x18]
cmp edi, dword [ebx + 0x88]
jl 0x406844
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x406a4b
cmp ebp, 1
je 0x406a4b
push 1
push dword [esp + 0x268c]
mov ecx, ebx
call fcn.004071e0
mov eax, dword [ebx]
lea edx, [esp + 0x67c]
push edx
mov eax, dword [eax + 4]
add eax, ebx
mov ecx, dword [eax]
test ebp, ebp
jne 0x406a2e
push str._nOne_argument_from_list___s__is_required
push 7
push eax
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push 1
push dword [esp + 0x268c]
mov ecx, ebp
call fcn.004071e0
mov eax, dword [ebp]
push edi
push str._nToo_many_files_specified__max___d_
push 7
mov eax, dword [eax + 4]
add eax, ebp
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esp, 0x10
push dword [esp + 0x20]
call dword [sym.imp.KERNEL32.dll_FindClose]
pop esi
pop ebx
pop edi
xor al, al
pop ebp
add esp, 0x266c
ret 0x18
push dword [esp + 0x18]
push str._nNo_matches_for__s
jmp 0x406a0c
push 1
push dword [esp + 0x268c]
mov ecx, ebp
call fcn.004071e0
push ebx
jmp 0x406a07
push 1
push dword [esp + 0x268c]
mov ecx, ebp
call fcn.004071e0
mov eax, dword [ebp]
lea edx, [esp + 0x24]
push edx
push str._nValue_must_be_supplied_for_argument___s_
push 7
mov eax, dword [eax + 4]
add eax, ebp
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push 1
push dword [esp + 0x268c]
mov ecx, ebp
call fcn.004071e0
mov eax, dword [ebp]
lea edx, [esp + 0x24]
push edx
push str._nDuplicate_arguments____s__
push 7
mov eax, dword [eax + 4]
add eax, ebp
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push 1
push dword [esp + 0x268c]
mov ecx, ebp
call fcn.004071e0
lea edx, [esp + 0x24]
push edx
push str._nUnrecognized_argument____s__
mov eax, dword [ebp]
push 7
mov eax, dword [eax + 4]
add eax, ebp
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push str._nOnly_one_argument_from_list___s__is_allowed
push 7
push eax
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push 0x2000
lea esi, [esp + 0x680]
mov eax, esi
push 0
push eax
call fcn.00409470
xor edi, edi
add esp, 0xc
xor ebp, ebp
cmp dword [ebx + 0x88], edi
jle 0x406b50
lea eax, [ebx + 4]
mov dword [esp + 0x18], eax
nop dword [eax + eax]
push edi
mov ecx, eax
call fcn.00405610
mov ebx, eax
test byte [ebx + 0x20], 8
je 0x406adb
test dword [ebx + 0x28], 0x100
jne 0x406adb
cmp byte [esp + 0x67c], 0
je 0x406abd
lea eax, [esp + 0x267b]
push 0x429778
sub eax, esi
push eax
push esi
call fcn.004077c0
add esp, 0xc
add esi, eax
push dword [ebx + 0x18]
lea eax, [esp + 0x267f]
push str.__s_
sub eax, esi
push eax
push esi
call fcn.004077c0
add esp, 0x10
add esi, eax
inc ebp
mov ebx, dword [esp + 0x1c]
inc edi
mov eax, dword [esp + 0x18]
cmp edi, dword [ebx + 0x88]
jl 0x406a80
test ebp, ebp
je 0x406b50
push 1
push dword [esp + 0x268c]
mov ecx, ebx
call fcn.004071e0
mov eax, dword [ebx]
lea edx, [esp + 0x67c]
push edx
mov eax, dword [eax + 4]
add eax, ebx
mov ecx, dword [eax]
cmp ebp, 1
jle 0x406b33
push str._nMissing_arguments___s_
push 7
push eax
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
push str._nMissing_argument___s_
push 7
push eax
call dword [ecx + 0x14]
add esp, 0x10
xor al, al
pop esi
pop ebx
pop edi
pop ebp
add esp, 0x266c
ret 0x18
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x2690], eax
jl 0x406b93
push 1
push dword [esp + 0x268c]
mov ecx, ebx
call fcn.004071e0
mov eax, dword [ebx]
push str._nMissing_argument
push 7
mov eax, dword [eax + 4]
add eax, ebx
push eax
mov ecx, dword [eax]
call dword [ecx + 0x14]
add esp, 0xc
pop esi
pop ebx
pop edi
xor al, al
pop ebp
add esp, 0x266c
ret 0x18
pop esi
pop ebx
pop edi
mov al, 1
pop ebp
add esp, 0x266c
ret 0x18