Function at 0x10031d02
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x90
push ebx
push ebp
push esi
push edi
push dword [esp + 0xa4]
mov ebx, ecx
call fcn.10031cda
pop ecx
test eax, eax
js 0x10031dd8
mov eax, dword [ebx]
xor esi, esi
test eax, eax
jne 0x10031d6c
push 0x28
call fcn.1009a45c
mov dword [esp + 0x40], eax
pop ecx
test eax, eax
je 0x10031d64
inc dword [0x1011731c]
xor ecx, ecx
and dword [eax + 0x10], ecx
and dword [eax + 0x14], ecx
mov byte [eax + 0x24], cl
mov dword [eax + 4], ecx
mov dword [eax + 8], ecx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x18], ecx
mov dword [eax + 0x1c], 0x10
mov dword [eax + 0x20], ecx
jmp 0x10031d66
mov eax, esi
mov dword [ebx], eax
test eax, eax
je 0x10031dd8
push dword [esp + 0xa4]
mov ecx, eax
call fcn.1003237c
test eax, eax
js 0x10031dd8
push esi
lea ebp, [ebx + 0x30]
xor edi, edi
push ebp
mov edx, 0x500
inc edi
push edi
push 0x1a
push esi
mov dword [ebx + 0x40], edx
mov dword [ebx + 0x3c], edx
mov eax, dword [0x1011730c]
push edi
push edx
push edx
mov ecx, dword [eax]
push eax
call dword [ecx + 0x5c]
test eax, eax
js 0x10031dd8
mov ecx, dword [0x1011730c]
lea eax, [ebx + 0x34]
push esi
push eax
imul eax, dword [ebx + 0x38], 0x54
mov edx, dword [ecx]
push esi
push esi
push 0x208
push eax
push ecx
call dword [edx + 0x68]
test eax, eax
jns 0x10031dea
mov ecx, dword [ebp]
test ecx, ecx
je 0x10031dd8
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
mov dword [ebp], esi
mov eax, 0x80004005
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret 4
mov eax, dword [ebx + 0x3c]
xorps xmm0, xmm0
mov dword [esp + 0x78], eax
mov eax, dword [ebx + 0x40]
neg eax
movlpd qword [esp + 0x88], xmm0
push 0x20
mov dword [esp + 0x80], eax
pop eax
push esi
movlpd qword [esp + 0x94], xmm0
mov dword [esp + 0x9c], esi
mov dword [esp + 0x78], 0x28
mov word [esp + 0x84], di
mov dword [esp + 0x88], esi
mov dword [esp + 0x3c], eax
mov word [esp + 0x86], ax
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
push esi
push esi
lea ecx, [esp + 0x5c]
mov dword [ebx + 0xe4c], eax
push ecx
push esi
lea ecx, [esp + 0x84]
push ecx
push eax
call dword [sym.imp.GDI32.dll_CreateDIBSection]
push edi
push dword [ebx + 0xe4c]
mov esi, eax
mov dword [esp + 0x60], esi
call dword [sym.imp.GDI32.dll_SetMapMode]
push 0x5a
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
imul eax, dword [ebx + 0x24]
push 0xffffffffffffffb8
pop ecx
cdq
idiv ecx
mov edi, eax
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLCID]
cmp eax, 0x419
je 0x10031eb7
cmp eax, 0x819
je 0x10031eb7
cmp eax, 0x423
je 0x10031eb7
cmp eax, 0x422
je 0x10031eb7
xor edx, edx
inc edx
jmp 0x10031ebc
mov edx, 0xcc
mov ecx, dword [ebx + 0x28]
lea eax, [ebx + 4]
push eax
push 2
push 2
push 0
push 4
push edx
mov eax, ecx
and eax, 0x20
push eax
mov eax, ecx
and eax, 0x10
push eax
mov eax, ecx
and eax, 2
test cl, 1
push eax
mov ecx, 0x2bc
mov eax, 0x190
cmovne eax, ecx
push eax
xor eax, eax
push eax
push eax
push eax
push edi
call dword [sym.imp.GDI32.dll_CreateFontA]
mov edi, eax
mov dword [esp + 0x3c], edi
push esi
test edi, edi
jne 0x10031f36
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
call esi
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_DeleteDC]
push edi
call esi
mov ecx, dword [ebp]
test ecx, ecx
je 0x10031dd8
mov eax, dword [ecx]
push ecx
call dword [eax + 8]
and dword [ebp], edi
jmp 0x10031dd8
push dword [ebx + 0xe4c]
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
call esi
push edi
push dword [ebx + 0xe4c]
call esi
mov eax, dword [ebx + 0x3c]
xor edi, edi
dec eax
mov dword [esp + 0x64], edi
push 0xff00
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
call dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov esi, eax
lea eax, [esp + 0x64]
push esi
push eax
push dword [ebx + 0xe4c]
call dword [sym.imp.USER32.dll_FillRect]
push esi
call dword [sym.imp.GDI32.dll_DeleteObject]
test byte [ebx + 0x28], 4
push edi
pop eax
sete al
inc eax
push eax
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_SetBkMode]
push edi
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_SetTextAlign]
lea eax, [esp + 0x14]
mov byte [esp + 0x13], 0x20
push eax
push 1
lea eax, [esp + 0x1b]
push eax
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov ecx, dword [esp + 0x14]
lea eax, [ecx + 3]
cdq
and edx, 3
add eax, edx
sar eax, 2
test byte [ebx + 0x28], 4
mov dword [ebx + 0x44], eax
mov eax, dword [esp + 0x18]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
movss dword [ebx + 0xe48], xmm0
je 0x10032004
add ecx, 2
add eax, 2
mov dword [esp + 0x14], ecx
mov dword [esp + 0x18], eax
lea eax, [ecx + 3]
mov esi, edi
cdq
and edx, 3
push 0x20
lea ebp, [edx + eax]
lea eax, [ebx + 0x50]
sar ebp, 2
mov dword [esp + 0x20], eax
pop eax
mov byte [esp + 0x13], al
lea eax, [esp + 0x14]
push eax
push 1
lea eax, [esp + 0x1b]
push eax
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov edi, dword [ebx + 0x28]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
and edi, 4
je 0x10032057
add edx, 3
add ecx, 3
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], ecx
mov eax, dword [ebx + 0x44]
add eax, ebp
add eax, edx
cmp eax, dword [ebx + 0x3c]
jle 0x10032074
mov ebp, dword [ebx + 0x44]
lea eax, [ecx + 1]
lea eax, [esi + eax*2]
cmp eax, dword [ebx + 0x40]
jge 0x10032074
inc esi
add esi, ecx
mov dword [esp + 0x4c], ebp
lea eax, [edx + ebp]
mov dword [esp + 0x28], eax
lea eax, [esi + ecx]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0xe4c]
mov dword [esp + 0x50], esi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], esi
mov dword [esp + 0x44], ebp
mov dword [esp + 0x40], esi
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], esi
test edi, edi
je 0x100321ea
push 0
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
mov edi, dword [sym.imp.GDI32.dll_ExtTextOutA]
lea eax, [esp + 0x13]
push 0
push 1
push eax
lea eax, [esp + 0x2c]
inc ebp
push eax
push 4
push dword [esp + 0x54]
inc esi
push dword [esp + 0x5c]
mov dword [esp + 0x64], esi
push dword [ebx + 0xe4c]
call edi
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push dword [esp + 0x44]
push ebp
push dword [ebx + 0xe4c]
call edi
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push dword [esp + 0x44]
lea edi, [ebp + 1]
push edi
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push edi
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
push 0
push 1
lea eax, [esp + 0x1b]
inc esi
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push edi
push dword [ebx + 0xe4c]
mov edi, dword [sym.imp.GDI32.dll_ExtTextOutA]
call edi
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push ebp
push dword [ebx + 0xe4c]
call edi
push 0
lea eax, [esp + 0x17]
push 1
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push dword [esp + 0x4c]
push dword [ebx + 0xe4c]
call edi
mov esi, dword [esp + 0x48]
lea eax, [esp + 0x13]
push 0
push 1
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push dword [esp + 0x4c]
push dword [ebx + 0xe4c]
call edi
push 0xff
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_SetTextColor]
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push ebp
push dword [ebx + 0xe4c]
call edi
jmp 0x10032214
push 0xff
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
push 0
push 1
lea eax, [esp + 0x1b]
push eax
lea eax, [esp + 0x2c]
push eax
push 4
push esi
push ebp
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
mov esi, dword [esp + 0x4c]
mov eax, esi
sub eax, dword [ebx + 0x44]
movd xmm0, dword [ebx + 0x3c]
cvtdq2ps xmm0, xmm0
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edi, dword [esp + 0x50]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
lea eax, [esi + ecx]
divss xmm1, xmm0
movss dword [edx - 8], xmm1
add eax, dword [ebx + 0x44]
movd xmm0, dword [ebx + 0x3c]
cvtdq2ps xmm0, xmm0
movd xmm1, eax
cvtdq2ps xmm1, xmm1
mov eax, dword [esp + 0x18]
add eax, edi
divss xmm1, xmm0
movss dword [edx], xmm1
movd xmm0, dword [ebx + 0x40]
movd xmm1, edi
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [edx - 4], xmm1
movd xmm0, dword [ebx + 0x40]
movd xmm1, eax
cvtdq2ps xmm1, xmm1
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
movss dword [edx + 4], xmm1
add edx, 0x10
mov eax, dword [ebx + 0x44]
mov dword [esp + 0x1c], edx
lea ebp, [esi + eax*2]
mov eax, dword [esp + 0x38]
add ebp, ecx
mov esi, edi
inc eax
mov dword [esp + 0x38], eax
cmp eax, 0x100
jl 0x1003201d
push 0
lea ebp, [ebx + 0x30]
mov eax, dword [ebp]
lea edx, [esp + 0x60]
push 0
push edx
push 0
mov ecx, dword [eax]
push eax
call dword [ecx + 0x4c]
mov eax, dword [esp + 0x60]
xor esi, esi
mov dword [esp + 0x1c], eax
cmp dword [ebx + 0x40], esi
jle 0x10032346
xor edi, edi
mov ebp, eax
cmp dword [ebx + 0x3c], edi
jle 0x10032335
mov ecx, dword [ebx + 0x3c]
mov eax, dword [esp + 0x54]
imul ecx, esi
add ecx, edi
mov ecx, dword [eax + ecx*4]
mov eax, ecx
shr eax, 0x10
shr al, 4
movzx edx, al
mov al, 0xf
shr ecx, 8
shr cl, 4
sub al, cl
movzx eax, al
shl ax, 4
or ax, dx
shl ax, 4
or ax, dx
shl ax, 4
or ax, dx
inc edi
mov word [ebp], ax
lea ebp, [ebp + 2]
cmp edi, dword [ebx + 0x3c]
jl 0x100322e8
mov eax, dword [esp + 0x1c]
add eax, dword [esp + 0x5c]
inc esi
mov dword [esp + 0x1c], eax
cmp esi, dword [ebx + 0x40]
jl 0x100322df
lea ebp, [ebx + 0x30]
mov eax, dword [ebp]
push 0
push eax
mov ecx, dword [eax]
call dword [ecx + 0x50]
push dword [esp + 0x58]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
call esi
push dword [ebx + 0xe4c]
call dword [sym.imp.GDI32.dll_DeleteDC]
push dword [esp + 0x3c]
call esi
xor eax, eax
inc eax
mov byte [ebx + 0x2c], al
xor eax, eax
jmp 0x10031ddd