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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x9b8
mov eax, dword [0x5f3008]
xor eax, esp
mov dword [esp + 0x9b4], eax
mov edx, dword [ebp + 0x10]
mov ecx, 0x228
mov eax, dword [ebp + 8]
push esi
mov dword [esp + 0x68], eax
mov esi, edx
mov eax, dword [ebp + 0xc]
push edi
mov dword [esp + 0x74], eax
lea edi, [esp + 0x118]
mov eax, dword [ebp + 0x14]
rep movsd dword es:[edi], dword [esi]
movzx ecx, byte [edx + 0x808]
mov esi, dword [sym.imp.GDI32.dll_CreateSolidBrush]
mov dword [esp + 0xa0], eax
mov eax, dword [0x6167b8]
mov dword [esp + 0x9c], eax
movzx eax, byte [edx + 0x807]
shl ecx, 8
or ecx, eax
mov dword [esp + 0x14], edx
movzx eax, byte [edx + 0x806]
shl ecx, 8
or ecx, eax
mov dword [esp + 0x1c], 0
push ecx
call esi
mov edx, dword [esp + 0x14]
mov dword [esp + 0x88], eax
movzx ecx, byte [edx + 0x7ff]
movzx eax, byte [edx + 0x7fe]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x7fd]
shl ecx, 8
or ecx, eax
push ecx
call esi
mov edi, dword [esp + 0x9c]
movsd xmm2, qword [0x5ea528]
lea edx, [edi + 0x10]
mov dword [esp + 0x8c], eax
mov eax, dword [edi + 0x217f8]
add eax, dword [edi + 0x217e8]
mov dword [esp + 0x100], eax
mov eax, dword [edi + 0x217fc]
add eax, dword [edi + 0x217ec]
mov dword [esp + 0x104], eax
mov eax, dword [edi + 0x217f0]
sub eax, dword [edi + 0x21800]
mov dword [esp + 0x108], eax
mov eax, dword [edi + 0x217f4]
sub eax, dword [edi + 0x21804]
cmp dword [edx + 4], 0
mov dword [esp + 0x10c], eax
jne 0x51990d
cmp dword [edx + 0xc], 0
jne 0x51990d
cmp dword [edx], 0
jne 0x51990d
cmp dword [edx + 8], 0
jne 0x51990d
cmp dword [edi + 0x24], 0
jne 0x51982d
cmp dword [edi + 0x2c], 0
jne 0x51982d
cmp dword [edi + 0x20], 0
jne 0x51982d
cmp dword [edi + 0x28], 0
jne 0x51982d
movaps xmm0, xmmword [esp + 0x100]
movaps xmmword [esp + 0xe0], xmm0
jmp 0x519a06
cmp byte [ebp + 0x18], 0
movups xmm0, xmmword [edi + 0x20]
movups xmmword [esp + 0xe0], xmm0
jne 0x5198ac
mov eax, dword [edi]
mov eax, dword [eax + 0x28]
cmp word [eax + 0x5a], 1
je 0x5198ac
mov ecx, dword [edi + 0x217e4]
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea728]
cvttsd2si eax, xmm0
add dword [esp + 0xe0], eax
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea600]
cvttsd2si eax, xmm0
add dword [esp + 0xe8], eax
jmp 0x519a06
mov ecx, dword [edi + 0x217e4]
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea720]
cvttsd2si eax, xmm0
add dword [esp + 0xe0], eax
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea5f0]
cvttsd2si eax, xmm0
add dword [esp + 0xe8], eax
jmp 0x519a06
cmp byte [ebp + 0x18], 0
movups xmm0, xmmword [edx]
movups xmmword [esp + 0xe0], xmm0
jne 0x51997d
mov eax, dword [edi]
mov eax, dword [eax + 0x28]
cmp word [eax + 0x5a], 0
je 0x51997d
mov ecx, dword [edi + 0x217e4]
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea728]
cvttsd2si eax, xmm0
add dword [esp + 0xe4], eax
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea600]
jmp 0x5199ce
mov ecx, dword [edi + 0x217e4]
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea720]
cvttsd2si eax, xmm0
add dword [esp + 0xe4], eax
movsx eax, word [ecx + 4]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm2
addsd xmm0, qword [0x5ea578]
mulsd xmm0, qword [0x5ea5f0]
cvttsd2si eax, xmm0
add dword [esp + 0xec], eax
lea eax, [esp + 0x100]
push eax
push edx
call dword [sym.imp.USER32.dll_EqualRect]
test eax, eax
je 0x519a06
cmp byte [ebp + 0x18], 0
jne 0x519a06
mov eax, dword [edi + 0x14]
mov dword [esp + 0xe4], eax
mov eax, dword [edi + 0x1c]
mov dword [esp + 0xec], eax
lea eax, [esp + 0xe0]
push eax
call dword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
mov dword [esp + 0x78], eax
mov ecx, edi
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x78]
lea eax, [esp + 0x108]
push eax
call fcn.0051d530
mov edx, dword [esp + 0x14]
mov esi, dword [sym.imp.GDI32.dll_CreatePen]
mov dword [esp + 0x10], eax
movzx ecx, byte [edx + 0x811]
movzx eax, byte [edx + 0x810]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x80f]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
mov edx, dword [esp + 0x14]
mov dword [esp + 0x90], eax
movzx ecx, byte [edx + 0x814]
movzx eax, byte [edx + 0x813]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x812]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
mov edx, dword [esp + 0x14]
mov dword [esp + 0x7c], eax
movzx ecx, byte [edx + 0x817]
movzx eax, byte [edx + 0x816]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x815]
shl ecx, 8
or ecx, eax
push ecx
push 1
push 0
call esi
push dword [edi + 0x217f4]
mov dword [esp + 0x98], eax
push dword [edi + 0x217f0]
push dword [esp + 0x74]
call dword [sym.imp.GDI32.dll_CreateCompatibleBitmap]
mov esi, dword [sym.imp.GDI32.dll_SelectObject]
push eax
push dword [edi + 0xc]
mov dword [esp + 0xac], eax
call esi
push dword [esp + 0x8c]
push dword [edi + 0xc]
call esi
mov eax, dword [edi + 0x217f4]
sub eax, dword [edi + 0x217ec]
push 0xf00021
push eax
mov eax, dword [edi + 0x217f0]
sub eax, dword [edi + 0x217e8]
push eax
push 0
push 0
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_PatBlt]
push 5
call dword [sym.imp.GDI32.dll_GetStockObject]
push eax
push dword [edi + 0xc]
call esi
push 1
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetBkMode]
push 0x18
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x51a5e0
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x34], ecx
movups xmm0, xmmword [eax + 8]
mov edx, dword [esp + 0x74]
movaps xmmword [esp + 0x50], xmm0
mov eax, dword [esp + 0x5c]
sub eax, dword [edx + 4]
mov ecx, dword [edx]
inc eax
sub dword [esp + 0x50], ecx
mov dword [esp + 0x5c], eax
mov eax, 1
psrldq xmm0, 4
sub eax, ecx
mov ecx, dword [esp + 0x58]
movd esi, xmm0
add ecx, eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x28], ecx
sub esi, dword [edx + 4]
mov dword [esp + 0x20], esi
mov dword [esp + 0x54], esi
mov dword [esp + 0x58], ecx
cmp esi, eax
jge 0x51a5e0
mov edx, dword [esp + 0xe4]
cmp esi, edx
mov ecx, dword [esp + 0xe0]
mov edi, dword [esp + 0x28]
cmovge edx, esi
cmp dword [esp + 0x5c], eax
mov esi, eax
mov eax, ecx
mov dword [esp + 0xf4], edx
cmovle esi, dword [esp + 0x5c]
cmp dword [esp + 0x50], ecx
mov ecx, dword [esp + 0xe8]
cmovge eax, dword [esp + 0x50]
cmp edi, ecx
mov dword [esp + 0xfc], esi
cmovle ecx, edi
mov dword [esp + 0xf0], eax
mov edi, dword [esp + 0x9c]
mov dword [esp + 0xf8], ecx
cmp esi, edx
jl 0x51a59e
cmp ecx, eax
jl 0x51a59e
test edx, edx
jne 0x519c3a
test esi, esi
jne 0x519c3a
test eax, eax
jne 0x519c3a
test ecx, ecx
je 0x51a5ca
mov eax, dword [esp + 0x5c]
cmp eax, dword [esp + 0x104]
jl 0x51a5ca
cmp byte [ebp + 0x18], 0
jne 0x519c86
cmp dword [edi + 0x33c], 0
je 0x519c86
mov ecx, dword [esp + 0x20]
sub eax, ecx
mov edx, dword [esp + 0x50]
push 0x8800c6
push 0
push 0
push dword [edi + 0x338]
push eax
mov eax, dword [esp + 0x3c]
sub eax, edx
push eax
push ecx
push edx
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_BitBlt]
mov esi, dword [esp + 0x10]
mov eax, dword [esi + 0x28]
movups xmm0, xmmword [eax + 0x110]
mov eax, dword [edi + 0x217e4]
movups xmmword [eax + 0x28], xmm0
lea eax, [esp + 0xf0]
push eax
call dword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
mov ecx, dword [esp + 0x78]
push 3
push ecx
push eax
push ecx
mov dword [esp + 0x80], eax
call dword [sym.imp.GDI32.dll_CombineRgn]
push dword [esp + 0x70]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectClipRgn]
mov eax, dword [esi + 0x28]
cmp word [eax + 0x5a], 1
jne 0x519ce1
sub dword [esp + 0xf0], 0x64
sub esp, 0x10
lea eax, [esp + 0x128]
xorps xmm0, xmm0
movups xmmword [esp], xmm0
push 0
push 0
push dword [esp + 0xb8]
push ecx
push eax
push dword [edi + 0x21838]
lea eax, [esp + 0x118]
mov ecx, esi
push eax
push dword [esp + 0xa8]
push dword [esp + 0xc0]
push dword [esp + 0xa8]
push dword [edi + 0x217e4]
push dword [edi + 0xc]
call fcn.0052fa60
mov eax, dword [edi + 0xc]
cmp esi, dword [edi + 8]
jne 0x519d4d
mov ecx, dword [esp + 0x34]
push dword [esp + 0x94]
mov dword [edi + 0x217d8], ecx
jmp 0x519d51
push dword [esp + 0x7c]
push eax
mov eax, dword [sym.imp.GDI32.dll_SelectObject]
call eax
mov ecx, dword [esi + 0x28]
mov dword [esp + 0x98], eax
cmp byte [ecx + 0x546], 0
movups xmm0, xmmword [ecx + 0xa0]
movups xmmword [esp + 0xc0], xmm0
movups xmm0, xmmword [ecx + 0xb0]
movups xmmword [esp + 0xd0], xmm0
movsd xmm0, qword [0x5ea530]
je 0x519d9a
movaps xmm4, xmm0
movaps xmm5, xmm0
jmp 0x519dac
movsd xmm5, qword [esp + 0xd0]
movsd xmm4, qword [esp + 0xc0]
cmp byte [ecx + 0x547], 0
je 0x519dbd
movaps xmm6, xmm0
movaps xmm7, xmm0
jmp 0x519dcf
movsd xmm7, qword [esp + 0xd8]
movsd xmm6, qword [esp + 0xc8]
cmp byte [ecx + 0x62], 0
je 0x519e1a
mov eax, dword [esp + 0x34]
and eax, reloc.d2d1.dll_Ordinal_1
jns 0x519de7
dec eax
or eax, 0xfffffffe
add eax, 1
jne 0x519e1a
movzx eax, word [ecx + 0x5e]
cmp ax, 1
jne 0x519dfa
cmp word [ecx + 0x5c], 0
jmp 0x519e04
test ax, ax
jne 0x519e11
cmp word [ecx + 0x5c], 1
jne 0x519e11
movaps xmm0, xmm7
movaps xmm7, xmm6
movaps xmm6, xmm0
jmp 0x519e1a
movaps xmm0, xmm5
movaps xmm5, xmm4
movaps xmm4, xmm0
cmp word [ecx + 0x98], 0
mov eax, dword [edi + 0x217e4]
movsd xmm0, qword [eax + 0x28]
movsd xmm2, qword [eax + 0x38]
movaps xmm1, xmm0
mulsd xmm1, xmm4
xorps xmm4, xmm4
mulsd xmm1, xmm2
jne 0x519eea
movsd xmm3, qword [eax + 0x60]
divsd xmm1, xmm3
comisd xmm1, xmm4
movsd xmm4, qword [0x5ea530]
jb 0x519e63
addsd xmm1, xmm4
jmp 0x519e67
subsd xmm1, xmm4
mulsd xmm0, xmm5
xorps xmm5, xmm5
cvttsd2si edx, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x3c], edx
divsd xmm0, xmm3
comisd xmm0, xmm5
jb 0x519e8a
addsd xmm0, xmm4
jmp 0x519e8e
subsd xmm0, xmm4
movsd xmm2, qword [eax + 0x40]
cvttsd2si edx, xmm0
movsd xmm0, qword [eax + 0x30]
movaps xmm1, xmm0
mov dword [esp + 0x44], edx
mulsd xmm1, xmm6
mulsd xmm1, xmm2
divsd xmm1, xmm3
comisd xmm1, xmm5
jb 0x519ebb
addsd xmm1, xmm4
jmp 0x519ebf
subsd xmm1, xmm4
mulsd xmm0, xmm7
cvttsd2si eax, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], eax
divsd xmm0, xmm3
comisd xmm0, xmm5
jb 0x519f72
addsd xmm0, xmm4
jmp 0x519f76
comisd xmm1, xmm4
movsd xmm4, qword [0x5ea530]
jb 0x519efe
addsd xmm1, xmm4
jmp 0x519f02
subsd xmm1, xmm4
mulsd xmm0, xmm5
xorps xmm5, xmm5
cvttsd2si edx, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x3c], edx
comisd xmm0, xmm5
jb 0x519f21
addsd xmm0, xmm4
jmp 0x519f25
subsd xmm0, xmm4
movsd xmm2, qword [eax + 0x40]
cvttsd2si edx, xmm0
movsd xmm0, qword [eax + 0x30]
movaps xmm1, xmm0
mov dword [esp + 0x44], edx
mulsd xmm1, xmm6
mulsd xmm1, xmm2
comisd xmm1, xmm5
jb 0x519f4e
addsd xmm1, xmm4
jmp 0x519f52
subsd xmm1, xmm4
mulsd xmm0, xmm7
cvttsd2si eax, xmm1
mulsd xmm0, xmm2
mov dword [esp + 0x40], eax
mov dword [esp + 0x18], eax
comisd xmm0, xmm5
jb 0x519f72
addsd xmm0, xmm4
jmp 0x519f76
subsd xmm0, xmm4
cmp byte [ecx + 0x108], 0
cvttsd2si eax, xmm0
mov dword [esp + 0x48], eax
je 0x51a012
mov eax, dword [esp + 0x14]
movups xmm0, xmmword [ecx + 0xc0]
movzx eax, word [eax + 0x3e]
movups xmmword [esp + 0xb0], xmm0
cmp ax, 8
jne 0x519ff2
lea eax, [esp + 0x118]
push eax
push dword [esp + 0x38]
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0xc0]
push eax
movzx eax, word [ecx + 0x10a]
push eax
push dword [edi + 0xc]
mov ecx, edi
call fcn.0051d8d0
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x40]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], eax
jmp 0x51a01a
lea ecx, [esp + 0x118]
push ecx
push dword [esp + 0x38]
lea ecx, [esp + 0x44]
push ecx
lea ecx, [esp + 0x5c]
push ecx
lea ecx, [esp + 0xc0]
push ecx
jmp 0x519fcd
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x2f2], 0
je 0x51a03e
push dword [esp + 0x5c]
push ecx
push edx
push dword [esp + 0x5c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_Rectangle]
mov eax, dword [esp + 0x14]
cmp byte [ebp + 0x18], 0
je 0x51a189
cmp byte [eax + 0x780], 0
je 0x51a577
mov ecx, dword [esp + 0x10]
xor esi, esi
mov eax, dword [ecx + 0x28]
add eax, 0x120
cmp word [eax], si
je 0x51a072
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x51a068
push dword [edi + 0x2184c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
push 8
push dword [edi + 0xc]
mov dword [esp + 0x2c], eax
call dword [sym.imp.GDI32.dll_SetTextAlign]
movsd xmm0, qword [esp + 0x8a0]
xorps xmm4, xmm4
movsd xmm2, qword [0x5ea530]
mov ecx, dword [edi + 0x217e4]
addsd xmm0, xmm2
mov dword [esp + 0x1c], eax
movsd xmm1, qword [ecx + 0x60]
mulsd xmm0, qword [ecx + 0x28]
mulsd xmm0, qword [ecx + 0x38]
divsd xmm0, xmm1
comisd xmm0, xmm4
jb 0x51a0d1
addsd xmm0, xmm2
jmp 0x51a0d5
subsd xmm0, xmm2
cvttsd2si eax, xmm0
movsd xmm0, qword [esp + 0x8a8]
addsd xmm0, qword [0x5ea528]
mov dword [esp + 0x4c], eax
mulsd xmm0, qword [ecx + 0x30]
mulsd xmm0, qword [ecx + 0x40]
divsd xmm0, xmm1
comisd xmm0, xmm4
jb 0x51a108
addsd xmm0, xmm2
jmp 0x51a10c
subsd xmm0, xmm2
mov edx, dword [esp + 0x14]
movsd qword [esp + 0x80], xmm0
movzx ecx, byte [edx + 0x805]
movzx eax, byte [edx + 0x804]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
cvttsd2si eax, qword [esp + 0x8c]
push 0
push 2
sub ecx, eax
mov eax, dword [esp + 0x60]
add ecx, dword [esp + 0x34]
add eax, dword [esp + 0x50]
add eax, dword [esp + 0x64]
push ecx
push eax
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push dword [esp + 0x24]
jmp 0x51a561
mov ecx, dword [esi + 0x28]
lea eax, [esp + 0x68]
push eax
push dword [esp + 0x38]
call fcn.00537120
movsd xmm0, qword [esp + 0x8a8]
movzx ecx, ax
mov eax, dword [esi + 0x18]
movsd qword [esp + 0xb0], xmm0
movsd xmm0, qword [esp + 0x8a0]
mov dword [esp + 0x24], ecx
movsd qword [esp + 0xa8], xmm0
test eax, eax
je 0x51a344
mov edx, dword [esp + 0x14]
cmp byte [edx + 0x780], 0
je 0x51a344
test cx, cx
je 0x51a344
xor esi, esi
cmp word [eax], si
je 0x51a1fb
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x51a1f1
push dword [edi + 0x2184c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
cmp word [esp + 0x24], 1
mov ecx, dword [edi + 0xc]
mov dword [esp + 0x80], eax
jne 0x51a220
push 8
jmp 0x51a222
push 0xa
push ecx
call dword [sym.imp.GDI32.dll_SetTextAlign]
movsd xmm0, qword [esp + 0xa8]
xorps xmm4, xmm4
movsd xmm2, qword [0x5ea530]
addsd xmm0, xmm2
mov dword [esp + 0x1c], eax
mov eax, dword [edi + 0x217e4]
mulsd xmm0, qword [eax + 0x28]
movsd xmm1, qword [eax + 0x60]
mulsd xmm0, qword [eax + 0x38]
divsd xmm0, xmm1
comisd xmm0, xmm4
jb 0x51a26a
addsd xmm0, xmm2
jmp 0x51a26e
subsd xmm0, xmm2
cvttsd2si ecx, xmm0
movsd xmm0, qword [esp + 0xb0]
addsd xmm0, qword [0x5ea528]
mov dword [esp + 0x4c], ecx
mulsd xmm0, qword [eax + 0x30]
mulsd xmm0, qword [eax + 0x40]
divsd xmm0, xmm1
comisd xmm0, xmm4
jb 0x51a2a1
addsd xmm0, xmm2
jmp 0x51a2a5
subsd xmm0, xmm2
mov edx, dword [esp + 0x14]
cvttsd2si eax, xmm0
movzx ecx, byte [edx + 0x805]
shl ecx, 8
mov dword [esp + 0x38], eax
movzx eax, byte [edx + 0x804]
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov ecx, dword [esp + 0x10]
push 0
push esi
mov eax, dword [ecx + 0x18]
mov ecx, dword [edi + 0xc]
push eax
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x2c]
cmp word [esp + 0x30], 1
push 0
push 2
push eax
jne 0x51a30f
mov eax, dword [esp + 0x54]
add eax, dword [esp + 0x64]
add eax, dword [esp + 0x68]
jmp 0x51a31b
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x64]
sub eax, dword [esp + 0x5c]
push eax
push ecx
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push dword [esp + 0x80]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x1c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov esi, dword [esp + 0x10]
movsx eax, word [edi + 0x21bec]
mov ecx, dword [esp + 0x34]
sub ecx, eax
cmp ecx, 1
jle 0x51a577
mov eax, dword [edi + 0x48]
cmp byte [eax + 0x5499], 0
je 0x51a577
cmp word [esp + 0x68], 0
jle 0x51a577
mov eax, dword [esi + 0x28]
add eax, 0x120
je 0x51a577
xor esi, esi
cmp word [eax], si
je 0x51a39a
nop dword [eax + eax]
lea eax, [eax + 2]
inc esi
cmp word [eax], 0
jne 0x51a390
push dword [edi + 0x2184c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x4c], eax
movsx eax, word [esp + 0x68]
dec eax
mov dword [esp + 0x80], eax
cmp eax, 3
ja case.default.0x51a3bf
jmp dword [eax*4 + 0x51a734]
push 8
jmp 0x51a3d4
push 0xa
jmp 0x51a3d4
push 0
jmp 0x51a3d4
push 2
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov dword [esp + 0x1c], eax
movsd xmm1, qword [esp + 0xa8]
xorps xmm3, xmm3
movsd xmm2, qword [0x5ea530]
mov eax, dword [edi + 0x217e4]
addsd xmm1, xmm2
movsd xmm0, qword [eax + 0x60]
mulsd xmm1, qword [eax + 0x28]
mulsd xmm1, qword [eax + 0x38]
divsd xmm1, xmm0
comisd xmm1, xmm3
jb 0x51a41e
addsd xmm1, xmm2
jmp 0x51a422
subsd xmm1, xmm2
cvttsd2si ecx, xmm1
movsd xmm1, qword [esp + 0xb0]
addsd xmm1, qword [0x5ea528]
mov dword [esp + 0x24], ecx
mulsd xmm1, qword [eax + 0x30]
mulsd xmm1, qword [eax + 0x40]
divsd xmm1, xmm0
comisd xmm1, xmm3
jb 0x51a455
addsd xmm1, xmm2
jmp 0x51a459
subsd xmm1, xmm2
mov edx, dword [esp + 0x14]
cvttsd2si eax, xmm1
movzx ecx, byte [edx + 0x805]
shl ecx, 8
mov dword [esp + 0x38], eax
movzx eax, byte [edx + 0x804]
or ecx, eax
movzx eax, byte [edx + 0x803]
shl ecx, 8
or ecx, eax
push ecx
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x80]
cmp eax, 3
ja case.default.0x51a49e
jmp dword [eax*4 + 0x51a744]
mov eax, dword [esp + 0x10]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x2c]
push 0
push 2
push eax
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x54]
add eax, dword [esp + 0x68]
push eax
jmp 0x51a554
mov eax, dword [esp + 0x10]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x24]
sub eax, dword [esp + 0x44]
add eax, dword [esp + 0x2c]
jmp 0x51a542
mov eax, dword [esp + 0x10]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x54]
add eax, dword [esp + 0x68]
push 0
push 2
push eax
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x54]
add eax, dword [esp + 0x68]
push eax
jmp 0x51a554
mov eax, dword [esp + 0x10]
push 0
push esi
mov eax, dword [eax + 0x28]
add eax, 0x120
push eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x54]
add eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x34]
sub ecx, dword [esp + 0x30]
sub ecx, dword [esp + 0x50]
push 0
push 2
push eax
push ecx
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push dword [esp + 0x4c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
push dword [esp + 0x1c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SetTextAlign]
push dword [esp + 0x98]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectObject]
push 0
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_SelectClipRgn]
push dword [esp + 0x70]
call dword [sym.imp.GDI32.dll_DeleteObject]
jmp 0x51a5ca
mov dword [esp + 0xf4], 0
mov dword [esp + 0xfc], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xf8], 0
mov eax, dword [esp + 0x10]
inc dword [esp + 0x34]
mov eax, dword [eax]
mov dword [esp + 0x10], eax
test eax, eax
jne 0x519b63
push dword [esp + 0x88]
push dword [esp + 0x7c]
push dword [edi + 0xc]
call dword [sym.imp.GDI32.dll_FillRgn]
cmp dword [edi + 0x14], 0
jne 0x51a67b
cmp dword [edi + 0x1c], 0
jne 0x51a67b
cmp dword [edi + 0x10], 0
jne 0x51a67b
cmp dword [edi + 0x18], 0
jne 0x51a67b
cmp dword [edi + 0x24], 0
jne 0x51a660
cmp dword [edi + 0x2c], 0
jne 0x51a660
cmp dword [edi + 0x20], 0
jne 0x51a660
cmp dword [edi + 0x28], 0
jne 0x51a660
mov edx, dword [esp + 0x104]
mov ecx, dword [esp + 0x100]
mov eax, dword [esp + 0x10c]
push 0xcc0020
push edx
push ecx
push dword [edi + 0xc]
sub eax, edx
push eax
mov eax, dword [esp + 0x11c]
sub eax, ecx
push eax
push edx
push ecx
jmp 0x51a699
mov ecx, dword [edi + 0x24]
mov edx, dword [edi + 0x20]
mov eax, dword [edi + 0x2c]
push 0xcc0020
push ecx
push edx
push dword [edi + 0xc]
sub eax, ecx
push eax
mov eax, dword [edi + 0x28]
jmp 0x51a694
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 0x1c]
push 0xcc0020
push ecx
push edx
push dword [edi + 0xc]
sub eax, ecx
push eax
mov eax, dword [edi + 0x18]
sub eax, edx
push eax
push ecx
push edx
push dword [esp + 0x8c]
call dword [sym.imp.GDI32.dll_BitBlt]
push dword [esp + 0xa4]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [edi + 0x14], 0
mov dword [edi + 0x1c], 0
mov dword [edi + 0x10], 0
mov dword [edi + 0x18], 0
mov dword [edi + 0x24], 0
mov dword [edi + 0x2c], 0
mov dword [edi + 0x20], 0
mov dword [edi + 0x28], 0
call esi
push dword [esp + 0x78]
call esi
push dword [esp + 0x88]
call esi
push dword [esp + 0x8c]
call esi
push dword [esp + 0x90]
call esi
push dword [esp + 0x7c]
call esi
push dword [esp + 0x94]
call esi
mov ecx, dword [esp + 0x9bc]
pop edi
pop esi
xor ecx, esp
call fcn.0056060a
mov esp, ebp
pop ebp
ret 0x14