Function at 0x401580
Capabilities:
Enumerate files on windows

Disassembly:
push 0xffffffffffffffff
push 0x447b1b
mov eax, dword fs:[0]
push eax
sub esp, 0x5a4
mov eax, dword [0x457a00]
xor eax, esp
mov dword [esp + 0x5a0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x457a00]
xor eax, esp
push eax
lea eax, [esp + 0x5b8]
mov dword fs:[0], eax
mov eax, dword [esp + 0x5c8]
mov ebx, ecx
xor esi, esi
push 0x104
lea ecx, [esp + 0x2a0]
push esi
push ecx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x24], esi
call fcn.00433570
add esp, 0xc
push 0x104
lea edx, [esp + 0x3a8]
push esi
push edx
call fcn.00433570
add esp, 0xc
push 0x104
lea eax, [esp + 0x198]
push esi
push eax
call fcn.00433570
add esp, 0xc
call fcn.004261a4
xor ecx, ecx
cmp eax, esi
setne cl
cmp ecx, esi
jne 0x40162e
push 0x80004005
call fcn.00414ed0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
cmp byte [esp + 0x5cc], 0
mov dword [esp + 0x5c0], esi
lea ecx, [esp + 0x14]
je 0x40172e
push 5
push str.ENPRG
call fcn.00415440
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x401667
sub eax, ecx
lea edi, [esp + 0x194]
add edi, 0xffffffff
mov edx, eax
mov esi, ecx
lea eax, [edi + 1]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x401683
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]
add eax, 0xffffffff
mov edi, edi
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4016a0
mov ecx, dword [str.ENPRG.hex]
mov dword [eax], ecx
mov edx, dword [0x44c668]
mov dword [eax + 4], edx
mov ecx, dword [0x44c66c]
mov dword [eax + 8], ecx
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4016c8
sub eax, ecx
lea edi, [esp + 0x3a4]
add edi, 0xffffffff
mov edx, eax
mov esi, ecx
lea eax, [edi + 1]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4016e4
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]
add eax, 0xffffffff
nop
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x401700
mov edx, dword [str.ENPRG.mbn]
mov dword [eax], edx
mov ecx, dword [0x44c674]
mov dword [eax + 4], ecx
mov edx, dword [0x44c678]
mov dword [eax + 8], edx
mov ebp, 9
jmp 0x401824
push 4
push str.NPRG
call fcn.00415440
mov eax, ebx
mov ecx, ebx
mov edi, edi
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x401740
sub eax, ecx
lea edi, [esp + 0x194]
add edi, 0xffffffff
mov edx, eax
mov esi, ecx
lea eax, [edi + 1]
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x401760
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]
add eax, 0xffffffff
jmp 0x401780
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x401780
mov ecx, dword [str.NPRG.hex]
mov dword [eax], ecx
mov edx, dword [0x44c688]
mov dword [eax + 4], edx
mov cx, word [0x44c68c]
mov word [eax + 8], cx
mov dl, byte [0x44c68e]
mov byte [eax + 0xa], dl
mov eax, ebx
mov ecx, ebx
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4017b3
sub eax, ecx
lea edi, [esp + 0x3a4]
add edi, 0xffffffff
mov edx, eax
mov esi, ecx
lea eax, [edi + 1]
nop
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4017d0
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]
add eax, 0xffffffff
jmp 0x4017f0
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x4017f0
mov ecx, dword [str.NPRG.mbn]
mov dword [eax], ecx
mov edx, dword [0x44c694]
mov dword [eax + 4], edx
mov cx, word [0x44c698]
mov word [eax + 8], cx
mov dl, byte [0x44c69a]
mov byte [eax + 0xa], dl
mov ebp, 8
mov esi, dword [sym.imp.KERNEL32.dll_FindFirstFileA]
lea eax, [esp + 0x54]
push eax
lea ecx, [esp + 0x198]
push ecx
call esi
mov ebx, eax
cmp ebx, 0xffffffff
mov dword [esp + 0x1c], ebx
jne 0x401890
lea edx, [esp + 0x54]
push edx
lea eax, [esp + 0x3a8]
push eax
call esi
mov ebx, eax
cmp ebx, 0xffffffff
mov dword [esp + 0x1c], ebx
jne 0x401890
mov dword [esp + 0x5c0], eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, ebx
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401884
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x401eec
push 0x104
lea ecx, [esp + 0x2a0]
push 0
push ecx
call fcn.00433570
add esp, 0xc
push 0x104
lea edx, [esp + 0x4b0]
push 0
push edx
call fcn.00433570
lea eax, [esp + 0x8c]
add esp, 0xc
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x4018c7
lea edi, [esp + 0x29c]
sub eax, ecx
mov esi, ecx
add edi, 0xffffffff
mov edi, edi
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x4018e0
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 0x104
lea eax, [esp + 0x198]
and ecx, 3
push 0
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.00433570
add esp, 0xc
cmp dword [esp + 0x18], 0
je 0x401992
lea ecx, [esp + 0x54]
push ecx
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
je 0x401992
lea eax, [esp + 0x80]
mov edx, eax
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x401933
lea edi, [esp + 0x4ac]
sub eax, edx
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x401948
mov ecx, eax
shr ecx, 2
mov esi, edx
mov edx, dword [esp + 0x14]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push 4
push edx
lea eax, [esp + 0x2a4]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call fcn.004317b3
add esp, 0xc
test eax, eax
mov ecx, 0x41
lea edi, [esp + 0x194]
je 0x40199e
lea esi, [esp + 0x4ac]
jmp 0x4019a5
lea edi, [esp + 0x194]
mov ecx, 0x41
lea esi, [esp + 0x29c]
rep movsd dword es:[edi], dword [esi]
push str.6246
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x48]
mov esi, 1
add dword [esp + 0x20], esi
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x40]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401a00
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401d9e
push str.6280
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x54]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x4c]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401a58
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401daa
push str.6240
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x38]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x30]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ab0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401db2
push str.6270
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x50]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x48]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401b08
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401dbe
push str.7627
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x40]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x38]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401b60
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401dca
push str.6695
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x4c]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x44]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401bb8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401dd6
push str.9x15
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x2c]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x24]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401c10
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401de2
push str.9x25
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x58]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x50]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401c68
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401dee
push str.9x07
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x28]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401cc0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401dfa
push str.9x06
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x34]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x2c]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401d18
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401e06
push str.9x45
lea ecx, [esp + 0x18]
push ecx
lea edx, [esp + 0x3c]
push edx
call fcn.00413f10
mov eax, dword [eax]
add esp, 0xc
push ebp
push eax
lea eax, [esp + 0x19c]
push eax
call fcn.004317b3
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x34]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401d70
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x401e12
mov eax, dword [esp + 0x1c]
cmp eax, 0xffffffff
mov dword [0x458e6c], 0xffffffff
je 0x401e1c
test eax, eax
je 0x401e1c
mov ebx, eax
jmp 0x401890
mov dword [0x458e6c], 0
jmp 0x401e1c
mov dword [0x458e6c], esi
jmp 0x401e1c
mov dword [0x458e6c], 2
jmp 0x401e1c
mov dword [0x458e6c], 3
jmp 0x401e1c
mov dword [0x458e6c], 4
jmp 0x401e1c
mov dword [0x458e6c], 5
jmp 0x401e1c
mov dword [0x458e6c], 6
jmp 0x401e1c
mov dword [0x458e6c], 7
jmp 0x401e1c
mov dword [0x458e6c], 8
jmp 0x401e1c
mov dword [0x458e6c], 9
jmp 0x401e1c
mov dword [0x458e6c], 0xa
mov eax, dword [esp + 0x3c]
mov ecx, eax
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x401e22
mov edi, dword [esp + 0x20]
sub eax, ecx
add edi, 0xffffffff
mov esi, ecx
lea edx, [edi + 1]
lea esp, [esp]
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x401e40
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
add edx, 0xffffffff
mov edi, edx
lea ecx, [edi + 1]
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x401e60
mov dx, word [0x44c6f4]
lea eax, [esp + 0x194]
mov word [edi], dx
mov esi, eax
lea ecx, [ecx]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x401e80
sub eax, esi
add ecx, 0xffffffff
mov edi, ecx
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x401e90
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [esp + 0x194]
push eax
and ecx, 3
push 0x44c6f8
rep movsb byte es:[edi], byte [esi]
call fcn.00401000
mov dword [esp + 0x5c8], 0xffffffff
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
add esp, 8
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401ee8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x5b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x5a0]
xor ecx, esp
call fcn.0042fb8f
add esp, 0x5b0
ret