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

Disassembly:
push 0xffffffffffffffff
push 0x52c44c
mov eax, dword fs:[0]
push eax
sub esp, 0x234
mov eax, dword [0x568fd0]
xor eax, esp
mov dword [esp + 0x230], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x568fd0]
xor eax, esp
push eax
lea eax, [esp + 0x248]
mov dword fs:[0], eax
mov esi, ecx
push esi
call dword [sym.imp.COMDLG32.dll_PrintDlgW]
test eax, eax
je 0x40b6b0
mov ecx, dword [esi + 0x10]
mov eax, dword [0x56e7dc]
mov edi, dword [sym.imp.GDI32.dll_GetDeviceCaps]
push 0x58
push ecx
mov dword [esp + 0x20], eax
call edi
mov edx, dword [esi + 0x10]
push 0x5a
push edx
call edi
mov eax, dword [esi + 0x10]
push 0x6e
push eax
call edi
mov ecx, dword [esi + 0x10]
push 0x6f
push ecx
mov dword [esp + 0x78], eax
call edi
mov edx, dword [esi + 0x10]
push 0x70
push edx
mov dword [esp + 0x7c], eax
call edi
mov dword [esp + 0x2c], eax
mov eax, dword [esi + 0x10]
push 0x71
push eax
call edi
mov ecx, dword [esi + 0x10]
push 8
push ecx
mov dword [esp + 0x38], eax
call edi
mov edx, dword [esp + 0x70]
sub edx, dword [esp + 0x2c]
push 0xa
sub edx, eax
mov eax, dword [esi + 0x10]
push eax
mov dword [esp + 0x3c], edx
call edi
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x74]
mov edi, dword [sym.imp.GDI32.dll_DPtoLP]
sub ecx, edx
sub ecx, eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x80], eax
push 2
lea eax, [esp + 0x84]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x90], ecx
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x38]
push eax
push ecx
mov dword [esp + 0x94], edx
call edi
mov eax, dword [esi + 0x10]
push 2
lea edx, [esp + 0x30]
push edx
push eax
call edi
mov edx, dword [esi + 0x10]
push 1
lea ecx, [esp + 0x74]
push ecx
push edx
call edi
push 0x537d4c
push 0
push 0
push 0
push 0
push 0
push 0
push 0
mov ebx, dword [sym.imp.GDI32.dll_CreateFontW]
push 0
push 0x2bc
push 0
push 0
push 0
push 0x43
call ebx
mov ebp, dword [sym.imp.GDI32.dll_SelectObject]
push eax
mov dword [esp + 0x80], eax
mov eax, dword [esi + 0x10]
push eax
call ebp
mov edx, dword [esi + 0x10]
mov edi, dword [sym.imp.GDI32.dll_GetTextMetricsW]
lea ecx, [esp + 0xe8]
push ecx
push edx
call edi
push str.Arial
mov eax, dword [esp + 0xec]
mov ecx, dword [esp + 0xfc]
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0
push 0x190
push 0
push 0
push 0
add ecx, eax
push 0x4b
mov dword [esp + 0x74], ecx
call ebx
mov edx, dword [esi + 0x10]
push eax
push edx
mov dword [esp + 0x80], eax
call ebp
mov ecx, dword [esi + 0x10]
lea eax, [esp + 0xe8]
push eax
push ecx
call edi
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xf8]
add eax, edx
mov edx, dword [esi + 0x10]
lea ecx, [esp + 0xe8]
push ecx
push edx
mov dword [esp + 0x2c], eax
call edi
mov eax, dword [esp + 0xe8]
mov ecx, dword [esp + 0xf8]
lea edi, [ecx + eax]
mov eax, edi
cdq
sub eax, edx
sar eax, 1
xor ebx, ebx
xor edx, edx
add edi, eax
mov dword [esp + 0x174], 7
mov dword [esp + 0x170], ebx
mov word [esp + 0x160], dx
lea eax, [esp + 0x15c]
mov dword [esp + 0x250], ebx
mov edx, dword [esi + 0x48]
push eax
call fcn.004141f0
add esp, 4
mov dword [esp + 0xd4], 0x14
mov dword [esp + 0xe4], ebx
mov ebp, 8
cmp dword [esp + 0x174], ebp
jb 0x40b657
mov ecx, dword [esp + 0x160]
mov dword [esp + 0xd8], ecx
jmp 0x40b665
lea edx, [esp + 0x160]
mov dword [esp + 0xd8], edx
mov ecx, dword [esi + 0x10]
lea eax, [esp + 0xd4]
push eax
push ecx
mov dword [esp + 0xe4], ebx
mov dword [esp + 0xe8], ebx
call dword [sym.imp.GDI32.dll_StartDocW]
push ebx
push ebx
test eax, eax
jge 0x40b6b7
push str.Can_not_start_printer_document.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxW]
cmp dword [esp + 0x174], ebp
jb 0x40b6b0
mov edx, dword [esp + 0x160]
push edx
call fcn.00501b8f
add esp, 4
xor eax, eax
jmp 0x40c410
mov eax, dword [esi + 0x44]
mov ecx, dword [eax + 0x14]
mov edx, dword [eax + 0x18]
push 0x7d6
push ecx
mov dword [esp + 0x2c], ebx
call edx
mov dword [esp + 0x30], eax
mov ebp, eax
mov eax, dword [esi + 0x14]
add esp, 0x10
test eax, 0x400
jne 0x40b715
test al, 1
je 0x40b715
mov eax, dword [esi + 0x4c]
mov ecx, dword [esi + 0x50]
cmp eax, ecx
jbe 0x40b6f9
mov edx, ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], eax
jmp 0x40b705
mov edx, eax
mov dword [esp + 0x1c], eax
mov eax, ecx
mov dword [esp + 0x20], ecx
cmp edx, ebx
jge 0x40b70d
mov dword [esp + 0x1c], ebx
cmp eax, ebp
jle 0x40b715
mov dword [esp + 0x20], ebp
mov eax, dword [esi + 0x10]
mov edx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x80]
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x84]
sub eax, dword [esp + 0x30]
sub ebp, edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x70]
add dword [esp + 0x4c], edi
mov ecx, eax
sub ecx, dword [esp + 0x88]
sub eax, dword [esp + 0x34]
sub ecx, edx
mov edx, dword [esp + 0x74]
sub eax, dword [esp + 0x2c]
mov ebx, edx
sub ebx, dword [esp + 0x8c]
sub edx, dword [esp + 0x38]
sub ebx, dword [esp + 0x30]
sub edx, dword [esp + 0x30]
sub ecx, edi
dec eax
sub ebx, edi
add ebp, edi
mov dword [esp + 0x60], eax
mov dword [esp + 0x50], ecx
dec edx
mov eax, 7
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x64], edx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x1c8], eax
mov dword [esp + 0x1c4], edi
mov word [esp + 0x1b4], cx
xor edx, edx
mov dword [esp + 0x200], eax
mov dword [esp + 0x1fc], edi
mov word [esp + 0x1ec], dx
mov dword [esp + 0x190], eax
mov dword [esp + 0x18c], edi
mov word [esp + 0x17c], cx
mov dword [esp + 0x1e4], eax
mov dword [esp + 0x1e0], edi
mov word [esp + 0x1d0], dx
mov dword [esp + 0x158], eax
mov dword [esp + 0x154], edi
mov word [esp + 0x144], cx
mov dword [esp + 0x1ac], eax
mov dword [esp + 0x1a8], edi
mov word [esp + 0x198], dx
lea eax, [esp + 0xb4]
mov bl, 6
push eax
mov byte [esp + 0x254], bl
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov ecx, dword [esp + 0x18]
cmp dword [ecx + 0x1c], edi
jne 0x40b85d
mov edx, ecx
cmp dword [edx + 0x38], edi
jne 0x40b85d
mov eax, ecx
cmp dword [eax + 0x54], edi
je 0x40b987
mov ecx, dword [esp + 0x3c]
mov edi, dword [esp + 0x18]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
add dword [esp + 0x4c], eax
cmp dword [edi + 0x1c], 0
je 0x40b8cd
cmp dword [edi + 0x20], 8
jb 0x40b883
mov ecx, dword [edi + 0xc]
jmp 0x40b886
lea ecx, [edi + 0xc]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x1bc]
mov byte [esp + 0x25c], 7
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
cmp dword [edi + 0x38], 0
je 0x40b928
cmp dword [edi + 0x3c], 8
jb 0x40b8de
mov ecx, dword [edi + 0x28]
jmp 0x40b8e1
lea ecx, [edi + 0x28]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x1f4]
mov byte [esp + 0x25c], 8
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
cmp dword [edi + 0x54], 0
je 0x40b987
mov eax, dword [esp + 0x18]
cmp dword [eax + 0x58], 8
jb 0x40b93d
mov ecx, dword [eax + 0x44]
jmp 0x40b940
lea ecx, [eax + 0x44]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x184]
mov byte [esp + 0x25c], 9
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
mov edi, dword [esp + 0x18]
cmp dword [edi + 0x94], 0
jne 0x40b9aa
cmp dword [edi + 0xb0], 0
jne 0x40b9aa
cmp dword [edi + 0xcc], 0
je 0x40baf4
mov ecx, dword [esp + 0x24]
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
neg ecx
sub ecx, eax
add dword [esp + 0x54], ecx
cmp dword [edi + 0x94], 0
mov ebp, 8
je 0x40ba28
cmp dword [edi + 0x98], ebp
jb 0x40b9db
mov ecx, dword [edi + 0x84]
jmp 0x40b9e1
lea ecx, [edi + 0x84]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x1d8]
mov byte [esp + 0x25c], 0xa
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
cmp dword [edi + 0xb0], 0
je 0x40ba8e
cmp dword [edi + 0xb4], ebp
jb 0x40ba41
mov ecx, dword [edi + 0xa0]
jmp 0x40ba47
lea ecx, [edi + 0xa0]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x14c]
mov byte [esp + 0x25c], 0xb
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
cmp dword [edi + 0xcc], 0
je 0x40baf4
cmp dword [edi + 0xd0], ebp
jb 0x40baa7
mov ecx, dword [edi + 0xbc]
jmp 0x40baad
lea ecx, [edi + 0xbc]
lea edx, [esp + 0xb4]
push edx
mov edx, dword [esi + 0x48]
lea eax, [esp + 0x128]
push eax
call fcn.0040daf0
add esp, 8
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x1a0]
mov byte [esp + 0x25c], 0xc
call fcn.004015d0
lea ecx, [esp + 0x124]
mov byte [esp + 0x250], bl
call fcn.00401aa0
mov edi, dword [esi + 0x44]
movzx eax, byte [edi + 0x54]
and eax, 1
mov dword [esp + 0xa0], eax
mov al, byte [edi + 0x54]
test al, 1
je 0x40bb4d
mov ecx, dword [edi + 4]
mov edx, dword [edi + 0x14]
push 0
push ecx
and al, 0xfe
mov byte [edi + 0x54], al
mov eax, dword [edi + 0x18]
push 0x8c2
push edx
call eax
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x18]
push 5
push 0
push 0x86b
push ecx
call edx
mov eax, dword [edi]
mov ecx, dword [edi + 0x14]
mov edx, dword [edi + 0x18]
push 0
push eax
push 0x8c2
push ecx
call edx
add esp, 0x30
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x20]
mov ebp, 1
mov dword [esp + 0x28], ebp
jge 0x40c268
test byte [esi + 0x14], 2
je 0x40bb82
movzx ecx, word [esi + 0x18]
cmp ebp, ecx
jb 0x40bb7a
movzx edx, word [esi + 0x1a]
cmp ebp, edx
jbe 0x40bb82
xor bl, bl
mov byte [esp + 0x17], bl
jmp 0x40bb8b
mov byte [esp + 0x17], 1
mov bl, byte [esp + 0x17]
push 0xa
push 0x20
lea eax, [esp + 0x20c]
push eax
push ebp
call fcn.005022bc
add esp, 0x10
test bl, bl
je 0x40bed9
mov ecx, dword [esi + 0x10]
push ecx
call dword [sym.imp.GDI32.dll_StartPage]
mov eax, dword [esp + 0x18]
call fcn.0040b320
test al, al
je 0x40bed9
mov edx, dword [esp + 0x7c]
mov eax, dword [esi + 0x10]
push edx
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [esi + 0x10]
push 0
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov edx, dword [esi + 0x10]
push 0xffffff
push edx
call dword [sym.imp.GDI32.dll_SetBkColor]
mov eax, dword [esi + 0x10]
push 8
push eax
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov ecx, dword [esp + 0x48]
mov ebp, eax
mov dword [esp + 0xc4], ecx
mov ecx, dword [esp + 0x3c]
mov eax, ecx
cdq
sub eax, edx
mov edx, dword [esp + 0x50]
mov edi, eax
mov eax, dword [esp + 0x4c]
sar edi, 1
sub eax, edi
sub eax, ecx
mov dword [esp + 0xc8], eax
add eax, ecx
cmp dword [esp + 0x1c4], 0
mov dword [esp + 0xcc], edx
mov dword [esp + 0xd0], eax
je 0x40bcbf
lea eax, [esp + 0x1b0]
push eax
lea ecx, [esp + 0x208]
push ecx
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40bc78
lea eax, [esp + 0x128]
mov edx, dword [esp + 0x138]
mov ecx, dword [esp + 0x4c]
push 0
push edx
mov edx, dword [esp + 0x50]
push eax
lea eax, [esp + 0xd0]
push eax
mov eax, dword [esi + 0x10]
push 2
sub ecx, edi
push ecx
add edx, 5
push edx
push eax
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], ebx
jb 0x40bcbf
mov ecx, dword [esp + 0x128]
push ecx
call fcn.00501b8f
add esp, 4
cmp dword [esp + 0x1fc], 0
je 0x40bd99
lea edx, [esp + 0x1e8]
push edx
lea eax, [esp + 0x208]
push eax
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40bd05
lea eax, [esp + 0x128]
mov edx, dword [esp + 0x138]
lea ecx, [esp + 0x90]
push ecx
push edx
push eax
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x13c], ebx
jae 0x40bd37
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
push 0
push ecx
mov ecx, dword [esp + 0x50]
push eax
mov eax, dword [esp + 0x58]
sub eax, edi
lea edx, [esp + 0xd0]
push edx
push 4
push eax
mov eax, dword [esp + 0x68]
sub eax, ecx
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0xa8]
cdq
sub eax, edx
sar ebx, 1
sar eax, 1
sub ebx, eax
add ebx, ecx
mov ecx, dword [esi + 0x10]
push ebx
push ecx
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], 8
jb 0x40bd99
mov edx, dword [esp + 0x128]
push edx
call fcn.00501b8f
add esp, 4
cmp dword [esp + 0x18c], 0
je 0x40be5c
lea eax, [esp + 0x178]
push eax
lea ecx, [esp + 0x208]
push ecx
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40bddf
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
lea edx, [esp + 0x90]
push edx
mov edx, dword [esi + 0x10]
push ecx
push eax
push edx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x13c], ebx
jae 0x40be11
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
push 0
push ecx
mov ecx, dword [esp + 0x58]
sub ecx, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x58]
lea edx, [esp + 0xd0]
push edx
mov edx, dword [esi + 0x10]
push 4
sub eax, edi
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], ebx
jb 0x40be5c
mov eax, dword [esp + 0x128]
push eax
call fcn.00501b8f
add esp, 4
mov ecx, dword [esi + 0x10]
push ebp
push ecx
call dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push 1
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
mov edx, dword [esi + 0x10]
mov ebx, eax
push ebx
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [esp + 0x48]
mov ebp, eax
mov eax, dword [esp + 0x3c]
cdq
and edx, 3
add eax, edx
mov edx, dword [esi + 0x10]
mov edi, eax
mov eax, dword [esp + 0x4c]
push 0
sar edi, 2
sub eax, edi
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_MoveToEx]
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esi + 0x10]
sub eax, edi
push eax
push ecx
push edx
call dword [sym.imp.GDI32.dll_LineTo]
mov eax, dword [esi + 0x10]
push ebp
push eax
call dword [sym.imp.GDI32.dll_SelectObject]
push ebx
call dword [sym.imp.GDI32.dll_DeleteObject]
mov bl, byte [esp + 0x17]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov eax, dword [esi + 0x44]
mov dword [esp + 0x68], ecx
mov dword [esp + 0x6c], edx
lea ecx, [esp + 0x40]
push ecx
mov ecx, dword [eax + 0x14]
movzx edx, bl
push edx
mov edx, dword [eax + 0x18]
push 0x867
push ecx
call edx
add esp, 0x10
mov dword [esp + 0x1c], eax
test bl, bl
je 0x40c247
mov eax, dword [esp + 0x18]
call fcn.0040b340
test al, al
je 0x40c23d
mov eax, dword [esp + 0x78]
mov ecx, dword [esi + 0x10]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
mov edx, dword [esi + 0x10]
push 0
push edx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esi + 0x10]
push 0xffffff
push eax
call dword [sym.imp.GDI32.dll_SetBkColor]
mov ecx, dword [esi + 0x10]
push 0
push ecx
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x48]
mov ebp, eax
mov dword [esp + 0xa4], edx
mov eax, ecx
cdq
sub eax, edx
mov edi, eax
mov eax, dword [esp + 0x54]
sar edi, 1
lea edx, [edi + eax]
add eax, edi
mov dword [esp + 0xa8], edx
mov edx, dword [esp + 0x50]
add eax, ecx
cmp dword [esp + 0x1e0], 0
mov dword [esp + 0xac], edx
mov dword [esp + 0xb0], eax
je 0x40c025
lea ecx, [esp + 0x1cc]
push ecx
lea edx, [esp + 0x208]
push edx
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40bfdd
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
push 0
push ecx
push eax
mov eax, dword [esp + 0x60]
lea edx, [esp + 0xb0]
push edx
mov edx, dword [esp + 0x58]
push 2
lea ecx, [edi + eax]
mov eax, dword [esi + 0x10]
push ecx
add edx, 5
push edx
push eax
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], ebx
jb 0x40c025
mov ecx, dword [esp + 0x128]
push ecx
call fcn.00501b8f
add esp, 4
cmp dword [esp + 0x154], 0
je 0x40c100
lea edx, [esp + 0x140]
push edx
lea eax, [esp + 0x208]
push eax
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40c06b
lea eax, [esp + 0x128]
mov edx, dword [esp + 0x138]
lea ecx, [esp + 0x98]
push ecx
push edx
push eax
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x13c], ebx
jae 0x40c09d
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
push 0
push ecx
push eax
mov eax, dword [esp + 0x60]
lea ecx, [edi + eax]
mov eax, dword [esp + 0x5c]
lea edx, [esp + 0xb0]
push edx
push 4
push ecx
mov ecx, dword [esp + 0x60]
sub eax, ecx
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0xb0]
cdq
sub eax, edx
mov edx, dword [esi + 0x10]
sar ebx, 1
sar eax, 1
sub ebx, eax
add ebx, ecx
push ebx
push edx
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], 8
jb 0x40c100
mov eax, dword [esp + 0x128]
push eax
call fcn.00501b8f
add esp, 4
cmp dword [esp + 0x1a8], 0
je 0x40c1c3
lea ecx, [esp + 0x194]
push ecx
lea edx, [esp + 0x208]
push edx
lea ebx, [esp + 0x12c]
call fcn.0040c440
mov eax, dword [esp + 0x128]
mov ebx, 8
cmp dword [esp + 0x13c], ebx
jae 0x40c146
lea eax, [esp + 0x128]
mov edx, dword [esp + 0x138]
lea ecx, [esp + 0x98]
push ecx
push edx
push eax
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x128]
cmp dword [esp + 0x13c], ebx
jae 0x40c178
lea eax, [esp + 0x128]
mov ecx, dword [esp + 0x138]
push 0
push ecx
mov ecx, dword [esp + 0x58]
sub ecx, dword [esp + 0xa0]
push eax
mov eax, dword [esp + 0x60]
lea edx, [esp + 0xb0]
push edx
mov edx, dword [esi + 0x10]
push 4
add edi, eax
push edi
push ecx
push edx
call dword [sym.imp.GDI32.dll_ExtTextOutW]
cmp dword [esp + 0x13c], ebx
jb 0x40c1c3
mov eax, dword [esp + 0x128]
push eax
call fcn.00501b8f
add esp, 4
mov ecx, dword [esi + 0x10]
push ebp
push ecx
call dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push 1
push 0
call dword [sym.imp.GDI32.dll_CreatePen]
mov edx, dword [esi + 0x10]
mov edi, eax
push edi
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ebp, eax
mov eax, dword [esp + 0x24]
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x48]
mov ebx, eax
mov eax, dword [esp + 0x54]
push 0
sar ebx, 2
lea ecx, [ebx + eax]
mov eax, dword [esi + 0x10]
push ecx
push edx
push eax
call dword [sym.imp.GDI32.dll_MoveToEx]
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov eax, dword [esi + 0x10]
add ebx, ecx
push ebx
push edx
push eax
call dword [sym.imp.GDI32.dll_LineTo]
mov ecx, dword [esi + 0x10]
push ebp
push ecx
call dword [sym.imp.GDI32.dll_SelectObject]
push edi
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ebp, dword [esp + 0x28]
mov edx, dword [esi + 0x10]
push edx
call dword [sym.imp.GDI32.dll_EndPage]
inc ebp
test byte [esi + 0x14], 2
mov dword [esp + 0x28], ebp
je 0x40c25a
movzx eax, word [esi + 0x1a]
cmp ebp, eax
ja 0x40c268
mov ecx, dword [esp + 0x20]
cmp dword [esp + 0x1c], ecx
jl 0x40bb64
mov edx, dword [esi + 0x10]
push edx
call dword [sym.imp.GDI32.dll_EndDoc]
mov eax, dword [esi + 0x10]
push eax
call dword [sym.imp.GDI32.dll_DeleteDC]
mov edi, dword [esp + 0xa0]
mov eax, dword [esi + 0x44]
call fcn.0040e440
mov esi, dword [esi + 0x44]
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
xor ebx, ebx
push ebx
push ebx
push 0x867
push ecx
call edx
mov eax, dword [esp + 0x8c]
add esp, 0x10
cmp eax, ebx
je 0x40c2b5
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov eax, dword [esp + 0x78]
cmp eax, ebx
je 0x40c2c4
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov esi, 8
dec ebp
cmp dword [esp + 0x1ac], esi
jb 0x40c2e3
mov eax, dword [esp + 0x198]
push eax
call fcn.00501b8f
add esp, 4
xor ecx, ecx
mov edi, 7
mov dword [esp + 0x1ac], edi
mov dword [esp + 0x1a8], ebx
mov word [esp + 0x198], cx
cmp dword [esp + 0x158], esi
jb 0x40c319
mov edx, dword [esp + 0x144]
push edx
call fcn.00501b8f
add esp, 4
xor eax, eax
mov dword [esp + 0x158], edi
mov dword [esp + 0x154], ebx
mov word [esp + 0x144], ax
cmp dword [esp + 0x1e4], esi
jb 0x40c34a
mov ecx, dword [esp + 0x1d0]
push ecx
call fcn.00501b8f
add esp, 4
xor edx, edx
mov dword [esp + 0x1e4], edi
mov dword [esp + 0x1e0], ebx
mov word [esp + 0x1d0], dx
cmp dword [esp + 0x190], esi
jb 0x40c37b
mov eax, dword [esp + 0x17c]
push eax
call fcn.00501b8f
add esp, 4
xor ecx, ecx
mov dword [esp + 0x190], edi
mov dword [esp + 0x18c], ebx
mov word [esp + 0x17c], cx
cmp dword [esp + 0x200], esi
jb 0x40c3ac
mov edx, dword [esp + 0x1ec]
push edx
call fcn.00501b8f
add esp, 4
xor eax, eax
mov dword [esp + 0x200], edi
mov dword [esp + 0x1fc], ebx
mov word [esp + 0x1ec], ax
cmp dword [esp + 0x1c8], esi
jb 0x40c3dd
mov ecx, dword [esp + 0x1b4]
push ecx
call fcn.00501b8f
add esp, 4
xor edx, edx
mov dword [esp + 0x1c8], edi
mov dword [esp + 0x1c4], ebx
mov word [esp + 0x1b4], dx
cmp dword [esp + 0x174], esi
jb 0x40c40e
mov eax, dword [esp + 0x160]
push eax
call fcn.00501b8f
add esp, 4
mov eax, ebp
mov ecx, dword [esp + 0x248]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x230]
xor ecx, esp
call fcn.00501b9a
add esp, 0x240
ret