Function at 0x577c30
Capabilities:
Enumerate files on windows
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x58e242
mov eax, dword fs:[0]
push eax
sub esp, 0x4a4
mov eax, dword [0x5ebfc4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x464], edi
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
mov dword [ebp - 0x494], 0
mov dword [ebp - 4], 0
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
mov dword [ebp - 0x478], 0
xor esi, esi
mov byte [ebp - 4], 1
mov dword [ebp - 0x46c], esi
mov dword [ebp - 0x4a4], esi
mov dword [ebp - 0x474], esi
mov dword [ebp - 0x49c], esi
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x578591
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x57859b
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x490], eax
mov byte [ebp - 4], 2
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x5785a2
mov eax, dword [ecx]
cmp eax, 0x5940e4
jne 0x5785ac
lock inc dword [ecx + 0x14]
add ecx, 8
mov dword [ebp - 0x4a8], ecx
add ecx, 0x10
mov dword [ebp - 0x4b0], ecx
mov byte [ebp - 4], 3
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x5785bc
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x5785c6
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x4a0], eax
mov byte [ebp - 4], 4
mov ecx, edi
mov eax, dword [edi]
xor ebx, ebx
call dword [eax + 0x6c]
test eax, eax
je 0x577d5f
mov eax, dword [eax + 4]
push eax
lea ecx, [ebp - 0x498]
call fcn.0041823f
push dword [edi + 0x38c]
push dword [ebp - 0x494]
call dword [sym.imp.USER32.dll_GetSubMenu]
push eax
call fcn.00418826
test eax, eax
je 0x577d8a
mov eax, dword [eax + 4]
push eax
lea ecx, [ebp - 0x47c]
call fcn.0041823f
push dword [edi + 0x384]
lea eax, [ebp - 0x490]
push str._s.
push eax
call fcn.00404950
add esp, 0xc
lea eax, [ebp - 0x460]
push eax
push dword [ebp - 0x490]
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov edi, eax
mov dword [ebp - 0x468], edi
cmp edi, 0xffffffff
je 0x57800b
lea eax, [ebp - 0x460]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x57800b
lea ebx, [ebx]
cmp ebx, 0xff
jg 0x578005
test byte [ebp - 0x460], 0x10
je 0x577fef
call fcn.00407271
test eax, eax
je 0x578591
mov ecx, dword [eax]
mov edx, dword [ecx + 0xc]
cmp ecx, 0x5940e4
jne 0x5785cd
lock inc dword [eax + 0x14]
add eax, 8
add eax, 0x10
mov dword [ebp - 0x470], eax
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x470]
call fcn.004022b0
test al, al
jne 0x577e82
lea ecx, [ebp - 0x434]
lea edx, [ecx + 2]
lea ebx, [ebx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x577e60
sub ecx, edx
lea eax, [ebp - 0x434]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x470]
call fcn.00402430
mov byte [ebp - 4], 6
mov esi, dword [ebp - 0x470]
cmp dword [esi - 0xc], 0
jl 0x577ef2
push str.Shizuku
push esi
call fcn.0053dc90
add esp, 8
test eax, eax
je 0x577eae
sub eax, esi
sar eax, 1
je 0x577faa
cmp dword [esi - 0xc], 0
jl 0x577ef2
push str.KureiKei
push esi
call fcn.0053dc90
add esp, 8
test eax, eax
je 0x577ed0
sub eax, esi
sar eax, 1
je 0x577faa
cmp dword [esi - 0xc], 0
jl 0x577ef2
push 0x5c6f10
push esi
call fcn.0053dc90
add esp, 8
test eax, eax
je 0x577ef2
sub eax, esi
sar eax, 1
je 0x577faa
lea eax, [ebp - 0x434]
push eax
lea edi, [ebx + 0x9600]
inc ebx
push edi
push 0
push dword [ebp - 0x478]
call dword [sym.imp.USER32.dll_AppendMenuW]
mov ecx, dword [ebp - 0x464]
lea eax, [ebp - 0x434]
add ecx, 0x394
push eax
push dword [ecx + 8]
call fcn.0041a848
mov ecx, dword [ebp - 0x464]
mov eax, dword [ecx + 0x3bc]
lea ecx, [ebp - 0x434]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x577f66
test dx, dx
je 0x577f62
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x577f66
add eax, 4
add ecx, 4
test dx, dx
jne 0x577f40
xor eax, eax
jmp 0x577f6b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x577f7f
mov dword [ebp - 0x474], edi
mov dword [ebp - 0x46c], 1
mov eax, dword [ebp - 0x464]
push dword [eax + 0x3c0]
lea eax, [ebp - 0x434]
push eax
call fcn.0053dc90
add esp, 8
test eax, eax
je 0x577fa4
mov dword [ebp - 0x49c], edi
mov edi, dword [ebp - 0x468]
mov byte [ebp - 4], 4
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x577fef
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x5785d6
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5785d6
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
lea eax, [ebp - 0x460]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x577df0
mov esi, dword [ebp - 0x46c]
push edi
call dword [sym.imp.KERNEL32.dll_FindClose]
test esi, esi
jne 0x578073
mov ecx, dword [ebp - 0x464]
mov edi, dword [ecx + 0x3bc]
lea ebx, [ecx + 0x3bc]
mov eax, dword [ebp - 0x49c]
sub edi, 0x10
mov dword [ebp - 0x474], eax
mov ecx, dword [ecx + 0x3c0]
lea edx, [ecx - 0x10]
cmp edx, edi
je 0x578073
cmp dword [edi + 0xc], esi
jl 0x578068
mov eax, dword [edx]
cmp eax, dword [edi]
jne 0x578068
push edx
call fcn.00401f10
add esp, 4
mov ecx, edi
mov esi, eax
call fcn.004029d0
lea eax, [esi + 0x10]
mov dword [ebx], eax
jmp 0x578073
push dword [ecx - 0xc]
push ecx
mov ecx, ebx
call fcn.00402430
mov esi, dword [ebp - 0x464]
mov ebx, dword [sym.imp.USER32.dll_CheckMenuRadioItem]
push 0
push dword [ebp - 0x474]
mov eax, dword [esi + 0x39c]
add eax, 0x9600
push eax
push 0x9600
push dword [ebp - 0x478]
call ebx
lea ecx, [ebp - 0x47c]
call fcn.004182bd
push dword [esi + 0x390]
mov edi, dword [sym.imp.USER32.dll_GetSubMenu]
push dword [ebp - 0x494]
call edi
push eax
call fcn.00418826
test eax, eax
je 0x5780cc
mov eax, dword [eax + 4]
push eax
lea ecx, [ebp - 0x47c]
call fcn.0041823f
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
mov dword [ebp - 0x488], 0
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
mov dword [ebp - 0x480], 0
push 0
mov byte [ebp - 4], 8
push dword [ebp - 0x478]
call edi
push eax
call fcn.00418826
test eax, eax
je 0x57811b
mov eax, dword [eax + 4]
push eax
lea ecx, [ebp - 0x48c]
call fcn.0041823f
mov esi, dword [sym.imp.USER32.dll_RemoveMenu]
push 0x400
push 0
push dword [ebp - 0x488]
call esi
push 1
push dword [ebp - 0x478]
call edi
push eax
call fcn.00418826
test eax, eax
je 0x578153
mov eax, dword [eax + 4]
push eax
lea ecx, [ebp - 0x484]
call fcn.0041823f
push 0x400
push 0
push dword [ebp - 0x480]
call esi
mov eax, dword [ebp - 0x464]
push dword [eax + 0x388]
lea eax, [ebp - 0x4a0]
push 0x5c6f14
push eax
call fcn.00404950
mov edi, dword [ebp - 0x4a0]
lea eax, [ebp - 0x460]
add esp, 0xc
xor esi, esi
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x468], eax
cmp eax, 0xffffffff
je 0x57839f
cmp dword [ebp - 0x460], 0x10
je 0x578374
lea ebx, [esi + 0x9800]
inc esi
mov dword [ebp - 0x470], esi
call fcn.00407271
mov ecx, eax
test ecx, ecx
je 0x578591
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, 0x5940e4
jne 0x5785dd
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
add eax, 0x10
mov dword [ebp - 0x46c], eax
lea eax, [ebp - 0x434]
mov byte [ebp - 4], 9
push eax
mov eax, dword [ebp - 0x464]
push dword [eax + 0x388]
lea eax, [ebp - 0x46c]
push str._s_s
push eax
call fcn.00404950
add esp, 0x10
lea eax, [ebp - 0x210]
push dword [ebp - 0x46c]
push 0x100
push eax
push 0x5c6f34
push str.LANGUAGE
push str.Language
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0x434]
push 0x2e
push eax
call fcn.0053dbee
add esp, 8
test eax, eax
je 0x578268
xor ecx, ecx
mov word [eax], cx
lea eax, [ebp - 0x434]
push eax
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x46c]
push str._s____s_
push eax
call fcn.00404950
mov eax, dword [ebp - 0x434]
add esp, 0x10
mov esi, dword [ebp - 0x46c]
add eax, 0xffffffbf
push esi
push ebx
push 0
cmp ax, 0xd
ja 0x5782ab
push dword [ebp - 0x488]
jmp 0x5782b1
push dword [ebp - 0x480]
call dword [sym.imp.USER32.dll_AppendMenuW]
mov ecx, dword [ebp - 0x464]
lea eax, [ebp - 0x434]
add ecx, 0x3a8
push eax
push dword [ecx + 8]
call fcn.0041a848
mov ecx, dword [ebp - 0x464]
mov eax, dword [ecx + 0x3c8]
lea ecx, [ebp - 0x434]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x57830a
test dx, dx
je 0x578306
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x57830a
add eax, 4
add ecx, 4
test dx, dx
jne 0x5782e4
xor eax, eax
jmp 0x57830f
sbb eax, eax
or eax, 1
test eax, eax
jne 0x578323
mov dword [ebp - 0x474], ebx
mov dword [ebp - 0x4a4], 1
mov byte [ebp - 4], 8
add esi, 0xfffffff0
or eax, 0xffffffff
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x578368
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x5785e4
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5785e4
push 0
push dword [ecx + 4]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov eax, dword [ebp - 0x468]
mov esi, dword [ebp - 0x470]
lea ecx, [ebp - 0x460]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
je 0x578399
cmp esi, 0xff
jg 0x578399
mov eax, dword [ebp - 0x468]
jmp 0x5781b3
mov ebx, dword [sym.imp.USER32.dll_CheckMenuRadioItem]
push dword [ebp - 0x468]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov esi, dword [ebp - 0x464]
push 0
push dword [ebp - 0x474]
mov eax, dword [esi + 0x3b0]
add eax, 0x9800
push eax
push 0x9800
push dword [ebp - 0x488]
call ebx
mov eax, dword [esi + 0x3b0]
push 0
push dword [ebp - 0x474]
add eax, 0x9800
push eax
push 0x9800
push dword [ebp - 0x480]
call ebx
lea ecx, [ebp - 0x484]
call fcn.004182bd
lea ecx, [ebp - 0x48c]
call fcn.004182bd
lea ecx, [ebp - 0x47c]
call fcn.004182bd
lea ecx, [ebp - 0x498]
call fcn.004182bd
cmp dword [ebp - 0x4a4], 0
jne 0x578436
push 0
push 0
push str.Fatal_Error._Missing_Language_Files__
call fcn.00412c49
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x484]
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
call fcn.004182a7
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x48c]
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
call fcn.004182a7
or ebx, 0xffffffff
mov byte [ebp - 4], 3
add edi, 0xfffffff0
mov eax, ebx
lock xadd dword [edi + 0xc], eax
dec eax
test eax, eax
jg 0x5784b3
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x5785eb
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5785eb
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [ecx + 4]
call edi
jmp 0x5784b9
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
mov esi, dword [ebp - 0x4a8]
mov eax, ebx
mov byte [ebp - 4], 2
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x5784fc
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x5785f2
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5785f2
push 0
push dword [ecx + 4]
call edi
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x490]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x578540
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, 0x5940e4
jne 0x5785f9
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x5785f9
push 0
push dword [edx + 4]
call edi
mov byte [ebp - 4], 0xc
lea ecx, [ebp - 0x47c]
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
call fcn.004182a7
mov dword [ebp - 4], 0xd
lea ecx, [ebp - 0x498]
mov dword [ebp - method.CMenu.virtual_0], vtable.CMenu.0
call fcn.004182a7
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0053c0f2
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x577cd9
push 0x80004005
call fcn.00402ab0
call dword [eax + 0xc]
mov ecx, eax
mov dword [ebp - 0x4a8], eax
jmp 0x577d0f
push 0x80004005
call fcn.00402ab0
call edx
jmp 0x577d42
mov ecx, eax
call edx
jmp 0x577e2e
call edx
jmp 0x577fef
call edx
jmp 0x5781f3
call edx
jmp 0x578368
call edx
jmp 0x5784b3
call edx
jmp 0x5784fc
mov ecx, edx
call esi
jmp 0x578540