Function at 0x406d10
Capabilities:
Enumerate files on windows
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x426f98
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x32c
push ebx
push ebp
push esi
push edi
mov esi, ecx
mov eax, dword [esi + 8]
push 0xe1
push eax
mov dword [esp + 0x20], esi
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call fcn.00414a80
add esp, 4
mov ecx, eax
mov dword [esp + 0x10], eax
call fcn.00402b40
call dword [sym.imp.USER32.dll_CreatePopupMenu]
push str.English__default_
push 1
xor ebx, ebx
mov edi, eax
push ebx
push edi
call dword [sym.imp.USER32.dll_AppendMenuA]
lea ecx, [esp + 0x64]
push ecx
mov ecx, 0x436438
mov dword [esp + 0x18], 2
call fcn.0041a420
push str.languages.ini
push eax
lea edx, [esp + 0xb8]
push edx
mov dword [esp + 0x350], ebx
call fcn.00401510
add esp, 0xc
mov eax, dword [esp + 0x7c]
mov ebp, 0x10
cmp eax, ebp
jb 0x406dbf
mov eax, dword [esp + 0x68]
push eax
call fcn.0041e69d
add esp, 4
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
cmp dword [esp + 0xc8], ebp
mov eax, dword [esp + 0xb4]
mov byte [esp + 0x344], 3
jae 0x406dea
lea eax, [esp + 0xb4]
lea ecx, [esp + 0xf8]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x407004
push ebx
push ebx
push 0x800
push edi
call dword [sym.imp.USER32.dll_AppendMenuA]
mov esi, dword [sym.imp.USER32.dll_CharUpperA]
jmp 0x406e20
lea eax, [esp + 0x124]
mov dword [esp + 0x34], 0xf
mov dword [esp + 0x30], ebx
mov byte [esp + 0x20], bl
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x406e40
sub eax, edx
push eax
lea edx, [esp + 0x128]
push edx
lea ecx, [esp + 0x24]
call fcn.00401b80
mov eax, dword [esp + 0x30]
add eax, 0xfffffffc
push eax
push ebx
lea ecx, [esp + 0xd4]
push ecx
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], 4
call fcn.00404530
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], 5
call fcn.00401310
cmp dword [esp + 0xe4], 0x10
mov byte [esp + 0x344], 4
jb 0x406eb4
mov edx, dword [esp + 0xd0]
push edx
call fcn.0041e69d
add esp, 4
cmp dword [esp + 0x34], 0x10
mov eax, dword [esp + 0x20]
mov dword [esp + 0xe4], 0xf
mov dword [esp + 0xe0], ebx
mov byte [esp + 0xd0], bl
jae 0x406edc
lea eax, [esp + 0x20]
push str.english
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpiA]
test eax, eax
je 0x406fbd
cmp dword [esp + 0x30], ebx
jbe 0x406faf
push 0xffffffffffffffff
push 1
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x28]
call fcn.00404530
cmp dword [esp + 0x34], 0x10
mov ecx, dword [esp + 0x20]
mov byte [esp + 0x344], 6
jae 0x406f23
lea ecx, [esp + 0x20]
movsx ecx, byte [ecx]
push eax
push ecx
call esi
push eax
lea edx, [esp + 0x88]
push edx
call fcn.004045e0
add esp, 0xc
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [esp + 0x28]
mov byte [esp + 0x350], 7
call fcn.00401310
cmp dword [esp + 0x98], 0x10
jb 0x406f6a
mov eax, dword [esp + 0x84]
push eax
call fcn.0041e69d
add esp, 4
cmp dword [esp + 0x7c], 0x10
mov dword [esp + 0x98], 0xf
mov dword [esp + 0x94], ebx
mov byte [esp + 0x84], bl
mov byte [esp + 0x344], 4
jb 0x406f9f
mov ecx, dword [esp + 0x68]
push ecx
call fcn.0041e69d
add esp, 4
mov dword [esp + 0x7c], 0xf
mov dword [esp + 0x78], ebx
mov byte [esp + 0x68], bl
lea edx, [esp + 0x1c]
push edx
lea ecx, [esp + 0x3c]
call fcn.00406b50
cmp dword [esp + 0x34], 0x10
mov byte [esp + 0x344], 3
jb 0x406fd9
mov eax, dword [esp + 0x20]
push eax
call fcn.0041e69d
add esp, 4
lea ecx, [esp + 0xf8]
push ecx
push ebp
mov dword [esp + 0x3c], 0xf
mov dword [esp + 0x38], ebx
mov byte [esp + 0x28], bl
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x406e20
mov esi, dword [esp + 0x18]
push ebp
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
sub ecx, ebp
mov eax, 0x92492493
imul ecx
add edx, ecx
mov ecx, dword [esp + 0x40]
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
push eax
push ecx
push ebp
call fcn.00406be0
mov eax, dword [esp + 0x4c]
add esp, 0xc
cmp ebp, eax
je 0x407073
lea esi, [ebp + 4]
cmp dword [esi + 0x14], 0x10
jb 0x40704c
mov eax, dword [esi]
jmp 0x40704e
mov eax, esi
mov ebp, dword [esp + 0x14]
push eax
push ebp
push ebx
push edi
call dword [sym.imp.USER32.dll_AppendMenuA]
mov eax, dword [esp + 0x40]
add esi, 0x1c
inc ebp
lea edx, [esi - 4]
cmp edx, eax
mov dword [esp + 0x14], ebp
jne 0x407042
mov esi, dword [esp + 0x18]
mov ecx, dword [esi + 8]
lea eax, [esp + 0xe8]
push eax
push 0xe1
push ecx
call dword [sym.imp.USER32.dll_GetDlgItem]
push eax
call dword [sym.imp.USER32.dll_GetWindowRect]
mov edx, dword [esi + 8]
mov eax, dword [esp + 0xf4]
mov ecx, dword [esp + 0xf0]
push ebx
push edx
push ebx
push eax
push ecx
push 0x108
push edi
call dword [sym.imp.USER32.dll_TrackPopupMenu]
mov ecx, dword [esp + 0x10]
mov esi, eax
call fcn.00402b60
push ebx
mov ebp, 0xf
push 0x42a46c
lea ecx, [esp + 0x50]
mov dword [esp + 0x68], ebp
mov dword [esp + 0x64], ebx
mov byte [esp + 0x54], bl
call fcn.00401b80
cmp esi, 1
mov byte [esp + 0x344], 8
jbe 0x407160
cmp esi, dword [esp + 0x14]
jae 0x40715d
lea eax, [esp + 0x80]
push eax
push ebx
push esi
lea edx, [esp + 0x244]
push edi
mov dword [esp + 0x90], 0x30
mov dword [esp + 0x94], 0x40
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], 0x104
call dword [sym.imp.USER32.dll_GetMenuItemInfoA]
lea eax, [esp + 0x238]
lea edx, [eax + 1]
jmp 0x407140
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x407140
sub eax, edx
push eax
lea ecx, [esp + 0x23c]
push ecx
lea ecx, [esp + 0x50]
call fcn.00401b80
jmp 0x407173
cmp esi, 1
jne 0x407173
push 0xffffffffffffffff
push ebx
push 0x434c14
lea ecx, [esp + 0x54]
call fcn.00401310
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x5c]
cmp eax, eax
mov edx, eax
jae 0x407184
cmp edx, ebx
je 0x4071ad
cmp dword [esp + 0x60], 0x10
mov esi, dword [esp + 0x4c]
jae 0x407197
lea esi, [esp + 0x4c]
xor ecx, ecx
mov edi, 0x42a46c
xor eax, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x4071a9
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4071b8
xor eax, eax
cmp edx, ebx
setne al
cmp eax, ebx
je 0x4071e0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x2c], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x6c]
mov dword [ecx + 0x18], ebp
mov dword [ecx + 0x14], ebx
push edx
mov byte [ecx + 4], bl
call fcn.00401310
mov ecx, dword [esp + 0x34]
call fcn.00405290
mov eax, dword [esp + 0x60]
mov edi, 0x10
cmp eax, edi
jb 0x4071fa
mov eax, dword [esp + 0x4c]
push eax
call fcn.0041e69d
add esp, 4
mov esi, dword [esp + 0x3c]
cmp esi, ebx
mov dword [esp + 0x60], ebp
mov dword [esp + 0x5c], ebx
mov byte [esp + 0x4c], bl
je 0x40722c
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x40]
push ecx
lea edx, [esp + 0x3c]
push edx
push eax
push esi
call fcn.004044f0
push esi
call fcn.0041e69d
add esp, 0x14
cmp dword [esp + 0xc8], edi
jb 0x407245
mov ecx, dword [esp + 0xb4]
push ecx
call fcn.0041e69d
add esp, 4
mov ecx, dword [esp + 0x33c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x338
ret