Function at 0x438b80
Capabilities:
Print debug messages
Read .ini file

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x492829
push eax
mov dword fs:[0], esp
mov eax, dword [esp + 0x10]
sub esp, 0x120
push ebx
push ebp
push esi
push edi
mov edi, ecx
xor ebx, ebx
cmp eax, ebx
mov esi, dword [edi + 0x20]
je 0x438bb1
mov esi, dword [edi + 0x24]
cmp esi, ebx
jne 0x438bbf
push str.Can_not_access_the_scanner.__Please_restart_the_system_and_try_again.
jmp 0x438fb1
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], ebx
mov eax, dword [esi]
push ecx
push esi
call dword [eax + 0x10]
test eax, eax
jne 0x438fac
cmp dword [esp + 0x14], ebx
je 0x438fac
mov edx, dword [esi]
lea eax, [esp + 0x14]
push eax
push esi
call dword [edx + 0x14]
cmp eax, ebx
jne 0x438fa5
cmp dword [esp + 0x14], ebx
je 0x438fa5
push str.C:Secure1000Secure.ini
mov ecx, 0x23
xor eax, eax
lea edi, [esp + 0xa8]
push 0x280
mov dword [esp + 0xa8], ebx
push str.SCAN_LINES
push str.SYSTEM
rep stosd dword es:[edi], eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x40], 0x24
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
lea ecx, [eax*8]
sub ecx, eax
lea ecx, [ecx + ecx*4]
shl ecx, 5
mov dword [esp + 0x10], ecx
lea ecx, [esp + 0x24]
call sub.MFC42.DLL_CString::CString_4
mov dword [esp + 0x138], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x38], ebx
call fcn.0043b9e0
mov edx, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
lea eax, [edx + edx]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemAlloc]
mov ecx, dword [esp + 0x10]
mov ebp, eax
lea edx, [ecx + ecx]
push edx
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebx, eax
test ebp, ebp
je 0x438f73
test ebx, ebx
je 0x438f73
lea ecx, [esp + 0x24]
call sub.MFC42.DLL_CString::Empty
mov eax, dword [esp + 0x10]
mov edi, ebp
push 0
push 0x138d
lea ecx, [eax + eax]
xor eax, eax
mov edx, ecx
push 0x8020
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [esp + 0x1c]
mov edi, ebx
lea ecx, [eax + eax]
xor eax, eax
mov edx, ecx
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [0x4f1ac0]
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
call fcn.00430b00
mov edi, dword [eax + 0x3c]
call fcn.00430b00
mov eax, dword [eax + 0x40]
test eax, eax
jge 0x438d0f
xor eax, eax
jmp 0x438d1b
cmp eax, 0x1f4
jle 0x438d1b
mov eax, 0x1f4
test edi, edi
jge 0x438d23
xor edi, edi
jmp 0x438d30
cmp edi, 0x1f4
jle 0x438d30
mov edi, 0x1f4
mov ecx, dword [esi]
push edi
push eax
push esi
call dword [ecx + 0x148]
mov edx, dword [esi]
lea eax, [esp + 0x14]
lea ecx, [esp + 0x30]
push eax
push ecx
lea eax, [esp + 0xa8]
lea ecx, [esp + 0x40]
push eax
push ecx
lea eax, [esp + 0x20]
push ebp
push eax
push esi
call dword [edx + 0x34]
test eax, eax
mov eax, dword [esp + 0x14]
jne 0x438e83
cmp eax, 1
jne 0x438e83
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov edi, dword [sym.imp.MSVCRT.dll_sprintf]
push ecx
push edx
mov dword [esp + 0x24], eax
push eax
lea eax, [esp + 0x48]
push str.nSamples:___d___nRows:__d___nCols:__d
push eax
call edi
add esp, 0x14
lea ecx, [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea edx, [esp + 0x20]
lea eax, [esp + 0x18]
push edx
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x20]
push eax
push ecx
push ebx
push edx
push ebp
call fcn.00433870
add esp, 0x18
test eax, eax
je 0x438f28
lea ecx, [esp + 0x2c]
mov eax, dword [esi]
push ecx
lea edx, [esp + 0x24]
lea ecx, [esp + 0x1c]
push edx
push ecx
mov ecx, dword [esp + 0x1c]
lea edx, [esp + 0x28]
push ebx
push edx
push ebp
push ecx
push esi
call dword [eax + 0x30]
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x438e03
mov edx, dword [esp + 0x1c]
push edx
push ebx
call fcn.00433c70
add esp, 8
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
push eax
mov eax, dword [esp + 0x14]
push ecx
push edx
push eax
lea ecx, [esp + 0x4c]
push str.sample:__d__OutSample:__d___row:__d___col:__d
push ecx
call edi
add esp, 0x18
lea edx, [esp + 0x3c]
push edx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
test eax, eax
mov edi, eax
mov dword [esp + 0x34], ecx
jle 0x438f28
test ecx, ecx
jle 0x438f28
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x438f28
push 0xc8
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [esp + 0x28], eax
test eax, eax
mov byte [esp + 0x138], 1
je 0x438edb
mov ecx, eax
call fcn.00451580
mov esi, eax
jmp 0x438edd
cmp eax, 0xfffffffd
jne 0x438f28
mov eax, dword [esp + 0x30]
cmp ax, 1
jne 0x438eb3
cmp dword [esp + 0xa0], 0x15
jne 0x438eb3
mov ecx, dword [esp + 0x2c]
push 0
push 0
push 1
push 0x15
call fcn.0043bd00
jmp 0x438f28
push 0
push 0
push 1
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.0043b9e0
mov ecx, eax
call fcn.0043bbb0
mov ecx, dword [esi]
push 0x4b0c58
push esi
call dword [ecx + 0x14]
jmp 0x438f28
xor esi, esi
test esi, esi
mov byte [esp + 0x138], 0
mov dword [esp + 0x28], esi
je 0x438f28
mov edx, dword [esp + 0x34]
mov ecx, esi
push edx
push edi
push ebx
call fcn.00451900
push 0
mov ecx, esi
call fcn.00455830
test eax, eax
jne 0x438f28
mov ecx, esi
call fcn.00451700
push esi
call sub.MFC42.DLL_operatordelete
add esp, 4
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], 0xfffffffc
push ebp
call dword [sym.imp.ole32.dll_CoTaskMemFree]
push ebx
call sub.MFC42.DLL_operatordelete
add esp, 4
call sub.MFC42.DLL_AfxGetThread
test eax, eax
je 0x438f4a
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x7c]
jmp 0x438f4c
xor eax, eax
push 0
lea ecx, [eax + 0x26c]
call fcn.0043f050
lea ecx, [esp + 0x24]
mov dword [esp + 0x138], 0xffffffff
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x28]
jmp 0x438fba
push str.Scan_failed.__Internal_Error.__Could_not_allocate_memory.__r_n_r_n
lea ecx, [esp + 0x28]
call sub.MFC42.DLL_CString::operator_2
push str.Please_try_again_by_restarting_the_system
lea ecx, [esp + 0x28]
call sub.MFC42.DLL_CString::operator
lea ecx, [esp + 0x24]
mov dword [esp + 0x138], 0xffffffff
call sub.MFC42.DLL_CString::CString
jmp 0x438fb8
push str.Scanner_not_warmed_up.__Please_restart_the_system_and_try_again.
jmp 0x438fb1
push str.Scanner_not_initialized.__Please_restart_the_system_and_try_again.
mov ecx, edi
call fcn.00438a20
xor eax, eax
mov ecx, dword [esp + 0x130]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x12c
ret 4