Function at 0x100809c0
Capabilities:
Get common file path
Query environment variable
Read .ini file

Disassembly:
sub esp, 0xe1c
mov eax, dword [0x100cd8ec]
xor eax, esp
mov dword [esp + 0xe18], eax
push esi
push edi
mov edi, dword [esp + 0xe28]
push 0x103
xor esi, esi
lea eax, [esp + 0x421]
push esi
push eax
mov dword [esp + 0x20], edi
mov byte [esp + 0x428], 0
call sub.MSVCR80.dll_memset
push 0x3fc
lea ecx, [esp + 0x30]
push esi
push ecx
mov dword [esp + 0x34], esi
call sub.MSVCR80.dll_memset
push 0x3ff
lea edx, [esp + 0x63d]
push esi
push edx
mov byte [esp + 0x644], 0
call sub.MSVCR80.dll_memset
push 0x3ff
lea eax, [esp + 0xa49]
push esi
push eax
mov byte [esp + 0xa50], 0
call sub.MSVCR80.dll_memset
push 0xff
lea ecx, [esp + 0x555]
push esi
push ecx
mov byte [esp + 0x55c], 0
call sub.MSVCR80.dll_memset
add esp, 0x3c
cmp edi, esi
mov dword [esp + 8], esi
mov dword [esp + 0xc], esi
jne 0x10080a8e
pop edi
mov eax, 0x3e9
pop esi
mov ecx, dword [esp + 0xe18]
xor ecx, esp
call fcn.10090e24
add esp, 0xe1c
ret
push ebp
push str.WINDOWS_system32
call dword [sym.imp.MSVCR80.dll_getenv]
mov ebp, dword [sym.imp.MSVCR80.dll_strncpy]
add esp, 4
cmp eax, esi
je 0x10080ac8
push str._npki_pkcs11.cnf
push eax
lea edx, [esp + 0x428]
push 0x100a1814
push edx
call dword [sym.imp.MSVCR80.dll_sprintf]
add esp, 0x10
jmp 0x10080b8b
push 0x3ff
lea eax, [esp + 0x628]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryA]
test eax, eax
je 0x10080fa1
push 0x3ff
lea ecx, [esp + 0x628]
push ecx
lea edx, [esp + 0xa2c]
push edx
call ebp
lea eax, [esp + 0xa30]
push 0x100a279c
push eax
call dword [sym.imp.MSVCR80.dll_strtok]
add esp, 0x14
test eax, eax
jne 0x10080b2b
push 0x103
lea ecx, [esp + 0x424]
push str.C:WINDOWS_system32_npki_pkcs11.cnf
push ecx
call ebp
add esp, 0xc
push 0x104
lea edx, [esp + 0x424]
push esi
push edx
call sub.MSVCR80.dll_memset
push 0x103
lea eax, [esp + 0x634]
push eax
lea ecx, [esp + 0x434]
push ecx
call ebp
lea eax, [esp + 0x438]
add esp, 0x18
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x10080b62
sub eax, edx
mov edx, 0x103
sub edx, eax
push edx
lea eax, [esp + 0x424]
push str._npki_pkcs11.cnf
push eax
call dword [sym.imp.MSVCR80.dll_strncat]
add esp, 0xc
lea ecx, [esp + 0x420]
push esi
push ecx
call dword [sym.imp.MSVCR80.dll__access]
add esp, 8
test eax, eax
je 0x10080bbe
pop ebp
pop edi
mov eax, 0x3ea
pop esi
mov ecx, dword [esp + 0xe18]
xor ecx, esp
call fcn.10090e24
add esp, 0xe1c
ret
push ebx
push 0x400
lea edx, [esp + 0x62c]
push esi
push edx
call sub.MSVCR80.dll_memset
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
lea eax, [esp + 0x424]
push eax
push 0x3ff
lea ecx, [esp + 0x630]
push ecx
push 0x1009fc09
push str.Driver
push str.PKCS11.Driver
call ebx
lea edx, [esp + 0x628]
push 0x1009fc09
push edx
call dword [sym.imp.MSVCR80.dll__stricmp]
add esp, 8
test eax, eax
je 0x10080f90
lea eax, [esp + 0x628]
push 0x100a52b8
push eax
call dword [sym.imp.MSVCR80.dll_strtok]
mov edi, eax
add esp, 8
cmp edi, esi
je 0x10080f90
nop
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x10080c45
sub eax, edx
add eax, 1
push 1
push eax
call sub.XecureAcIO.dll_XFA_calloc
mov ecx, dword [esp + 0x18]
mov esi, eax
add esp, 8
test esi, esi
mov dword [esp + ecx*4 + 0x24], esi
je 0x10080d3a
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x10080c75
sub eax, edx
add eax, 1
push eax
push 0
push esi
call sub.MSVCR80.dll_memset
mov eax, edi
add esp, 0xc
lea ecx, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x10080c94
sub eax, ecx
push eax
push edi
push esi
call ebp
mov esi, dword [esp + 0x1c]
push 0x100a52b8
add esi, 1
push 0
mov dword [esp + 0x24], esi
call dword [sym.imp.MSVCR80.dll_strtok]
add esp, 0x14
cmp esi, 0x100
mov edi, eax
jge 0x10080cd1
test edi, edi
jne 0x10080c40
test esi, esi
je 0x10080f90
push 8
push 1
call sub.XecureAcIO.dll_XFA_calloc
mov ecx, dword [esp + 0x24]
add esp, 8
test eax, eax
mov dword [ecx], eax
jne 0x10080d66
xor ebx, ebx
xor edi, edi
cmp esi, ebx
jle 0x10080d1c
jmp 0x10080d00
mov eax, dword [esp + edi*4 + 0x24]
cmp eax, ebx
je 0x10080d15
push eax
call sub.XecureAcIO.dll_XFA_free
add esp, 4
mov dword [esp + edi*4 + 0x24], ebx
add edi, 1
cmp edi, esi
jl 0x10080d00
mov eax, 0x3ee
pop ebx
pop ebp
pop edi
pop esi
mov ecx, dword [esp + 0xe18]
xor ecx, esp
call fcn.10090e24
add esp, 0xe1c
ret
xor esi, esi
test ecx, ecx
jle 0x10080d1c
mov eax, dword [esp + esi*4 + 0x24]
test eax, eax
je 0x10080d5d
push eax
call sub.XecureAcIO.dll_XFA_free
mov ecx, dword [esp + 0x14]
add esp, 4
mov dword [esp + esi*4 + 0x24], 0
add esi, 1
cmp esi, ecx
jl 0x10080d40
jmp 0x10080d1c
mov edi, dword [esp + 0x10]
test edi, edi
mov esi, eax
mov dword [esp + 0x18], 0
jle 0x10080f44
lea esp, [esp]
mov edx, dword [esp + 0x18]
mov edi, dword [esp + edx*4 + 0x24]
lea eax, [esp + 0x424]
push eax
push 0xff
lea ecx, [esp + 0x530]
push ecx
push 0x1009fc09
push str.Info
push edi
call ebx
lea eax, [esp + 0x528]
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x10080db4
sub eax, edx
je 0x10080f2b
cmp dword [esp + 0x14], 0
jle 0x10080ddd
push 8
push 1
call sub.XecureAcIO.dll_XFA_calloc
mov dword [esi + 4], eax
add esp, 8
mov esi, eax
add dword [esp + 0x14], 1
push 0x809
push 1
call sub.XecureAcIO.dll_XFA_calloc
push 0x100
push 0
push eax
mov dword [esi], eax
call sub.MSVCR80.dll_memset
mov edx, dword [esi]
push 0xff
push edi
push edx
call ebp
mov eax, dword [esi]
push 0x100
add eax, 0x100
push 0
push eax
call sub.MSVCR80.dll_memset
mov edx, dword [esi]
push 0xff
lea ecx, [esp + 0x558]
push ecx
add edx, 0x100
push edx
call ebp
add esp, 0x38
lea eax, [esp + 0x424]
push eax
push 0xff
lea ecx, [esp + 0x530]
push ecx
push 0x1009fc09
push str.Name
push edi
call ebx
mov edx, dword [esi]
push 0x104
add edx, 0x200
push 0
push edx
call sub.MSVCR80.dll_memset
mov ecx, dword [esi]
push 0x103
lea eax, [esp + 0x538]
push eax
add ecx, 0x200
push ecx
call ebp
add esp, 0x18
lea edx, [esp + 0x424]
push edx
push 0xff
lea eax, [esp + 0x530]
push eax
push 0x1009fc09
push str.Programs
push edi
call ebx
mov ecx, dword [esi]
push 0x400
add ecx, 0x408
push 0
push ecx
call sub.MSVCR80.dll_memset
mov eax, dword [esi]
push 0x3ff
lea edx, [esp + 0x538]
push edx
add eax, 0x408
push eax
call ebp
add esp, 0x18
lea ecx, [esp + 0x424]
push ecx
push 0xff
lea edx, [esp + 0x530]
push edx
push 0x1009fc09
push str.SignatureToken
push edi
call ebx
mov eax, dword [esi]
push 0x104
add eax, 0x304
push 0
push eax
call sub.MSVCR80.dll_memset
mov edx, dword [esi]
push 0x103
lea ecx, [esp + 0x538]
push ecx
add edx, 0x304
push edx
call ebp
add esp, 0x18
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, dword [esp + 0x10]
mov dword [esp + 0x18], eax
jl 0x10080d80
mov edi, dword [esp + 0x10]
xor esi, esi
test edi, edi
jle 0x10080f70
lea ebx, [ebx]
mov eax, dword [esp + esi*4 + 0x24]
test eax, eax
je 0x10080f69
push eax
call sub.XecureAcIO.dll_XFA_free
add esp, 4
mov dword [esp + esi*4 + 0x24], 0
add esi, 1
cmp esi, edi
jl 0x10080f50
cmp dword [esp + 0x14], 0
jne 0x10080f9a
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
push ecx
call sub.XecureAcIO.dll_XFA_free
mov edx, dword [esp + 0x20]
add esp, 4
mov dword [edx], 0
mov eax, 0x3eb
jmp 0x10080d21
xor eax, eax
jmp 0x10080d21
mov ecx, dword [esp + 0xe24]
pop ebp
pop edi
pop esi
xor ecx, esp
mov eax, 0x3e8
call fcn.10090e24
add esp, 0xe1c
ret