Function at 0x1400227b0
Capabilities:
Read .ini file

Disassembly:
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x270
mov qword [rsp + 0x40], 0xfffffffffffffffe
mov qword [rsp + 0x2b0], rbx
mov rax, qword [0x140098b90]
xor rax, rsp
mov qword [rsp + 0x260], rax
mov rbx, r8
mov r15, rdx
xor r12d, r12d
mov dword [rsp + 0x30], r12d
xor edx, edx
mov r8d, 0x208
lea rcx, [rsp + 0x50]
call fcn.140056260
call fcn.1400280cc
mov rcx, rax
mov eax, r12d
test rcx, rcx
setne al
test eax, eax
jne 0x140022826
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rcx]
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x30], rsi
lea r13, [0x14007e8c4]
mov r14d, 1
or rbp, 0xffffffffffffffff
test r13, 0xffffffffffff0000
jne 0x14002287d
movzx edi, r13w
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140022959
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x30]
call fcn.140003060
mov rsi, qword [rsp + 0x30]
jmp 0x140022959
call qword [0x14009a4a0]
mov dword [rsp + 0x28], r12d
mov qword [rsp + 0x20], r12
mov r9d, ebp
mov r8, r13
xor edx, edx
mov ecx, eax
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
lea edi, [rax - 1]
test edi, edi
jle 0x140022901
mov ecx, r14d
sub ecx, dword [rsi - 8]
mov eax, dword [rsi - 0xc]
sub eax, edi
or eax, ecx
jge 0x1400228c4
mov edx, edi
lea rcx, [rsp + 0x30]
call fcn.140003380
mov rsi, qword [rsp + 0x30]
call qword [0x14009a4a0]
mov ecx, eax
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rsi
mov r9d, ebp
mov r8, r13
xor edx, edx
call qword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
cmp edi, dword [rsi - 0xc]
jg 0x1400228f6
mov dword [rsi - 0x10], edi
movsxd rax, edi
mov word [rsi + rax*2], 0
jmp 0x140022959
mov ecx, 0x80070057
call fcn.140003280
int3
lea rdx, [rsi - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], 0
je 0x140022959
cmp dword [rdx + 0x10], 0
jge 0x140022930
cmp dword [rsi - 0xc], 0
jge 0x140022925
mov ecx, 0x80070057
call fcn.140003280
int3
mov dword [rsi - 0x10], r12d
mov word [rsi], 0
jmp 0x140022959
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140022947
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rsi, [rax + 0x18]
mov qword [rsp + 0x30], rsi
mov qword [rsp + 0x28], rbx
mov dword [rsp + 0x20], 0x104
lea r9, [rsp + 0x50]
lea r8, str.Error
lea rdx, str.EBAPIB6Name
lea rcx, str.PrinterDriverData
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea rdx, str.Error
lea rcx, [rsp + 0x50]
call qword [sym.imp.KERNEL32.dll_lstrcmpW]
test eax, eax
jne 0x140022a2b
mov rcx, qword [rsi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rsi - 8], 0
jl 0x1400229c4
cmp rax, qword [rsi - 0x18]
jne 0x1400229c4
lea rdi, [rsi - 0x18]
lock add dword [rsi - 8], 1
jmp 0x140022a02
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rsi - 0x10]
call qword [rax]
mov rdi, rax
test rax, rax
jne 0x1400229e0
call fcn.140003050
int3
mov eax, dword [rsi - 0x10]
mov dword [rdi + 8], eax
mov eax, dword [rsi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rsi
add rdx, rdx
lea rcx, [rdi + 0x18]
call fcn.1400525a0
lea rax, [rdi + 0x18]
mov qword [r15], rax
lock xadd dword [rsi - 8], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140022a23
mov rcx, qword [rsi - 0x18]
mov rax, qword [rcx]
lea rdx, [rsi - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, r15
jmp 0x140022d0b
call fcn.1400280cc
mov rdx, rax
mov ecx, r12d
test rax, rax
setne cl
test ecx, ecx
jne 0x140022a4b
mov ecx, 0x80004005
call fcn.140003280
int3
mov rax, qword [rax]
mov rcx, rdx
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
lea rcx, [rsp + 0x50]
lea rax, [rsp + 0x50]
test rax, 0xffffffffffff0000
jne 0x140022a9c
movzx edi, cx
mov ecx, edi
call fcn.1400280b8
test rax, rax
je 0x140022b9e
mov r8d, edi
mov rdx, rax
lea rcx, [rsp + 0x38]
call fcn.140003060
mov rbx, qword [rsp + 0x38]
jmp 0x140022b9e
xor eax, eax
mov rcx, rbp
lea rdi, [rsp + 0x50]
repne scasw ax, word [rdi]
not rcx
sub rcx, 1
mov rdi, rcx
test ecx, ecx
jne 0x140022b1b
lea rdx, [rbx - 0x18]
mov rdi, qword [rdx]
cmp dword [rdx + 8], eax
je 0x140022b9e
cmp dword [rdx + 0x10], eax
jge 0x140022ae8
cmp dword [rbx - 0xc], eax
jge 0x140022adc
mov ecx, 0x80070057
call fcn.140003280
int3
mov dword [rbx - 0x10], r12d
mov word [rbx], ax
jmp 0x140022b9e
mov eax, ebp
lock xadd dword [rdx + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140022aff
mov rcx, qword [rdx]
mov rax, qword [rcx]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x18]
lea rbx, [rax + 0x18]
mov qword [rsp + 0x38], rbx
mov rsi, qword [rsp + 0x30]
jmp 0x140022b9e
mov r12d, dword [rbx - 0x10]
lea r13, [rsp + 0x50]
sub r13, rbx
sar r13, 1
sub r14d, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, ecx
or eax, r14d
jge 0x140022b49
mov edx, ecx
lea rcx, [rsp + 0x38]
call fcn.140003380
mov rbx, qword [rsp + 0x38]
cmp r13, r12
ja 0x140022b69
movsxd rax, edi
lea r12, [rax + rax]
lea r8, [rbx + r13*2]
mov r9, r12
mov rdx, r12
mov rcx, rbx
call fcn.1400524a0
jmp 0x140022b83
movsxd rax, edi
lea r12, [rax + rax]
mov r9, r12
lea r8, [rsp + 0x50]
mov rdx, r12
mov rcx, rbx
call fcn.1400525a0
test edi, edi
js 0x140022d00
cmp edi, dword [rbx - 0xc]
jg 0x140022d00
mov dword [rbx - 0x10], edi
mov word [r12 + rbx], 0
lea rdi, [rbx - 0x18]
add rsi, 0xffffffffffffffe8
cmp rdi, rsi
je 0x140022c59
cmp dword [rsi + 0x10], 0
jl 0x140022c47
mov rcx, qword [rdi]
cmp rcx, qword [rsi]
jne 0x140022c47
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi + 0x10], 0
jl 0x140022be3
cmp rax, qword [rdi]
jne 0x140022be3
mov rbx, rdi
lock add dword [rdi + 0x10], 1
jmp 0x140022c22
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi + 8]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x140022bff
call fcn.140003050
int3
mov eax, dword [rdi + 8]
mov dword [rbx + 8], eax
mov eax, dword [rdi + 8]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
lea r8, [rdi + 0x18]
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.1400525a0
mov eax, ebp
lock xadd dword [rsi + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140022c3c
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, rsi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
lea rax, [rbx + 0x18]
mov qword [rsp + 0x30], rax
jmp 0x140022c59
mov r8d, dword [rbx - 0x10]
mov rdx, rbx
lea rcx, [rsp + 0x30]
call fcn.1400036f0
nop
mov eax, ebp
lock xadd dword [rdi + 0x10], eax
add eax, 0xffffffff
test eax, eax
jg 0x140022c73
mov rcx, qword [rdi]
mov rax, qword [rcx]
mov rdx, rdi
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rdi, qword [rsp + 0x30]
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
call qword [rax + 0x20]
mov rcx, rax
cmp dword [rdi - 8], 0
jl 0x140022c9c
cmp rax, qword [rdi - 0x18]
jne 0x140022c9c
lea rbx, [rdi - 0x18]
lock add dword [rdi - 8], 1
jmp 0x140022cda
mov rax, qword [rax]
mov r8d, 2
mov edx, dword [rdi - 0x10]
call qword [rax]
mov rbx, rax
test rax, rax
jne 0x140022cb8
call fcn.140003050
int3
mov eax, dword [rdi - 0x10]
mov dword [rbx + 8], eax
mov eax, dword [rdi - 0x10]
add eax, 1
movsxd rdx, eax
lea r9, [rdx + rdx]
mov r8, rdi
add rdx, rdx
lea rcx, [rbx + 0x18]
call fcn.1400525a0
lea rax, [rbx + 0x18]
mov qword [r15], rax
lock xadd dword [rdi - 8], ebp
add ebp, 0xffffffff
test ebp, ebp
jg 0x140022cfb
mov rcx, qword [rdi - 0x18]
mov rax, qword [rcx]
lea rdx, [rdi - 0x18]
call qword [rax + reloc.OLEAUT32.dll_VariantClear]
mov rax, r15
jmp 0x140022d0b
mov ecx, 0x80070057
call fcn.140003280
nop
mov rcx, qword [rsp + 0x260]
xor rcx, rsp
call fcn.140052690
mov rbx, qword [rsp + 0x2b0]
add rsp, 0x270
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret