Function at 0x46546e
Capabilities:
Read .ini file

Disassembly:
push ebp
lea ebp, [esp - 0x4c4]
sub esp, 0x540
mov eax, dword [0x49ce98]
xor eax, ebp
mov dword [ebp + 0x4c0], eax
push edi
mov edi, dword [ebp + 0x4cc]
mov dword [ebp - 0x70], ecx
mov dword [ebp - 0x68], edi
call fcn.0046538a
test edi, edi
jne 0x4654a6
xor eax, eax
jmp 0x4657ff
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push edi
push 0
push str.CharsX
mov ebx, str.Info
push ebx
call esi
push edi
push 0
push str.CharsY
push ebx
mov dword [ebp - 0x64], eax
call esi
cmp dword [ebp - 0x64], 0
mov dword [ebp - 0x5c], eax
je 0x4657fb
test eax, eax
je 0x4657fb
push edi
mov esi, 0x104
lea eax, [ebp - 0x54]
push esi
push eax
call dword [sym.imp.MSVCR90.dll_strcpy_s]
add esp, 0xc
push str..bmp
lea eax, [ebp - 0x54]
push eax
call dword [sym.imp.SHLWAPI.dll_PathRenameExtensionA]
mov edi, dword [ebp - 0x70]
lea eax, [ebp - 0x54]
add edi, 4
push eax
mov ecx, edi
call dword [sym.imp.RTUI.dll_public:_int___thiscall_CDIB::LoadImageA_char__]
test eax, eax
je 0x4657fb
mov ecx, edi
call dword [sym.imp.RTUI.dll_public:_long_int___thiscall_CDIB::GetWidth_void_]
mov ecx, edi
mov dword [ebp - 0x6c], eax
call dword [sym.imp.RTUI.dll_public:_long_int___thiscall_CDIB::GetHeight_void_]
mov ecx, eax
mov eax, dword [ebp - 0x6c]
cdq
idiv dword [ebp - 0x64]
mov dword [ebp - 0x74], eax
mov eax, ecx
cdq
idiv dword [ebp - 0x5c]
mov edx, dword [ebp - 0x74]
imul edx, dword [ebp - 0x64]
mov dword [ebp - 0x78], eax
cmp edx, dword [ebp - 0x6c]
jne 0x4657fb
imul eax, dword [ebp - 0x5c]
cmp eax, ecx
jne 0x4657fb
push esi
lea eax, [ebp + 0x2b8]
push 0
push eax
call sub.MSVCR90.dll_memset
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
add esp, 0xc
push dword [ebp - 0x68]
lea eax, [ebp + 0x2b8]
push esi
push eax
push 0x4749e0
push str.CharW
push ebx
call edi
push esi
lea eax, [ebp + 0x3bc]
push 0
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push dword [ebp - 0x68]
lea eax, [ebp + 0x3bc]
push esi
push eax
push 0x4749e0
push str.CharH
push ebx
call edi
push esi
lea eax, [ebp + 0x1b4]
push 0
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push dword [ebp - 0x68]
lea eax, [ebp + 0x1b4]
push esi
push eax
push 0x4749e0
push str.Charset
push ebx
call edi
lea eax, [ebp + 0x1b4]
push eax
call sub.MSVCR90.dll_strlen
pop ecx
test eax, eax
jne 0x465615
mov eax, dword [ebp - 0x5c]
imul eax, dword [ebp - 0x64]
xor ecx, ecx
test eax, eax
jle 0x465615
mov dl, cl
add dl, 0x20
mov byte [ebp + ecx + 0x1b4], dl
inc ecx
cmp ecx, eax
jl 0x465604
lea eax, [ebp + 0x2b8]
push eax
call sub.MSVCR90.dll_strlen
pop ecx
test eax, eax
jne 0x46564a
mov eax, dword [ebp - 0x5c]
imul eax, dword [ebp - 0x64]
test eax, eax
jle 0x46564a
push eax
mov al, byte [ebp - 0x74]
add al, 0x30
movzx eax, al
push eax
lea eax, [ebp + 0x2b8]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
lea eax, [ebp + 0x3bc]
push eax
call sub.MSVCR90.dll_strlen
pop ecx
test eax, eax
jne 0x46567f
mov eax, dword [ebp - 0x5c]
imul eax, dword [ebp - 0x64]
test eax, eax
jle 0x46567f
push eax
mov al, byte [ebp - 0x78]
add al, 0x30
movzx eax, al
push eax
lea eax, [ebp + 0x3bc]
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
lea eax, [ebp + 0x2b8]
push eax
call sub.MSVCR90.dll_strlen
mov dword [ebp - 0x6c], eax
lea eax, [ebp + 0x3bc]
push eax
call sub.MSVCR90.dll_strlen
mov dword [ebp - 0x5c], eax
lea eax, [ebp + 0x1b4]
push eax
call sub.MSVCR90.dll_strlen
add esp, 0xc
mov dword [ebp - 0x7c], eax
test eax, eax
je 0x4657fb
cmp eax, dword [ebp - 0x6c]
jne 0x4657fb
cmp eax, dword [ebp - 0x5c]
jne 0x4657fb
and dword [ebp - 0x5c], 0
test eax, eax
jle 0x4657b6
mov edi, dword [sym.imp.MSVCR90.dll_sscanf_s]
push 1
lea eax, [ebp - 0x55]
push eax
mov eax, dword [ebp - 0x5c]
lea eax, [ebp + eax + 0x1b4]
push 0x480b28
push eax
call edi
add esp, 0x10
cmp eax, 1
jne 0x4657a1
mov eax, dword [ebp - 0x5c]
cdq
idiv dword [ebp - 0x64]
movzx ecx, byte [ebp - 0x55]
mov ebx, dword [ebp - 0x70]
shl ecx, 4
push 1
imul edx, dword [ebp - 0x74]
imul eax, dword [ebp - 0x78]
mov dword [ecx + ebx + 0x4c], edx
movzx ecx, byte [ebp - 0x55]
add ecx, 5
shl ecx, 4
mov dword [ecx + ebx], eax
lea eax, [ebp - 0x5e]
push eax
mov eax, dword [ebp - 0x5c]
lea eax, [ebp + eax + 0x2b8]
push 0x480b28
push eax
call edi
push 1
lea eax, [ebp - 0x5d]
push eax
mov eax, dword [ebp - 0x5c]
lea eax, [ebp + eax + 0x3bc]
push 0x480b28
push eax
call edi
mov al, byte [ebp - 0x5e]
movzx ecx, byte [ebp - 0x55]
sub al, 0x41
add esp, 0x20
cmp al, 0x19
movzx eax, byte [ebp - 0x5e]
ja 0x465772
sub eax, 0x37
jmp 0x465775
sub eax, 0x30
shl ecx, 4
mov dword [ecx + ebx + 0x54], eax
mov al, byte [ebp - 0x5d]
movzx ecx, byte [ebp - 0x55]
sub al, 0x41
cmp al, 0x19
movzx eax, byte [ebp - 0x5d]
ja 0x465792
sub eax, 0x37
jmp 0x465795
sub eax, 0x30
shl ecx, 4
mov dword [ecx + ebx + 0x58], eax
mov ebx, str.Info
inc dword [ebp - 0x5c]
mov eax, dword [ebp - 0x5c]
cmp eax, dword [ebp - 0x7c]
jl 0x4656db
mov edi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
push esi
lea eax, [ebp + 0xb0]
push 0
push eax
call sub.MSVCR90.dll_memset
add esp, 0xc
push dword [ebp - 0x68]
lea eax, [ebp + 0xb0]
push esi
push eax
push 0x4749e0
push str.Desc
push ebx
call edi
mov ecx, dword [ebp - 0x70]
lea eax, [ebp + 0xb0]
push eax
add ecx, 0x104c
call dword [sym.imp.mfc90.dll_Ordinal_820]
xor eax, eax
inc eax
jmp 0x4657fd
xor eax, eax
pop esi
pop ebx
mov ecx, dword [ebp + 0x4c0]
xor ecx, ebp
pop edi
call fcn.00467d0a
add ebp, 0x4c4
leave
ret 4