Function at 0x402560
Capabilities:
Access peb ldr_data
Get graphical window text
Get kernel32 base address
Get number of processors
Get process heap flags
Get process heap force flags

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff8
pxor xmm0, xmm0
xor edx, edx
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
lea eax, [ebp - 0x498]
push ebx
push ecx
sub esp, 0x558
mov word [ebp - 0x458], dx
mov edx, dword [0x40d210]
movd xmm1, dword [0x40c024]
movups xmmword [ebp - 0x488], xmm0
movd xmm2, dword [0x40d20c]
mov dword [ebp - 0x48c], edx
mov edx, dword [0x40c020]
punpckldq xmm1, xmm2
movups xmmword [ebp - 0x478], xmm0
mov dword [ebp - 0x498], 0x42
mov dword [ebp - 0x476], edx
mov dword [ebp - 0x484], 0x104
mov dword [ebp - 0x47c], 0xffff0001
movups xmmword [ebp - 0x468], xmm0
movq qword [ebp - 0x494], xmm1
mov dword [esp], eax
call dword [sym.imp.comdlg32.dll_PrintDlgW]
sub esp, 4
test eax, eax
jne 0x40260d
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
movq xmm3, qword [ebp - 0x490]
movq qword [0x40d20c], xmm3
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_SetMapMode]
mov dword [ebp - 0x4e8], 0x14
mov dword [ebp - 0x4e4], 0x40c6b8
sub esp, 8
mov dword [ebp - 0x4e0], 0
mov dword [ebp - 0x4dc], 0
mov dword [ebp - 0x4d8], 0
test byte [ebp - 0x484], 0x20
je 0x4026ff
mov edx, dword [ebp - 0x494]
pxor xmm0, xmm0
lea eax, [ebp - 0x3f8]
mov dword [ebp - 0x3f8], 0x58
movups xmmword [ebp - 0x3e0], xmm0
movups xmmword [ebp - 0x3d0], xmm0
movups xmmword [ebp - 0x3c0], xmm0
mov dword [ebp - 0x3c4], 0x806
mov dword [ebp - 0x3f4], edx
mov dword [ebp - 0x3dc], str.output.prn
mov dword [ebp - 0x3d8], 0x104
mov dword [ebp - 0x3bc], 0x40a104
movups xmmword [ebp - 0x3f0], xmm0
movups xmmword [ebp - 0x3b0], xmm0
mov dword [esp], eax
call dword [sym.imp.comdlg32.dll_GetSaveFileNameW]
sub esp, 4
test eax, eax
je 0x402601
mov dword [ebp - 0x4e0], str.output.prn
mov eax, dword [0x40c02c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetWindowTextLengthW]
lea ebx, [eax + 1]
sub esp, 4
lea edx, [ebx + ebx]
mov dword [esp + 4], 0
mov dword [esp + 8], edx
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [sym.imp.kernel32.dll_HeapAlloc]
mov dword [ebp - 0x530], eax
call eax
mov dword [ebp - 0x534], eax
sub esp, 0xc
test eax, eax
je 0x4034d3
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov eax, dword [0x40c02c]
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetWindowTextW]
mov dword [ebp - 0x50c], eax
sub esp, 0xc
lea eax, [ebp - 0x4e8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_StartDocW]
sub esp, 8
test eax, eax
jg 0x4027d6
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
mov ecx, dword [ebp - 0x534]
sub esp, 4
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
mov dword [esp + 4], 0x5a
mov eax, dword [ebp - 0x488]
mov ebx, dword [sym.imp.gdi32.dll_GetDeviceCaps]
mov dword [esp], eax
call ebx
mov esi, dword [sym.imp.kernel32.dll_MulDiv]
sub esp, 8
mov dword [esp + 8], 0x9ec
mov dword [esp + 4], eax
mov eax, dword [0x40cd90]
mov dword [esp], eax
call esi
sub esp, 0xc
mov edi, eax
mov dword [esp + 4], 0x71
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
sub edi, eax
mov dword [ebp - 0x4f4], edi
mov dword [esp + 4], 0x6f
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov edi, eax
mov dword [esp + 4], 0x5a
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov dword [esp + 8], 0x9ec
mov dword [esp + 4], eax
mov eax, dword [0x40cd94]
mov dword [esp], eax
call esi
sub esp, 0xc
sub edi, eax
mov dword [ebp - 0x4ec], edi
mov dword [esp + 4], 0x58
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov dword [esp + 8], 0x9ec
mov dword [esp + 4], eax
mov eax, dword [0x40cd98]
mov dword [esp], eax
call esi
sub esp, 0xc
mov edi, eax
mov dword [esp + 4], 0x70
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
sub edi, eax
mov dword [ebp - 0x4f8], edi
mov dword [esp + 4], 0x6e
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov edi, eax
mov dword [esp + 4], 0x58
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov dword [esp + 8], 0x9ec
mov dword [esp + 4], eax
mov eax, dword [0x40cd9c]
mov dword [esp], eax
call esi
movdqu xmm4, xmmword [0x40c040]
movdqu xmm5, xmmword [0x40c050]
movdqu xmm6, xmmword [0x40c060]
sub edi, eax
sub esp, 0xc
movdqu xmm7, xmmword [0x40c070]
movdqu xmm2, xmmword [0x40c080]
mov eax, dword [0x40c024]
movups xmmword [ebp - 0x454], xmm4
movdqu xmm3, xmmword [0x40c08c]
movups xmmword [ebp - 0x444], xmm5
movups xmmword [ebp - 0x414], xmm2
movups xmmword [ebp - 0x434], xmm6
movups xmmword [ebp - 0x424], xmm7
movups xmmword [ebp - 0x408], xmm3
mov dword [ebp - 0x4f0], edi
mov dword [esp], eax
call dword [sym.imp.user32.dll_GetDpiForWindow]
sub esp, 4
mov edi, eax
mov dword [esp + 4], 0x5a
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x454]
mov dword [esp], eax
call esi
sub dword [ebp - 0x444], 0x64
mov dword [ebp - 0x454], eax
sub esp, 0xc
lea eax, [ebp - 0x454]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_CreateFontIndirectW]
mov ebx, dword [sym.imp.gdi32.dll_SelectObject]
sub esp, 4
mov edi, eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
cmp word [ebp - 0x478], 0
mov dword [ebp - 0x544], eax
je 0x4030bc
mov ecx, dword [ebp - 0x534]
mov eax, dword [ebp - 0x50c]
mov esi, 1
mov dword [ebp - 0x538], edi
mov dword [ebp - 0x53c], ebx
lea eax, [ecx + eax*2]
mov ecx, esi
mov dword [ebp - 0x50c], eax
xor eax, eax
mov dword [ebp - 0x524], 0
mov edi, dword [ebp - 0x534]
mov dword [ebp - 0x52c], 1
mov dword [ebp - 0x540], ecx
nop
test byte [ebp - 0x484], 2
je 0x403258
movzx edx, word [ebp - 0x47e]
mov ecx, dword [ebp - 0x52c]
cmp edx, ecx
jl 0x4034c0
movzx eax, word [ebp - 0x480]
cmp eax, ecx
setle al
movzx eax, al
mov dword [ebp - 0x51c], eax
mov eax, dword [ebp - 0x488]
mov dword [ebp - 0x520], eax
movzx eax, word [0x40cfa8]
test ax, ax
je 0x4033a7
mov edx, 0x40cfaa
xor ecx, ecx
xor ebx, ebx
jmp 0x402ad3
cmp ax, 0x26
je 0x402cf0
mov esi, ecx
xor ebx, ebx
add ecx, 0xb
cmp ax, 0x70
cmovne ecx, esi
movzx eax, word [edx]
add edx, 2
test ax, ax
je 0x402aef
test ebx, ebx
jne 0x402ab0
cmp ax, 0x26
je 0x402d00
movzx eax, word [edx]
add edx, 2
add ecx, 1
test ax, ax
jne 0x402ad3
lea edx, [ecx + ecx + 2]
mov dword [esp + 8], edx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov eax, dword [ebp - 0x530]
call eax
mov dword [ebp - 0x514], eax
sub esp, 0xc
test eax, eax
je 0x4030b0
movzx eax, word [0x40cfa8]
test ax, ax
je 0x4033b1
xor ecx, ecx
mov dword [ebp - 0x510], edi
mov ebx, 0x40cfaa
xor esi, esi
xor edx, edx
mov edi, ecx
jmp 0x402b71
cmp ax, 0x26
je 0x402d10
xor edi, edi
cmp ax, 0x70
je 0x403228
movzx eax, word [ebx]
add ebx, 2
test ax, ax
je 0x402b9c
mov ecx, dword [ebp - 0x514]
add ecx, edx
test edi, edi
jne 0x402b50
cmp ax, 0x26
je 0x402d28
add ebx, 2
mov word [ecx], ax
add esi, 1
movzx eax, word [ebx - 2]
lea edx, [esi + esi]
test ax, ax
jne 0x402b71
mov eax, dword [ebp - 0x514]
mov edi, dword [ebp - 0x510]
add edx, eax
xor eax, eax
mov word [edx], ax
mov eax, dword [ebp - 0x51c]
test eax, eax
je 0x402bd3
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_StartPage]
sub esp, 4
test eax, eax
jle 0x4033bc
lea eax, [ebp - 0x4d4]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextMetricsW]
mov ebx, dword [ebp - 0x4f4]
sub esp, 8
cmp word [0x40c4b0], 0
jne 0x4032b8
mov eax, dword [ebp - 0x4ec]
mov dword [ebp - 0x518], eax
mov eax, dword [ebp - 0x514]
cmp word [eax], 0
jne 0x402d38
mov esi, dword [ebp - 0x524]
lea esi, [esi]
mov eax, dword [0x40c09c]
test esi, esi
je 0x402e50
mov edx, esi
test eax, eax
jne 0x402d90
mov eax, dword [ebp - 0x51c]
mov dword [ebp - 0x500], edx
test eax, eax
jne 0x402f96
mov eax, dword [ebp - 0x50c]
mov esi, dword [ebp - 0x518]
cmp edi, eax
setb al
mov edx, eax
cmp ebx, esi
jge 0x403020
test al, al
je 0x403020
mov ecx, dword [ebp - 0x4c4]
add ecx, dword [ebp - 0x4d4]
jmp 0x402cb0
cmp ax, 0xa
lea edx, [ebx + ecx]
mov eax, dword [ebp - 0x50c]
cmove ebx, edx
add edi, 2
cmp edi, eax
setb dl
cmp ebx, esi
jge 0x403020
test dl, dl
je 0x403020
movzx eax, word [edi]
cmp ax, 0xa
je 0x402c88
cmp ax, 0xd
je 0x402c88
xor esi, esi
lea esi, [esi]
mov eax, dword [ebp - 0x50c]
cmp edi, eax
mov eax, dword [ebp - 0x518]
setb dl
cmp ebx, eax
jge 0x402ce5
test dl, dl
jne 0x402c28
mov dword [ebp - 0x524], esi
jmp 0x40302a
add ecx, 1
xor ebx, ebx
jmp 0x402ac8
mov ebx, 1
jmp 0x402ac8
add esi, 1
mov eax, 0x26
xor edi, edi
mov word [ecx], ax
lea edx, [esi + esi]
jmp 0x402b66
mov edi, 1
jmp 0x402b66
add eax, 2
cmp word [eax], 0
jne 0x402d38
lea edx, [ebp - 0x500]
mov dword [esp + 0xc], edx
mov ecx, dword [ebp - 0x514]
sub eax, ecx
mov dword [esp + 4], ecx
sar eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32W]
mov eax, dword [ebp - 0x4d4]
sub esp, 0x10
add eax, eax
sub dword [ebp - 0x518], eax
jmp 0x402c1f
mov esi, 0x1f4
lea esi, cs:[esi]
nop
lea eax, [ebp - 0x508]
mov dword [esp + 0x14], 0
lea ecx, [ebp - 0x3f8]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x500]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x4f0]
sub eax, dword [ebp - 0x4f8]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], esi
mov eax, dword [ebp - 0x520]
mov dword [ebp - 0x524], ecx
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextExtentExPointW]
mov eax, dword [ebp - 0x500]
mov ecx, dword [ebp - 0x524]
sub esp, 0x1c
cmp eax, esi
mov dword [ebp - 0x510], eax
jae 0x402e05
lea edx, [ecx + eax*2]
cmp word [edx], 0x20
jne 0x403270
mov eax, dword [ebp - 0x51c]
test eax, eax
jne 0x403210
mov eax, dword [ebp - 0x510]
sub esi, eax
je 0x402c53
lea eax, [ecx + eax*2]
mov edx, eax
lea eax, [esi + esi]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp], ecx
call sym._memcpy
mov eax, dword [ebp - 0x4c4]
add eax, dword [ebp - 0x4d4]
add ebx, eax
jmp 0x402cc8
mov edx, dword [ebp - 0x50c]
cmp edi, edx
jae 0x403420
test eax, eax
je 0x402e8e
jmp 0x4034ed
cmp esi, 0x1f3
ja 0x402e83
mov word [ebp + esi*2 - 0x3f8], ax
add esi, 1
add edi, 2
cmp edi, edx
jae 0x402f80
movzx eax, word [edi]
cmp ax, 0xa
je 0x402f80
cmp ax, 0xd
je 0x402f80
cmp ax, 9
jne 0x402e70
cmp esi, 0x1f3
ja 0x402e83
lea ecx, [esi + esi]
mov eax, 0x20
mov word [ebp + ecx - 0x3f8], ax
je 0x403010
mov word [ebp + ecx - 0x3f6], 0x20
lea eax, [esi + 2]
cmp esi, 0x1f2
je 0x403010
add eax, eax
mov ecx, 0x20
mov word [ebp + eax - 0x3f8], cx
cmp esi, 0x1f1
je 0x403010
mov ecx, 0x20
mov word [ebp + eax - 0x3f6], cx
cmp esi, 0x1f0
je 0x403010
mov ecx, 0x20
mov word [ebp + eax - 0x3f4], cx
cmp esi, 0x1ef
je 0x403010
mov ecx, 0x20
mov word [ebp + eax - 0x3f2], cx
cmp esi, 0x1ee
je 0x403010
mov ecx, 0x20
mov word [ebp + eax - 0x3f0], cx
cmp esi, 0x1ed
je 0x403010
mov ecx, 0x20
add edi, 2
add esi, 8
mov word [ebp + eax - 0x3ee], cx
cmp edi, edx
jb 0x402e8e
lea esi, [esi]
mov eax, dword [ebp - 0x51c]
mov edx, esi
mov dword [ebp - 0x500], edx
test eax, eax
je 0x402c53
mov dword [ebp - 0x524], esi
lea ecx, [ebp - 0x3f8]
lea eax, [ebp - 0x4f8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], 0
mov dword [ebp - 0x528], ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 4
mov dword [esp + 8], ebx
mov eax, dword [ebp - 0x4f8]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_ExtTextOutW]
mov eax, dword [ebp - 0x500]
mov esi, dword [ebp - 0x524]
mov ecx, dword [ebp - 0x528]
sub esp, 0x20
mov dword [ebp - 0x510], eax
jmp 0x402e13
mov esi, 0x1f4
jmp 0x402e83
mov dword [ebp - 0x524], 0
mov eax, dword [ebp - 0x514]
cmp word [eax], 0
jne 0x403100
mov eax, dword [ebp - 0x51c]
test eax, eax
jne 0x4031e9
mov ecx, dword [ebp - 0x514]
mov byte [ebp - 0x510], dl
mov eax, dword fs:[0x18]
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
movzx edx, byte [ebp - 0x510]
mov eax, 1
add dword [ebp - 0x52c], 1
sub esp, 0xc
test dl, dl
jne 0x402a50
mov ecx, dword [ebp - 0x540]
movzx edx, word [ebp - 0x478]
add ecx, 1
mov eax, 1
cmp edx, ecx
jge 0x402a2e
mov edi, dword [ebp - 0x538]
mov ebx, dword [ebp - 0x53c]
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_EndDoc]
mov eax, dword [ebp - 0x544]
sub esp, 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call ebx
sub esp, 8
mov dword [esp], edi
call dword [sym.imp.gdi32.dll_DeleteObject]
sub esp, 4
jmp 0x40278e
add eax, 2
cmp word [eax], 0
jne 0x403100
lea ecx, [ebp - 0x500]
mov byte [ebp - 0x510], dl
mov dword [esp + 0xc], ecx
mov ebx, dword [ebp - 0x514]
sub eax, ebx
mov dword [esp + 4], ebx
sar eax, 1
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32W]
mov edx, dword [ebp - 0x51c]
sub esp, 0x10
test edx, edx
movzx edx, byte [ebp - 0x510]
je 0x403048
cmp word [ebx], 0
mov eax, ebx
je 0x4034b9
nop
add eax, 2
cmp word [eax], 0
jne 0x403160
mov ecx, dword [ebp - 0x514]
sub eax, ecx
sar eax, 1
mov byte [ebp - 0x510], dl
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], eax
mov eax, dword [ebp - 0x514]
mov dword [esp + 0xc], 4
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x4f8]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x4ec]
sub eax, dword [ebp - 0x4fc]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x4f0]
add eax, dword [ebp - 0x4f8]
sub eax, dword [ebp - 0x500]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov dword [esp + 4], ecx
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_ExtTextOutW]
movzx edx, byte [ebp - 0x510]
sub esp, 0x20
mov eax, dword [ebp - 0x520]
mov byte [ebp - 0x510], dl
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_EndPage]
movzx edx, byte [ebp - 0x510]
sub esp, 4
jmp 0x403048
mov dword [ebp - 0x524], esi
mov esi, dword [ebp - 0x510]
jmp 0x402fa2
mov eax, dword [ebp - 0x52c]
mov dword [esp + 8], 0x40a0c0
mov dword [esp + 4], 0xb
mov dword [esp + 0xc], eax
mov dword [esp], ecx
call dword [sym.imp.shlwapi.dll_wnsprintfW]
add esi, eax
lea edx, [esi + esi]
jmp 0x402b66
mov dword [ebp - 0x51c], 1
jmp 0x402a87
test eax, eax
je 0x403497
mov edx, eax
jmp 0x403289
sub eax, 1
je 0x40339c
cmp word [ecx + eax*2], 0x20
jne 0x403280
mov dword [ebp - 0x510], edx
test eax, eax
jle 0x402e05
add eax, 1
mov dword [ebp - 0x500], eax
mov dword [ebp - 0x510], eax
jmp 0x402e05
mov eax, 0x40c4b0
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x4032c0
sub eax, 0x40c4b0
lea edx, [ebp - 0x500]
mov dword [esp + 4], 0x40c4b0
sar eax, 1
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32W]
mov esi, dword [ebp - 0x51c]
sub esp, 0x10
test esi, esi
je 0x403391
cmp word [0x40c4b0], 0
je 0x4034b2
mov eax, 0x40c4b0
lea esi, [esi]
add eax, 2
cmp word [eax], 0
jne 0x403320
sub eax, 0x40c4b0
sar eax, 1
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x4f8]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], 0x40c4b0
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 4
mov eax, dword [ebp - 0x4f4]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x4f0]
add eax, dword [ebp - 0x4f8]
sub eax, dword [ebp - 0x500]
mov edx, eax
shr edx, 0x1f
add edx, eax
sar edx, 1
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x520]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_ExtTextOutW]
sub esp, 0x20
add ebx, dword [ebp - 0x4d4]
jmp 0x402c03
mov dword [ebp - 0x510], edx
jmp 0x402e05
mov edx, 2
jmp 0x402af3
mov edx, dword [ebp - 0x514]
jmp 0x402baa
mov edi, dword [ebp - 0x538]
mov ebx, dword [ebp - 0x53c]
mov dword [esp + 0xc], 0x30
mov dword [esp + 8], str.Print_Error
mov dword [esp + 4], str.StartPage_failed
mov eax, dword [0x40c024]
mov dword [esp], eax
call dword [sym.imp.user32.dll_MessageBoxW]
mov ecx, dword [ebp - 0x514]
sub esp, 0x10
mov dword [esp + 8], ecx
mov dword [esp + 4], 0
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0x30]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_HeapFree]
sub esp, 0xc
jmp 0x4030bc
xor edx, edx
test eax, eax
je 0x402c3f
lea eax, [ebp - 0x508]
mov dword [esp + 0x14], 0
lea ecx, [ebp - 0x3f8]
mov dword [esp + 0x18], eax
lea eax, [ebp - 0x500]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x4f0]
sub eax, dword [ebp - 0x4f8]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x520]
mov dword [ebp - 0x524], ecx
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_GetTextExtentExPointW]
mov eax, dword [ebp - 0x500]
mov ecx, dword [ebp - 0x524]
sub esp, 0x1c
mov dword [ebp - 0x510], eax
jmp 0x402e05
mov eax, dword [ebp - 0x51c]
test eax, eax
je 0x402e26
mov dword [ebp - 0x524], esi
xor esi, esi
jmp 0x402fa2
xor eax, eax
jmp 0x403330
xor eax, eax
jmp 0x403173
mov ecx, dword [ebp - 0x540]
test eax, eax
jne 0x403099
jmp 0x4030b0
mov eax, dword [ebp - 0x488]
mov dword [esp], eax
call dword [sym.imp.gdi32.dll_DeleteDC]
push eax
call sym._ShowLastError
jmp 0x402601
movzx eax, word [edi]
cmp ax, 0xd
je 0x402d90
cmp ax, 0xa
je 0x402d90
cmp ax, 9
je 0x403533
mov word [ebp + esi*2 - 0x3f8], ax
add esi, 1
cmp esi, 0x1f4
je 0x402d82
mov eax, dword [ebp - 0x50c]
add edi, 2
cmp edi, eax
jb 0x4034ed
jmp 0x402d90
lea edx, [esi + esi]
mov word [ebp + edx - 0x3f8], 0x20
cmp esi, 0x1f3
je 0x402d82
mov word [ebp + edx - 0x3f6], 0x20
lea eax, [esi + 2]
cmp esi, 0x1f2
je 0x402d82
add eax, eax
mov word [ebp + eax - 0x3f8], 0x20
cmp esi, 0x1f1
je 0x402d82
mov word [ebp + eax - 0x3f6], 0x20
cmp esi, 0x1f0
je 0x402d82
mov word [ebp + eax - 0x3f4], 0x20
cmp esi, 0x1ef
je 0x402d82
mov word [ebp + eax - 0x3f2], 0x20
cmp esi, 0x1ee
je 0x402d82
mov word [ebp + eax - 0x3f0], 0x20
cmp esi, 0x1ed
je 0x402d82
mov word [ebp + eax - 0x3ee], 0x20
add esi, 8
jmp 0x403515