Function at 0x10009a20
Capabilities:
Check if file exists
Enumerate files on windows
Enumerate files recursively

Disassembly:
sub esp, 0x468
push ebx
mov ebx, dword [esp + 0x488]
push ebp
mov ebp, dword [esp + 0x490]
push esi
push edi
mov edi, dword [esp + 0x480]
mov dword [esp + 0x10], 1
test ebx, ebx
je 0x10009afa
test ebp, ebp
je 0x10009afa
push 0
push 0x2000000
push 3
push 0
push 3
push closesocket
push edi
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
cmp esi, 0xffffffff
jne 0x10009aa7
push edi
push ebp
push ebx
call fcn.1001c480
mov eax, dword [esp + 0x4a8]
add esp, 0xc
test eax, eax
je 0x10009a97
mov eax, dword [esp + 0x490]
dec dword [eax + 4]
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x468
ret
lea eax, [esp + 0x1c]
push eax
push 0
push 0
push esi
call dword [sym.imp.KERNEL32.dll_GetFileTime]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esp + 0x1c]
test eax, eax
jne 0x10009ace
mov eax, dword [esp + 0x20]
test eax, eax
je 0x10009afa
lea ecx, [esp + 0x24]
push ecx
push edi
push ebp
call fcn.1001c4b0
add esp, 0xc
test eax, eax
jne 0x10009c74
mov eax, dword [esp + 0x49c]
test eax, eax
je 0x10009afa
mov eax, dword [esp + 0x490]
inc dword [eax + 4]
xor esi, esi
mov eax, dword [esp + 0x47c]
test eax, eax
je 0x10009b1c
mov edx, dword [esp + 0x490]
push edi
push edx
push 0x8000
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esp + 0x49c]
test eax, eax
je 0x10009b30
mov eax, dword [esp + 0x490]
inc dword [eax]
test esi, esi
je 0x10009f7c
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x375]
mov byte [esp + 0x374], 0
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x480]
push 0x104
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x378]
push eax
push ecx
push ebx
call fcn.1001c4e0
mov ebp, dword [sym.imp.MSVCRT.dll_strrchr]
add esp, 0x10
test eax, eax
je 0x10009e00
mov al, byte [esp + 0x374]
lea ebx, [esp + 0x374]
test al, al
je 0x10009e00
mov edi, dword [esp + 0x480]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x5c
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x30]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x30]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov cx, word [0x10040968]
mov word [edi - 1], cx
mov edi, ebx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x30]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call ebp
push eax
call fcn.1001ffc0
mov ecx, dword [esp + 0x494]
add esp, 0xc
mov eax, dword [ecx]
mov ecx, dword [0x1004cc80]
cmp ecx, eax
jg 0x10009cc9
mov ecx, dword [esp + 0x10]
add eax, 0x1e
test ecx, ecx
mov dword [0x1004cc80], eax
je 0x10009cbc
shl eax, 0x10
or eax, reloc.WS2_32.dll_accept
push eax
call fcn.1000a800
add esp, 4
test eax, eax
je 0x10009cbc
mov edx, dword [0x1004cc80]
shl edx, 0x10
or edx, reloc.WS2_32.dll_bind
push edx
call fcn.1000a800
add esp, 4
test eax, eax
je 0x10009cbc
mov dword [esp + 0x10], 1
jmp 0x10009cd5
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x24]
cmp eax, ecx
jb 0x10009c96
ja 0x10009c8e
cmp esi, edx
jbe 0x10009c96
sub esi, edx
sbb eax, ecx
mov edx, esi
jmp 0x10009c9c
sub edx, esi
sbb ecx, eax
mov eax, ecx
test eax, eax
ja 0x10009afa
jb 0x10009cb2
cmp edx, 0x4e20
jae 0x10009afa
mov esi, 1
jmp 0x10009afc
mov dword [esp + 0x10], 0
jmp 0x10009dd8
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10009dd8
mov edi, 0x1004096c
mov esi, ebx
mov ecx, 8
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10009cec
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10009da6
mov edi, 0x10040974
mov esi, ebx
mov ecx, 0xb
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10009d0b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10009da6
mov edi, 0x10040980
mov esi, ebx
mov ecx, 0xc
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10009d2a
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10009d58
mov eax, dword [esp + 0x488]
mov ecx, dword [esp + 0x484]
push eax
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.10009450
add esp, 0xc
test eax, eax
jne 0x1000a0a6
jmp 0x10009dd8
push 0x2e
push ebx
call ebp
add esp, 8
test eax, eax
je 0x10009dd8
push 0x2e
push ebx
mov edi, str..TPI
call ebp
add esp, 8
mov esi, eax
mov ecx, 5
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10009d83
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x10009dd8
mov eax, dword [esp + 0x488]
mov ecx, dword [esp + 0x484]
push eax
lea edx, [esp + 0x30]
push ecx
push edx
call fcn.10009910
add esp, 0xc
jmp 0x10009dd8
mov ecx, dword [esp + 0x488]
mov edx, dword [esp + 0x484]
lea eax, [esp + 0x14]
push eax
push ecx
lea eax, [esp + 0x34]
push edx
push eax
call fcn.10009620
add esp, 0x10
test eax, eax
je 0x10009dd8
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x1000a0a6
mov edi, ebx
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov al, byte [ebx + ecx + 1]
lea ebx, [ebx + ecx + 1]
test al, al
jne 0x10009b95
mov eax, dword [esp + 0x10]
test eax, eax
je 0x10009f6d
mov ecx, dword [esp + 0x480]
lea edx, [esp + 0x270]
push ecx
push 0x10040994
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ebx, dword [esp + 0x498]
add esp, 0xc
test ebx, ebx
je 0x10009e49
push 0
push 0
lea eax, [esp + 0x138]
push 1
push eax
lea ecx, [esp + 0x280]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileExA]
jmp 0x10009e5f
lea edx, [esp + 0x130]
lea eax, [esp + 0x270]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x10009f66
mov edi, 0x1004099c
lea esi, [esp + 0x15c]
mov ecx, 2
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x10009f4f
mov edi, 0x100409a0
lea esi, [esp + 0x15c]
mov ecx, 3
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x10009f4f
test byte [esp + 0x130], 0x10
je 0x10009f4f
lea edi, [esp + 0x270]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x2a
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x30]
lea edi, [esp + 0x160]
push ecx
call dword [sym.imp.MSVCRT.dll_strrchr]
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, dword [esp + 0x4a0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x49c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x4a4]
push ecx
mov ecx, dword [esp + 0x49c]
push edx
mov edx, dword [esp + 0x498]
push eax
mov eax, dword [esp + 0x498]
push ecx
push ebx
push edx
mov edx, dword [esp + 0x49c]
lea ecx, [esp + 0x4c]
push eax
push ecx
push edx
call fcn.10009a20
add esp, 0x2c
lea eax, [esp + 0x130]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x10009e6a
push ebp
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x468
ret
test ebx, ebx
je 0x10009f8f
lea ecx, [esp + 0x1c]
push ecx
push edi
push ebp
call fcn.1001c520
add esp, 0xc
mov edi, dword [esp + 0x480]
mov esi, dword [sym.imp.KERNEL32.dll_SearchPathA]
lea edx, [esp + 0x18]
lea eax, [esp + 0x2c]
push edx
push eax
push 0x104
push 0
push str.SWI.XML
push edi
call esi
mov ebp, dword [sym.imp.MSVCRT.dll_strrchr]
mov ebx, dword [esp + 0x488]
test eax, eax
jne 0x1000a2a9
lea ecx, [esp + 0x18]
lea edx, [esp + 0x2c]
push ecx
push edx
push 0x104
push 0
push str.IBMTPI.XML
push edi
call esi
test eax, eax
jne 0x1000a2a9
lea eax, [esp + 0x18]
lea ecx, [esp + 0x2c]
push eax
push ecx
push 0x104
push 0
push str.PACKAGE.XML
push edi
call esi
test eax, eax
je 0x1000a0b6
mov edx, dword [esp + 0x18]
push edx
call fcn.1001ffc0
mov eax, dword [esp + 0x498]
add esp, 4
test eax, eax
je 0x1000a033
mov ecx, dword [esp + 0x18]
push ecx
push edi
push eax
call fcn.1001c550
add esp, 0xc
mov eax, dword [ebx]
mov ecx, dword [0x1004cc80]
cmp ecx, eax
jg 0x1000a088
add eax, 0x1e
mov dword [0x1004cc80], eax
shl eax, 0x10
or eax, reloc.WS2_32.dll_accept
push eax
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a29a
mov edx, dword [0x1004cc80]
shl edx, 0x10
or edx, reloc.WS2_32.dll_bind
push edx
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a29a
mov dword [esp + 0x10], 1
mov eax, dword [esp + 0x484]
push ebx
lea ecx, [esp + 0x30]
push eax
push ecx
call fcn.10009450
add esp, 0xc
test eax, eax
je 0x1000a243
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x468
ret
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
cmp eax, 2
jne 0x1000a293
push edi
lea edx, [esp + 0x274]
push str._s.TPI
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
add esp, 0xc
lea eax, [esp + 0x130]
lea ecx, [esp + 0x270]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebx, dword [esp + 0x10]
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x1000a234
lea edi, [esp + 0x270]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x2a
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x30]
lea edi, [esp + 0x160]
push ecx
call ebp
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
push 0x5c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x38]
push ecx
call ebp
push eax
call fcn.1001ffc0
mov eax, dword [esp + 0x4a8]
add esp, 0x14
test eax, eax
je 0x1000a19c
lea edx, [esp + 0x2c]
push 0x5c
push edx
call ebp
mov ecx, dword [esp + 0x49c]
inc eax
push eax
mov eax, dword [esp + 0x48c]
push eax
push ecx
call fcn.1001c550
add esp, 0x14
mov esi, dword [esp + 0x488]
mov ecx, dword [0x1004cc80]
mov eax, dword [esi]
cmp ecx, eax
jg 0x1000a1f7
add eax, 0x1e
test ebx, ebx
mov dword [0x1004cc80], eax
je 0x1000a1f3
shl eax, 0x10
or eax, reloc.WS2_32.dll_accept
push eax
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a1f3
mov edx, dword [0x1004cc80]
shl edx, 0x10
or edx, reloc.WS2_32.dll_bind
push edx
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a1f3
mov ebx, 1
jmp 0x1000a1fb
xor ebx, ebx
jmp 0x1000a211
test ebx, ebx
je 0x1000a211
mov eax, dword [esp + 0x484]
push esi
lea ecx, [esp + 0x30]
push eax
push ecx
call fcn.10009910
add esp, 0xc
mov eax, dword [esp + 0x14]
lea edx, [esp + 0x130]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x1000a105
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], ebx
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
test ebx, ebx
je 0x1000a488
mov ecx, dword [esp + 0x480]
lea edx, [esp + 0x270]
push ecx
push str._s
push edx
call dword [sym.imp.MSVCRT.dll_sprintf]
mov ebx, dword [esp + 0x498]
add esp, 0xc
test ebx, ebx
je 0x1000a35a
push 0
push 0
lea eax, [esp + 0x138]
push 1
push eax
lea ecx, [esp + 0x280]
push 0
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileExA]
jmp 0x1000a370
call esi
cmp eax, 8
jne 0x1000a243
xor ebx, ebx
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x468
ret
mov ecx, dword [esp + 0x18]
push ecx
call fcn.1001ffc0
mov eax, dword [esp + 0x498]
add esp, 4
test eax, eax
je 0x1000a2d0
mov edx, dword [esp + 0x18]
push edx
push edi
push eax
call fcn.1001c550
add esp, 0xc
mov eax, dword [ebx]
mov ecx, dword [0x1004cc80]
cmp ecx, eax
jg 0x1000a31b
add eax, 0x1e
mov dword [0x1004cc80], eax
shl eax, 0x10
or eax, reloc.WS2_32.dll_accept
push eax
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a29a
mov eax, dword [0x1004cc80]
shl eax, 0x10
or eax, reloc.WS2_32.dll_bind
push eax
call fcn.1000a800
add esp, 4
test eax, eax
je 0x1000a29a
mov dword [esp + 0x10], 1
mov edx, dword [esp + 0x484]
lea ecx, [esp + 0x14]
push ecx
push ebx
lea eax, [esp + 0x34]
push edx
push eax
call fcn.10009620
add esp, 0x10
test eax, eax
je 0x1000a243
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1000a243
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x468
ret
lea edx, [esp + 0x130]
lea eax, [esp + 0x270]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [esp + 0x14], eax
je 0x1000a47d
mov edi, 0x100409d8
lea esi, [esp + 0x15c]
mov ecx, 2
xor edx, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x1000a45e
mov edi, 0x100409dc
lea esi, [esp + 0x15c]
mov ecx, 3
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x1000a45e
test byte [esp + 0x130], 0x10
je 0x1000a45e
lea edi, [esp + 0x270]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x2c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x2a
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x30]
lea edi, [esp + 0x160]
push ecx
call ebp
mov edx, eax
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, dword [esp + 0x4a0]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0x49c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x4a4]
push ecx
mov ecx, dword [esp + 0x49c]
push edx
mov edx, dword [esp + 0x498]
push eax
mov eax, dword [esp + 0x498]
push ecx
push ebx
push edx
mov edx, dword [esp + 0x49c]
lea ecx, [esp + 0x4c]
push eax
push ecx
push edx
call fcn.10009a20
add esp, 0x2c
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x130]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x1000a37d
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebx, dword [esp + 0x10]
pop edi
pop esi
mov eax, ebx
pop ebp
pop ebx
add esp, 0x468
ret