Function at 0x402480
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x44
mov eax, dword [0x44bfcc]
xor eax, ebp
mov dword [ebp - 4], eax
cmp byte [0x44d4a0], 0
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, dword [ebp + 0x14]
jne 0x4024d8
push str.RSpoolerLogger
push str.Ricoh_Platy_Logger_Semaphore__s
push 0x44dacc
call fcn.00406c60
mov eax, dword [0x44dcd4]
add esp, 0xc
test eax, eax
jne 0x4024e1
push 0x44dacc
push 0x20
push 1
push eax
call dword [sym.imp.KERNEL32.dll_CreateSemaphoreW]
mov dword [0x44dcd4], eax
jmp 0x4024dd
mov eax, dword [0x44dcd4]
test eax, eax
je 0x4024ea
push 0xffffffffffffffff
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push str.RSpoolerLogger
push 0x104
push 0x44d4b4
call fcn.0042284e
push esi
push 0x104
push 0x44d6bc
call fcn.0042284e
push str.XPSWriter.log
push 0x104
push 0x44d8c4
call fcn.0042284e
mov ecx, 0x44d6bc
add esp, 0x24
lea edx, [ecx + 2]
lea ecx, [ecx]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x402530
sub ecx, edx
sar ecx, 1
cmp ecx, 0x103
jge 0x40255d
cmp word [ecx*2 + 0x44d6ba], 0x5c
je 0x40255d
mov dword [ecx*2 + 0x44d6bc], 0x5c
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push edi
push 0x10
lea eax, [ebp - 0x24]
push eax
push str.INFO
push str.LogLevel
push str.RSpoolerLogger
call esi
mov ecx, str.FATAL
lea eax, [ebp - 0x24]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4025a9
test dx, dx
je 0x4025a5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4025a9
add eax, 4
add ecx, 4
test dx, dx
jne 0x402583
xor eax, eax
jmp 0x4025ae
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4025c1
mov dword [0x44d4a4], 1
jmp 0x4026e2
mov ecx, str.ERROR
lea eax, [ebp - 0x24]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4025f6
test dx, dx
je 0x4025f2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4025f6
add eax, 4
add ecx, 4
test dx, dx
jne 0x4025d0
xor eax, eax
jmp 0x4025fb
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40260e
mov dword [0x44d4a4], 2
jmp 0x4026e2
mov ecx, str.WARN
lea eax, [ebp - 0x24]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40263c
test dx, dx
je 0x402638
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40263c
add eax, 4
add ecx, 4
test dx, dx
jne 0x402616
xor eax, eax
jmp 0x402641
sbb eax, eax
or eax, 1
test eax, eax
jne 0x402654
mov dword [0x44d4a4], 3
jmp 0x4026e2
mov ecx, str.INFO
lea eax, [ebp - 0x24]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402686
test dx, dx
je 0x402682
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402686
add eax, 4
add ecx, 4
test dx, dx
jne 0x402660
xor eax, eax
jmp 0x40268b
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40269b
mov dword [0x44d4a4], 4
jmp 0x4026e2
mov ecx, str.DEBUG
lea eax, [ebp - 0x24]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4026c9
test dx, dx
je 0x4026c5
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4026c9
add eax, 4
add ecx, 4
test dx, dx
jne 0x4026a3
xor ecx, ecx
jmp 0x4026ce
sbb ecx, ecx
or ecx, 1
mov eax, 2
mov edx, 5
test ecx, ecx
cmove eax, edx
mov dword [0x44d4a4], eax
push edi
push 0x10
lea eax, [ebp - 0x44]
push eax
push str.FALSE
push str.OutputDebugString
push str.RSpoolerLogger
call esi
mov ecx, str.TRUE
lea eax, [ebp - 0x44]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402728
test dx, dx
je 0x402724
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402728
add eax, 4
add ecx, 4
test dx, dx
jne 0x402702
xor ecx, ecx
jmp 0x40272d
sbb ecx, ecx
or ecx, 1
movzx eax, byte [0x44d4a8]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
push edi
push 0x80000
mov edx, 1
test ecx, ecx
push str.MaxFileSize
cmove eax, edx
push str.RSpoolerLogger
mov byte [0x44d4a8], al
call esi
mov dword [0x44d4ac], eax
push edi
push 0x14
push str.BackupCount
push str.RSpoolerLogger
call esi
mov dword [0x44d4b0], eax
mov eax, dword [0x44dcd4]
pop edi
mov byte [0x44d4a0], 1
pop esi
test eax, eax
je 0x402791
push 0
push 1
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0042128d
mov esp, ebp
pop ebp
ret 0x10