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

Disassembly:
push 0xffffffffffffffff
push 0x777e75
mov eax, dword fs:[0]
push eax
sub esp, 0x640
mov eax, dword [0x84dfc0]
xor eax, esp
mov dword [esp + 0x638], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x84dfc0]
xor eax, esp
push eax
lea eax, [esp + 0x654]
mov dword fs:[0], eax
mov edx, dword [esp + 0x678]
mov eax, dword [esp + 0x670]
mov esi, dword [esp + 0x664]
mov ebp, dword [esp + 0x668]
mov ecx, dword [esp + 0x66c]
mov dword [esp + 0xa4], edx
mov edx, dword [esp + 0x67c]
mov dword [esp + 0xb0], edx
mov edx, dword [esp + 0x680]
mov dword [esp + 0x20], esi
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x34], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x78], edx
test eax, eax
je 0x421823
test ebp, ebp
je 0x421823
push ecx
call dword [sym.imp.USER32.dll_IsRectEmpty]
test eax, eax
jne 0x421823
mov ebx, dword [esp + 0x684]
shr ebx, 0xa
not bl
and bl, 1
xor edi, edi
push 0x28
mov byte [esp + 0x21], bl
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], 0xa
call fcn.004915f4
add esp, 4
mov dword [esp + 0x6c], eax
mov dword [esp + 0x65c], edi
push 0x28
mov dword [esp + 0x8c], edi
mov dword [esp + 0x90], 0xa
call fcn.004915f4
add esp, 4
mov dword [esp + 0x84], eax
push 0x28
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], 0xa
call fcn.004915f4
add esp, 4
mov dword [esp + 0x50], eax
xor eax, eax
mov byte [esp + 0x65c], 2
mov dword [esp + 0x158], eax
mov dword [esp + 0x15c], eax
mov dword [esp + 0x160], eax
lea eax, [esp + 0x154]
push eax
push esi
mov dword [esp + 0x15c], edi
call dword [sym.imp.GDI32.dll_GetClipBox]
mov edi, dword [sym.imp.GDI32.dll_CreateRectRgnIndirect]
lea ecx, [esp + 0x154]
push ecx
call edi
mov edx, dword [esp + 0x34]
push edx
mov dword [esp + 0xe4], eax
call edi
mov dword [esp + 0x130], eax
test bl, bl
je 0x41f6b8
push 1
push eax
push esi
call dword [sym.imp.GDI32.dll_ExtSelectClipRgn]
mov eax, ebp
call fcn.00407460
add eax, 0x90
mov dword [esp + 0x30], eax
mov eax, ebp
call fcn.00407460
mov eax, dword [eax]
push eax
push esi
call dword [sym.imp.GDI32.dll_SelectObject]
push 1
push esi
mov dword [esp + 0x130], eax
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x674]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
mov ecx, ebp
call fcn.00407430
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
push esi
call dword [sym.imp.GDI32.dll_SetBkColor]
mov eax, dword [esp + 0x684]
mov edi, eax
and edi, 1
mov dword [esp + 0x120], edi
jne 0x41f75a
test al, 0xe
je 0x41f89c
test eax, 0x400
jne 0x41f89c
mov ecx, dword [esp + 0x684]
mov eax, dword [esp + 0x674]
or ecx, 0x400
push ecx
mov ecx, dword [esp + 0x1c]
xor ebx, ebx
lea edx, [esp + 0x68]
push edx
push ebx
push ebx
push eax
push ecx
lea edx, [esp + 0xcc]
push edx
push ebp
push esi
mov dword [esp + 0xd8], ebx
mov dword [esp + 0xdc], ebx
mov dword [esp + 0xe0], 0x270f
mov dword [esp + 0xe4], 0x64
mov dword [esp + 0x88], ebx
call fcn.0041f530
add esp, 0x24
test byte [esp + 0x684], 0x20
je 0x41f82e
mov esi, dword [esp + 0xbc]
cmp edi, ebx
mov edi, dword [esp + 0x34]
je 0x41f814
mov ecx, dword [edi]
mov eax, dword [edi + 8]
sub eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x64], eax
mov eax, esi
sub eax, dword [esp + 0xb4]
cdq
sub eax, edx
mov edx, dword [esp + 0x64]
sar eax, 1
sub edx, eax
lea eax, [edx + ecx]
mov dword [edi], eax
sub eax, dword [esp + 0xb4]
add eax, esi
mov dword [edi + 8], eax
test byte [esp + 0x684], 2
je 0x41f832
mov eax, dword [edi + 8]
sub eax, esi
add eax, dword [esp + 0xb4]
mov dword [edi], eax
jmp 0x41f832
mov edi, dword [esp + 0x34]
test byte [esp + 0x684], 4
mov ecx, dword [esp + 0xc0]
je 0x41f881
mov esi, dword [edi + 4]
mov eax, dword [edi + 0xc]
sub eax, esi
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x64], eax
mov eax, ecx
sub eax, dword [esp + 0xb8]
mov ecx, dword [esp + 0x64]
cdq
sub eax, edx
sar eax, 1
sub ecx, eax
lea eax, [ecx + esi]
mov ecx, dword [esp + 0xc0]
mov dword [edi + 4], eax
sub eax, dword [esp + 0xb8]
add eax, ecx
mov dword [edi + 0xc], eax
test byte [esp + 0x684], 8
je 0x41f8a2
mov edx, dword [edi + 0xc]
sub edx, ecx
add edx, dword [esp + 0xb8]
mov dword [edi + 4], edx
jmp 0x41f8a2
mov edi, dword [esp + 0x34]
xor ebx, ebx
lea eax, [esp + 0x4b8]
xor ecx, ecx
mov byte [esp + 0x4b], 0
mov dword [esp + 0x4b4], eax
mov word [esp + 0x4b8], cx
mov edx, dword [ebp + 0x158]
mov eax, dword [ebp + 0x15c]
mov ecx, dword [esp + 0xa4]
mov ebp, dword [esp + 0xb0]
mov dword [esp + 0xa8], edx
mov dword [esp + 0xac], eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0x68]
cmp eax, dword [edx]
jge 0x41f947
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0x38]
push ecx
push edx
push eax
call dword [sym.imp.USER32.dll_PtInRect]
test eax, eax
je 0x41f931
mov eax, dword [ebp]
push 0xffffffffffffffff
push eax
lea esi, [esp + 0x4bc]
call fcn.00401410
mov byte [esp + 0x4b], 1
inc dword [esp + 0x68]
add dword [esp + 0x38], 0x10
add ebp, 0x84
cmp byte [esp + 0x4b], 0
je 0x41f8ef
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [ecx + 0x10]
add eax, dword [ecx]
mov dword [esp + 0x44], edx
xor dl, dl
xor ebp, ebp
mov dword [esp + 0x80], ebp
mov dword [esp + 0x28], eax
mov dword [esp + 0x64], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], ebx
mov byte [esp + 0x1e], dl
mov byte [esp + 0x1f], dl
mov byte [esp + 0x2f], dl
mov byte [esp + 0x27], dl
mov dword [esp + 0x68], ebx
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], ebx
mov dword [esp + 0x10c], ebx
mov dword [esp + 0xf8], ebx
mov dword [esp + 0xfc], ebx
mov dword [esp + 0x100], ebx
mov dword [esp + 0xec], ebx
mov dword [esp + 0xf0], ebx
mov dword [esp + 0xf4], ebx
mov byte [esp + 0x65c], 6
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
mov dword [esp + 0xe4], eax
mov byte [esp + 0x5f], dl
mov byte [esp + 0x5e], dl
mov byte [esp + 0x4a], dl
mov dword [esp + 0x7c], ebx
mov byte [esp + 0x1c], dl
cmp cx, bx
je 0x421710
jmp 0x41fa1b
mov ebp, dword [esp + 0x80]
mov dl, byte [esp + 0x1e]
mov esi, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
mov esi, dword [esi + 8]
cmp edi, esi
mov ebx, dword [esp + 0x44]
jge 0x4213d0
cmp cx, 0xa
je 0x4213d6
test dl, dl
jne 0x4213d0
cmp byte [esp + 0x1f], dl
jne 0x4210d2
cmp cx, 0x3c
je 0x41fa5e
cmp cx, 0x7b
jne 0x420bc2
movzx edx, word [eax + 2]
lea esi, [eax + 2]
cmp dx, 0x61
jb 0x420bc2
cmp dx, 0x7a
ja 0x420bc2
movzx edx, word [eax + 4]
cmp dx, 0x20
je 0x41fa93
cmp dx, 0x3e
je 0x41fa93
cmp dx, 0x7d
jne 0x420bc2
mov eax, esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
add ecx, 0xffffff9f
cmp ecx, 0x18
ja case.0x41faaf.100
movzx ecx, byte [ecx + 0x421930]
jmp dword [ecx*4 + 0x4218fc]
add eax, 2
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jbe 0x41fae5
mov esi, dword [sym.imp.USER32.dll_CharNextW]
jmp 0x41fad0
cmp cx, 0x20
ja 0x41fae5
push eax
call esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x41fad0
mov edx, dword [esp + 0x78]
cmp ebp, dword [edx]
jge 0x41fb5f
cmp byte [esp + 0x1c], 0
jne 0x41fb5f
mov esi, ebp
imul esi, esi, 0x84
add esi, dword [esp + 0xb0]
mov edi, esi
call fcn.004014c0
mov ecx, dword [esp + 0x18]
movzx eax, word [ecx]
test ax, ax
je 0x41fb5f
mov ebx, dword [sym.imp.USER32.dll_CharNextW]
lea esp, [esp]
cmp ax, 0x3e
je 0x41fb5f
cmp ax, 0x7d
je 0x41fb5f
push ecx
call ebx
mov ecx, dword [esp + 0x18]
mov edi, eax
cmp ecx, edi
jae 0x41fb57
lea esp, [esp]
movzx eax, word [ecx]
add ecx, 2
mov dword [esp + 0x18], ecx
call fcn.004014e0
mov ecx, dword [esp + 0x18]
cmp ecx, edi
jb 0x41fb40
movzx eax, word [ecx]
test ax, ax
jne 0x41fb20
mov edi, dword [esp + 0x4c]
mov ecx, edi
call fcn.004073d0
cmp byte [esp + 0x4b], 0
mov ebx, eax
je 0x41fba5
mov eax, dword [esp + 0x78]
cmp ebp, dword [eax]
jge 0x41fba5
mov ecx, dword [esp + 0xb0]
imul ebp, ebp, 0x84
mov edx, dword [ecx + ebp]
push edx
lea ecx, [esp + 0x4b8]
call fcn.00401500
test al, al
je 0x41fba5
mov ecx, edi
call fcn.00407400
mov ebx, eax
push ebx
lea esi, [esp + 0x88]
call fcn.00401130
mov eax, ebx
shr eax, 8
movzx edx, bl
movzx ecx, al
shl edx, 8
or ecx, edx
shr ebx, 0x10
movzx eax, bl
shl ecx, 8
or ecx, eax
push ecx
mov ecx, dword [esp + 0x24]
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, edi
call fcn.00407460
mov ecx, dword [esp + 0x70]
test ecx, ecx
jle 0x41fbfe
lea eax, [ecx - 1]
test eax, eax
jl 0x41fbfc
cmp eax, ecx
jge 0x41fbfc
mov edx, dword [esp + 0x6c]
mov eax, dword [edx + eax*4]
jmp 0x41fbfe
xor eax, eax
cmp byte [eax + 0x8d], 0
jne 0x41fcba
movzx ebx, byte [eax + 0x8e]
movzx ecx, byte [eax + 0x8c]
mov esi, dword [eax + 0x88]
mov ebp, dword [eax + 4]
push ebx
push 1
push ecx
push esi
push ebp
push edi
mov byte [esp + 0x130], cl
call fcn.00407840
test eax, eax
jne 0x41fc4c
mov eax, dword [esp + 0x118]
push ebx
push 1
push eax
push esi
push ebp
push edi
call fcn.00407620
push eax
mov eax, edi
call fcn.004079f0
mov edi, eax
push edi
lea esi, [esp + 0x70]
call fcn.00401130
mov ecx, dword [edi]
mov edx, dword [esp + 0x20]
push ecx
lea esi, [edi + 0x90]
push edx
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [esp + 0x54]
lea eax, [edi - 1]
test eax, eax
jl 0x41fc90
cmp eax, edi
jge 0x41fc90
mov ecx, dword [esp + 0x50]
mov ecx, dword [ecx + eax*4]
jmp 0x41fc92
xor ecx, ecx
mov edx, dword [esi + 0x10]
mov esi, dword [esi]
add edx, esi
add ecx, edx
cmp dword [esp + 0x28], ecx
jg 0x41fcba
test eax, eax
jl 0x41fcb2
cmp eax, edi
jge 0x41fcb2
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + eax*4]
jmp 0x41fcb4
xor eax, eax
add edx, eax
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x44]
mov dword [esp + 0x94], edx
mov dword [esp + 0x98], eax
mov byte [esp + 0x2f], 1
jmp 0x420a1c
add eax, 2
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x4c]
call fcn.00407460
mov ecx, dword [esp + 0x70]
test ecx, ecx
jle 0x41fd08
lea eax, [ecx - 1]
test eax, eax
jl 0x41fd06
cmp eax, ecx
jge 0x41fd06
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + eax*4]
jmp 0x41fd08
xor eax, eax
cmp byte [eax + 0x8c], 0
jne 0x420a1c
movzx ebx, byte [eax + 0x8e]
movzx ecx, byte [eax + 0x8d]
mov esi, dword [eax + 0x88]
mov ebp, dword [eax + 4]
mov edi, dword [esp + 0x4c]
push ebx
push ecx
push 1
push esi
push ebp
push edi
mov byte [esp + 0x134], cl
call fcn.00407840
test eax, eax
jne 0x41fd5a
mov edx, dword [esp + 0x11c]
push ebx
push edx
push 1
push esi
push ebp
push edi
call fcn.00407620
push eax
mov eax, edi
call fcn.004079f0
mov edi, eax
push edi
lea esi, [esp + 0x70]
call fcn.00401130
mov eax, dword [edi]
mov ecx, dword [esp + 0x20]
push eax
lea esi, [edi + 0x90]
push ecx
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [esp + 0x54]
lea eax, [edi - 1]
test eax, eax
jl 0x41fd9e
cmp eax, edi
jge 0x41fd9e
mov edx, dword [esp + 0x50]
mov edx, dword [edx + eax*4]
jmp 0x41fda0
xor edx, edx
mov ecx, dword [esi + 0x10]
mov esi, dword [esi]
add ecx, esi
add edx, ecx
cmp dword [esp + 0x28], edx
jg 0x420a1c
test eax, eax
jl 0x41fdcd
cmp eax, edi
jge 0x41fdcd
mov edx, dword [esp + 0x50]
mov eax, dword [edx + eax*4]
add ecx, eax
mov dword [esp + 0x28], ecx
jmp 0x420a1c
xor eax, eax
add ecx, eax
mov dword [esp + 0x28], ecx
jmp 0x420a1c
add eax, 2
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jbe 0x41fe05
mov esi, dword [sym.imp.USER32.dll_CharNextW]
nop
cmp cx, 0x20
ja 0x41fe05
push eax
call esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x41fdf0
cmp word [eax], 0x23
jne 0x41fe12
add eax, 2
mov dword [esp + 0x18], eax
push 0x10
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004a165d
add esp, 0xc
mov ebx, eax
push ebx
lea esi, [esp + 0x88]
call fcn.00401130
mov edx, ebx
shr edx, 8
movzx ecx, bl
movzx eax, dl
shl ecx, 8
or eax, ecx
shr ebx, 0x10
movzx edx, bl
shl eax, 8
or eax, edx
push eax
mov eax, dword [esp + 0x24]
push eax
call dword [sym.imp.GDI32.dll_SetTextColor]
jmp 0x420a1c
mov edi, dword [sym.imp.USER32.dll_CharNextW]
add eax, 2
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jbe 0x41fe87
cmp cx, 0x20
ja 0x41fe87
push eax
call edi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x41fe72
push 0xa
lea ecx, [esp + 0x1c]
push ecx
push eax
mov esi, eax
call fcn.004a165d
mov ecx, dword [esp + 0x24]
add esp, 0xc
cmp esi, ecx
je 0x41fed4
mov esi, dword [esp + 0x4c]
call fcn.00407980
mov ebp, eax
push ebp
lea esi, [esp + 0x70]
call fcn.00401130
mov edx, dword [ebp]
mov eax, dword [esp + 0x20]
push edx
lea esi, [ebp + 0x90]
push eax
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
jmp 0x4201af
lea edx, [esp + 0x320]
xor eax, eax
mov dword [esp + 0x31c], edx
mov word [esp + 0x320], ax
lea edx, [esp + 0x188]
mov dword [esp + 0x38], 0xa
mov dword [esp + 0x184], edx
mov word [esp + 0x188], ax
mov byte [esp + 0x65c], 8
mov byte [esp + 0xdc], al
mov byte [esp + 0xd4], al
mov byte [esp + 0xd0], al
movzx eax, word [ecx]
test ax, ax
je 0x41ff91
nop
cmp ax, 0x3e
je 0x41ff91
cmp ax, 0x7d
je 0x41ff91
cmp ax, 0x20
je 0x41ff91
push ecx
call edi
mov ecx, dword [esp + 0x18]
mov ebp, eax
cmp ecx, ebp
jae 0x41ff89
nop
movzx eax, word [ecx]
add ecx, 2
lea edx, [esp + 0xe8]
mov word [esp + 0xe8], ax
mov dword [esp + 0x18], ecx
push edx
lea eax, [esp + 0x320]
xor ecx, ecx
push eax
mov word [esp + 0xf2], cx
call fcn.004012d0
mov ecx, dword [esp + 0x18]
cmp ecx, ebp
jb 0x41ff50
movzx eax, word [ecx]
test ax, ax
jne 0x41ff30
movzx eax, word [ecx]
test ax, ax
jbe 0x41ffb7
lea esp, [esp]
cmp ax, 0x20
ja 0x41ffb7
push ecx
call edi
mov ecx, eax
mov dword [esp + 0x18], ecx
movzx eax, word [ecx]
test ax, ax
ja 0x41ffa0
movzx ecx, word [ecx]
push ecx
call fcn.0048f979
add esp, 4
test eax, eax
je 0x41ffdf
mov eax, dword [esp + 0x18]
push 0xa
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.004a165d
add esp, 0xc
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
test cx, cx
jbe 0x420005
jmp 0x41fff0
cmp cx, 0x20
ja 0x420005
push eax
call edi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x41fff0
movzx ecx, word [eax]
test cx, cx
je 0x420071
lea ecx, [ecx]
cmp cx, 0x3e
je 0x420071
cmp cx, 0x7d
je 0x420071
push eax
call edi
mov ebp, eax
mov eax, dword [esp + 0x18]
cmp eax, ebp
jae 0x420069
lea esp, [esp]
movzx ecx, word [eax]
add eax, 2
lea edx, [esp + 0xcc]
mov dword [esp + 0x18], eax
mov word [esp + 0xcc], cx
push edx
lea eax, [esp + 0x188]
xor ecx, ecx
push eax
mov word [esp + 0xd6], cx
call fcn.004012d0
mov eax, dword [esp + 0x18]
cmp eax, ebp
jb 0x420030
movzx ecx, word [eax]
test cx, cx
jne 0x420010
mov ecx, dword [esp + 0x184]
push ecx
call fcn.006d0b4c
mov edx, dword [esp + 0x188]
add esp, 4
push str.bold
push edx
call fcn.006d0284
mov ecx, dword [esp + 0x18c]
add esp, 8
test eax, eax
je 0x4200af
sub eax, ecx
sar eax, 1
js 0x4200af
mov byte [esp + 0xdc], 1
push str.underline
push ecx
call fcn.006d0284
mov ecx, dword [esp + 0x18c]
add esp, 8
test eax, eax
je 0x4200d6
sub eax, ecx
sar eax, 1
js 0x4200d6
mov byte [esp + 0xd4], 1
push str.italic
push ecx
call fcn.006d0284
add esp, 8
test eax, eax
je 0x4200fb
sub eax, dword [esp + 0x184]
sar eax, 1
js 0x4200fb
mov byte [esp + 0xd0], 1
mov esi, dword [esp + 0xd0]
mov ebp, dword [esp + 0xd4]
mov edi, dword [esp + 0xdc]
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x31c]
mov ebx, dword [esp + 0x4c]
push esi
push ebp
push edi
push eax
push ecx
push ebx
call fcn.00407840
test eax, eax
jne 0x420144
mov edx, dword [esp + 0x38]
mov eax, dword [esp + 0x31c]
push esi
push ebp
push edi
push edx
push eax
push ebx
call fcn.00407620
push eax
mov eax, ebx
call fcn.004079f0
mov ebp, eax
push ebp
lea esi, [esp + 0x70]
call fcn.00401130
mov ecx, dword [ebp]
mov edx, dword [esp + 0x20]
push ecx
lea esi, [ebp + 0x90]
push edx
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x184]
lea ecx, [esp + 0x188]
cmp eax, ecx
je 0x42018c
push eax
call fcn.0048f6ed
add esp, 4
mov byte [esp + 0x65c], 6
mov eax, dword [esp + 0x31c]
lea edx, [esp + 0x320]
cmp eax, edx
je 0x4201af
push eax
call fcn.0048f6ed
add esp, 4
mov ecx, dword [esp + 0x54]
lea eax, [ecx - 1]
test eax, eax
jl 0x4201c7
cmp eax, ecx
jge 0x4201c7
mov ecx, dword [esp + 0x50]
mov edx, dword [ecx + eax*4]
jmp 0x4201c9
xor edx, edx
mov ecx, dword [esi + 0x10]
mov esi, dword [esi]
add ecx, esi
add edx, ecx
cmp dword [esp + 0x28], edx
jg 0x420a1c
test eax, eax
jl 0x41fdcd
cmp eax, dword [esp + 0x54]
jge 0x41fdcd
mov edx, dword [esp + 0x50]
mov eax, dword [edx + eax*4]
add ecx, eax
mov dword [esp + 0x28], ecx
jmp 0x420a1c
lea ecx, [eax - 2]
add eax, 2
push 0xffffffffffffffff
mov dword [esp + 0x3c], ecx
push eax
lea ecx, [esp + 0x5cc]
mov dword [esp + 0x20], eax
call fcn.00401270
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
mov edi, dword [sym.imp.USER32.dll_CharNextW]
xor ebx, ebx
cmp cx, bx
jbe 0x420246
cmp cx, 0x20
ja 0x420246
push eax
call edi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
cmp cx, bx
ja 0x420231
lea edx, [esp + 0x3a8]
xor ecx, ecx
mov dword [esp + 0x3a4], edx
mov word [esp + 0x3a8], cx
mov byte [esp + 0x65c], 0xa
movzx ecx, word [eax]
cmp cx, bx
je 0x4202e1
mov edi, edi
cmp cx, 0x3e
je 0x4202d1
cmp cx, 0x7d
je 0x4202d1
cmp cx, 0x20
je 0x4202d1
push eax
call edi
mov ebp, eax
mov eax, dword [esp + 0x18]
cmp eax, ebp
jae 0x4202c9
nop
movzx ecx, word [eax]
add eax, 2
mov dword [esp + 0x18], eax
lea eax, [esp + 0xc8]
mov word [esp + 0xc8], cx
push eax
lea ecx, [esp + 0x3a8]
xor edx, edx
push ecx
mov word [esp + 0xd2], dx
call fcn.004012d0
mov eax, dword [esp + 0x18]
cmp eax, ebp
jb 0x420290
movzx ecx, word [eax]
cmp cx, bx
jne 0x420270
mov edx, dword [esp + 0x3a4]
cmp word [edx], bx
jne 0x4203dc
mov edi, dword [esp + 0x4c]
mov eax, edi
mov dword [esp + 0x38], ebx
call fcn.00407460
mov ecx, dword [esp + 0x70]
cmp ecx, ebx
jle 0x42030e
lea eax, [ecx - 1]
cmp eax, ebx
jl 0x42030c
cmp eax, ecx
jge 0x42030c
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + eax*4]
jmp 0x42030e
xor eax, eax
cmp byte [eax + 0x8e], 0
jne 0x4208fb
movzx ebx, byte [eax + 0x8d]
movzx ecx, byte [eax + 0x8c]
mov ebp, dword [eax + 0x88]
mov esi, dword [eax + 4]
push 1
push ebx
push ecx
push ebp
push esi
push edi
mov byte [esp + 0x13c], cl
call fcn.00407840
test eax, eax
jne 0x42035c
mov edx, dword [esp + 0x124]
push 1
push ebx
push edx
push ebp
push esi
push edi
call fcn.00407620
push eax
mov eax, edi
call fcn.004079f0
mov edi, eax
push edi
lea esi, [esp + 0x70]
call fcn.00401130
mov eax, dword [edi]
mov ecx, dword [esp + 0x20]
push eax
lea esi, [edi + 0x90]
push ecx
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [esp + 0x54]
lea eax, [edi - 1]
test eax, eax
jl 0x4203a0
cmp eax, edi
jge 0x4203a0
mov edx, dword [esp + 0x50]
mov ecx, dword [edx + eax*4]
jmp 0x4203a2
xor ecx, ecx
mov edx, dword [esi + 0x10]
mov esi, dword [esi]
add edx, esi
add ecx, edx
cmp dword [esp + 0x28], ecx
jg 0x4208fb
test eax, eax
jl 0x4203cf
cmp eax, edi
jge 0x4203cf
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + eax*4]
add edx, eax
mov dword [esp + 0x28], edx
jmp 0x4208fb
xor eax, eax
add edx, eax
mov dword [esp + 0x28], edx
jmp 0x4208fb
movzx ecx, word [eax]
cmp cx, bx
jbe 0x4203f9
cmp cx, 0x20
ja 0x4203f9
push eax
call edi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
cmp cx, bx
ja 0x4203e4
push 0xa
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.004a165d
mov esi, eax
add esp, 0xc
cmp esi, ebx
mov dword [esp + 0x60], eax
jg 0x42041c
mov esi, 1
mov dword [esp + 0x60], esi
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
cmp cx, bx
jbe 0x42043d
cmp cx, 0x20
ja 0x42043d
push eax
call edi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
cmp cx, bx
ja 0x420428
push 0xa
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004a165d
add esp, 0xc
cmp eax, ebx
mov dword [esp + 0x90], eax
jl 0x42045c
cmp eax, esi
jl 0x420463
mov dword [esp + 0x90], ebx
mov edx, dword [esp + 0x5c4]
push str.file
push edx
call fcn.006d0284
add esp, 8
test eax, eax
jne 0x4204af
mov eax, dword [esp + 0x5c4]
push str.res
push eax
call fcn.006d0284
add esp, 8
test eax, eax
jne 0x4204af
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x3a4]
push ebx
push ebx
push ecx
call fcn.00407a80
mov ebp, eax
jmp 0x42078e
lea edx, [esp + 0x540]
xor eax, eax
mov dword [esp + 0x53c], edx
mov word [esp + 0x540], ax
lea ecx, [esp + 0x430]
xor edx, edx
mov dword [esp + 0x42c], ecx
mov word [esp + 0x430], dx
mov ebp, dword [esp + 0x5c4]
lea eax, [esp + 0x210]
xor ecx, ecx
mov dword [esp + 0x20c], eax
mov word [esp + 0x210], cx
lea edx, [esp + 0x298]
xor eax, eax
mov dword [esp + 0x294], edx
mov word [esp + 0x298], ax
mov byte [esp + 0x65c], 0xe
cmp word [ebp], ax
je 0x4206fd
mov ebx, dword [sym.imp.USER32.dll_CharNextW]
mov edi, edi
lea edi, [esp + 0x20c]
call fcn.004014c0
lea edi, [esp + 0x294]
call fcn.004014c0
movzx eax, word [ebp]
test ax, ax
jbe 0x420565
cmp ax, 0x20
ja 0x420565
push ebp
call ebx
mov ebp, eax
movzx eax, word [ebp]
test ax, ax
ja 0x420551
movzx eax, word [ebp]
test ax, ax
je 0x4205be
cmp ax, 0x3d
je 0x4205be
cmp ax, 0x20
jbe 0x4205be
push ebp
call ebx
mov esi, eax
cmp ebp, esi
jae 0x4205b5
mov cx, word [ebp]
lea eax, [esp + 0xc4]
mov word [esp + 0xc4], cx
push eax
lea ecx, [esp + 0x210]
xor edx, edx
push ecx
mov word [esp + 0xce], dx
call fcn.004012d0
add ebp, 2
cmp ebp, esi
jb 0x420583
movzx eax, word [ebp]
test ax, ax
jne 0x42056e
movzx eax, word [ebp]
test ax, ax
jbe 0x4205db
cmp ax, 0x20
ja 0x4205db
push ebp
call ebx
mov ebp, eax
movzx eax, word [ebp]
test ax, ax
ja 0x4205c7
mov dx, word [ebp]
add ebp, 2
cmp dx, 0x3d
jne 0x4206fd
movzx eax, word [ebp]
test ax, ax
jbe 0x420609
cmp ax, 0x20
ja 0x420609
push ebp
call ebx
mov ebp, eax
movzx eax, word [ebp]
test ax, ax
ja 0x4205f5
mov ax, word [ebp]
add ebp, 2
cmp ax, 0x27
jne 0x4206fd
movzx eax, word [ebp]
test ax, ax
je 0x42066d
cmp ax, 0x27
je 0x42066d
push ebp
call ebx
mov esi, eax
cmp ebp, esi
jae 0x420664
mov cx, word [ebp]
lea eax, [esp + 0xd8]
mov word [esp + 0xd8], cx
push eax
lea ecx, [esp + 0x298]
xor edx, edx
push ecx
mov word [esp + 0xe2], dx
call fcn.004012d0
add ebp, 2
cmp ebp, esi
jb 0x420632
movzx eax, word [ebp]
test ax, ax
jne 0x420623
mov dx, word [ebp]
add ebp, 2
cmp dx, 0x27
jne 0x4206fd
mov esi, dword [esp + 0x294]
cmp word [esi], 0
je 0x4206e5
push 0x8063a4
lea ecx, [esp + 0x210]
call fcn.00401500
test al, al
jne 0x4206d6
push 0x8063b0
lea ecx, [esp + 0x210]
call fcn.00401500
test al, al
jne 0x4206d6
push str.restype
lea ecx, [esp + 0x210]
call fcn.00401500
test al, al
je 0x4206e5
push 0xffffffffffffffff
push esi
lea esi, [esp + 0x544]
jmp 0x4206e0
push 0xffffffffffffffff
push esi
lea esi, [esp + 0x434]
call fcn.00401410
mov ax, word [ebp]
add ebp, 2
cmp ax, 0x20
jne 0x4206fd
cmp word [ebp], 0
jne 0x420530
mov ecx, dword [esp + 0x53c]
mov edx, dword [esp + 0x4c]
mov edi, dword [esp + 0x42c]
push 0
push ecx
push edx
call fcn.00407a80
mov ebp, eax
mov eax, dword [esp + 0x294]
lea ecx, [esp + 0x298]
cmp eax, ecx
je 0x420735
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x20c]
lea edx, [esp + 0x210]
cmp eax, edx
je 0x420750
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x42c]
lea ecx, [esp + 0x430]
cmp eax, ecx
je 0x42076b
push eax
call fcn.0048f6ed
add esp, 4
mov byte [esp + 0x65c], 0xa
mov eax, dword [esp + 0x53c]
lea edx, [esp + 0x540]
cmp eax, edx
je 0x42078e
push eax
call fcn.0048f6ed
add esp, 4
test ebp, ebp
je 0x4208f3
mov ecx, dword [esp + 0x60]
cmp ecx, 1
mov ebx, dword [ebp + 4]
mov esi, dword [ebp + 8]
jle 0x4207ac
mov eax, ebx
cdq
idiv ecx
mov ebx, eax
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
lea ecx, [ebx + eax]
cmp ecx, dword [edx + 8]
mov dword [esp + 0x60], ecx
jle 0x4207d8
cmp eax, dword [edx]
jle 0x4207d8
test byte [esp + 0x684], 0x20
jne 0x4207d8
mov byte [esp + 0x1e], 1
jmp 0x4208fb
cmp byte [esp + 0x1d], 0
mov dword [esp + 0x38], 0
je 0x4208cd
cmp byte [esp + 0x1c], 0
je 0x4208cd
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x44]
mov dword [esp + 0x144], eax
mov eax, ecx
sub eax, esi
cmp esi, ecx
lea edi, [eax + edx]
mov dword [esp + 0x148], edi
mov edi, dword [esp + 0x60]
mov dword [esp + 0x14c], edi
lea edi, [ecx + edx]
mov dword [esp + 0x150], edi
jge 0x420845
cdq
sub eax, edx
sar eax, 1
neg eax
add edi, eax
mov dword [esp + 0x150], edi
sub edi, esi
mov dword [esp + 0x148], edi
mov ecx, dword [esp + 0x90]
xor eax, eax
mov edx, ecx
push eax
imul edx, ebx
inc ecx
push eax
imul ecx, ebx
push eax
mov dword [esp + 0x174], eax
mov dword [esp + 0x180], eax
mov dword [esp + 0x184], eax
mov dword [esp + 0x188], eax
mov dword [esp + 0x18c], eax
movzx eax, byte [ebp + 0xc]
push 0xff
push eax
mov eax, dword [ebp]
mov dword [esp + 0x180], ecx
lea ecx, [esp + 0x158]
push ecx
mov dword [esp + 0x17c], edx
mov edx, ecx
mov ecx, dword [esp + 0x38]
push edx
push eax
push ecx
lea eax, [esp + 0x198]
lea edi, [esp + 0x188]
mov dword [esp + 0x194], esi
call fcn.0041d6f0
mov ecx, dword [esp + 0x84]
add esp, 0x24
cmp esi, dword [esp + 0x28]
jle 0x4208d7
mov dword [esp + 0x28], esi
mov edx, dword [esp + 0x44]
add esi, edx
cmp dword [esp + 0x3c], ecx
mov dword [esp + 0x40], ecx
mov dword [esp + 0x64], esi
jg 0x4208fb
mov eax, ecx
mov dword [esp + 0x3c], eax
jmp 0x4208fb
mov dword [esp + 0x38], 0
mov eax, dword [esp + 0x3a4]
lea ecx, [esp + 0x3a8]
cmp eax, ecx
je 0x420916
push eax
call fcn.0048f6ed
add esp, 4
mov byte [esp + 0x65c], 6
mov eax, dword [esp + 0x5c4]
lea edx, [esp + 0x5c8]
cmp eax, edx
je 0x420939
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x38]
test eax, eax
je 0x420a1c
mov dword [esp + 0x18], eax
jmp 0x421573
add eax, 2
test byte [esp + 0x684], 0x20
mov dword [esp + 0x18], eax
jne case.0x41faaf.100
mov byte [esp + 0x1e], 1
jmp case.0x41faaf.100
mov ecx, dword [esp + 0x34]
add eax, 2
cmp edi, dword [ecx]
mov dword [esp + 0x18], eax
jle 0x420981
mov byte [esp + 0x1e], 1
movzx ecx, word [eax]
test cx, cx
jbe 0x4209a5
mov esi, dword [sym.imp.USER32.dll_CharNextW]
nop
cmp cx, 0x20
ja 0x4209a5
push eax
call esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x420990
push 0xa
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.004a165d
add esp, 0xc
mov edi, eax
push edi
lea esi, [esp + 0x54]
call fcn.00401130
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x10]
add ecx, dword [eax]
mov eax, dword [esp + 0x18]
add edi, ecx
cmp dword [esp + 0x28], edi
jg case.0x41faaf.100
mov dword [esp + 0x28], edi
jmp case.0x41faaf.100
add eax, 2
mov dword [esp + 0x18], eax
mov byte [esp + 0x1f], 1
jmp case.0x41faaf.100
add eax, 2
cmp byte [esp + 0x27], 0
mov dword [esp + 0x18], eax
sete cl
cmp byte [esp + 0x1d], 0
mov byte [esp + 0x27], cl
je case.0x41faaf.100
cmp byte [esp + 0x1c], 0
je case.0x41faaf.100
test cl, cl
je 0x420a57
mov edx, dword [esp + 0x20]
push 2
push edx
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
mov esi, dword [sym.imp.USER32.dll_CharNextW]
test cx, cx
je 0x420a4b
mov edi, edi
cmp cx, 0x3e
je 0x420a4b
cmp cx, 0x7d
je 0x420a4b
push eax
call esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jne 0x420a30
push eax
call esi
mov dword [esp + 0x18], eax
jmp 0x421573
mov eax, dword [esp + 0x20]
push 1
push eax
jmp 0x420a16
mov edi, dword [esp + 0x4c]
add eax, 2
mov dword [esp + 0x18], eax
mov eax, edi
call fcn.00407460
mov ecx, dword [esp + 0x70]
test ecx, ecx
jle 0x420a90
lea eax, [ecx - 1]
test eax, eax
jl 0x420a8e
cmp eax, ecx
jge 0x420a8e
mov ecx, dword [esp + 0x6c]
mov eax, dword [ecx + eax*4]
jmp 0x420a90
xor eax, eax
cmp byte [eax + 0x8d], 0
jne 0x420a1c
movzx ebx, byte [eax + 0x8e]
movzx ecx, byte [eax + 0x8c]
mov ebp, dword [eax + 0x88]
mov esi, dword [eax + 4]
push ebx
push 1
push ecx
push ebp
push esi
push edi
mov byte [esp + 0x144], cl
call fcn.00407840
test eax, eax
jne 0x420ada
mov edx, dword [esp + 0x12c]
push ebx
push 1
push edx
push ebp
push esi
push edi
call fcn.00407620
push eax
mov eax, edi
call fcn.004079f0
mov edi, eax
push edi
lea esi, [esp + 0x70]
call fcn.00401130
mov eax, dword [edi]
mov ecx, dword [esp + 0x20]
push eax
lea esi, [edi + 0x90]
push ecx
mov dword [esp + 0x38], esi
call dword [sym.imp.GDI32.dll_SelectObject]
mov edi, dword [esp + 0x54]
lea eax, [edi - 1]
test eax, eax
jl 0x41fd9e
cmp eax, edi
jge 0x41fd9e
mov edx, dword [esp + 0x50]
mov edx, dword [edx + eax*4]
jmp 0x41fda0
add eax, 2
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jbe 0x420b51
cmp cx, 0x20
ja 0x420b51
push eax
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x420b38
push 0xa
lea ecx, [esp + 0x1c]
push ecx
push eax
call fcn.004a165d
add edi, eax
add esp, 0xc
cmp dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
jg 0x420a1c
mov dword [esp + 0x3c], edi
jmp 0x420a1c
add eax, 2
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jbe 0x420ba9
lea esp, [esp]
cmp cx, 0x20
ja 0x420ba9
push eax
call dword [sym.imp.USER32.dll_CharNextW]
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
ja 0x420b90
push 0xa
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.004a165d
add esp, 0xc
mov dword [esp + 0x28], eax
jmp 0x420a1c
cmp cx, 0x3c
je 0x420bd2
cmp cx, 0x7b
jne 0x420f1b
cmp word [eax + 2], 0x2f
jne 0x420f1b
add eax, 4
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
add ecx, 0xffffff9f
cmp ecx, 0x14
ja case.0x420bfa.100
movzx ecx, byte [ecx + 0x421964]
jmp dword [ecx*4 + 0x42194c]
mov edx, dword [esp + 0x88]
add eax, 2
lea ecx, [edx - 1]
mov dword [esp + 0x18], eax
test ecx, ecx
jl 0x420c29
lea edx, [esp + 0x84]
call fcn.00401230
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x674]
test edx, edx
jle 0x420c4d
lea eax, [edx - 1]
test eax, eax
jl 0x420c4b
cmp eax, edx
jge 0x420c4b
mov edx, dword [esp + 0x84]
mov eax, dword [edx + eax*4]
jmp 0x420c4d
xor eax, eax
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
or edx, ecx
mov ecx, dword [esp + 0x20]
shr eax, 0x10
movzx eax, al
shl edx, 8
or edx, eax
push edx
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
jmp 0x420ee2
mov edx, dword [esp + 0x34]
add eax, 2
cmp edi, dword [edx]
mov dword [esp + 0x18], eax
jle 0x420c8d
mov byte [esp + 0x1e], 1
mov edx, dword [esp + 0x54]
lea ecx, [edx - 1]
test ecx, ecx
jl 0x420ca9
lea edx, [esp + 0x50]
call fcn.00401230
mov edx, dword [esp + 0x54]
mov eax, dword [esp + 0x18]
lea ecx, [edx - 1]
test ecx, ecx
jl 0x420cbd
cmp ecx, edx
jge 0x420cbd
mov edx, dword [esp + 0x50]
mov edx, dword [edx + ecx*4]
jmp 0x420cbf
xor edx, edx
mov esi, dword [esp + 0x30]
mov edi, dword [esi + 0x10]
mov esi, dword [esi]
add esi, edi
add edx, esi
cmp dword [esp + 0x28], edx
jg case.0x420bfa.100
test ecx, ecx
jl 0x420cf2
cmp ecx, dword [esp + 0x54]
jge 0x420cf2
mov edx, dword [esp + 0x50]
mov ecx, dword [edx + ecx*4]
add esi, ecx
mov dword [esp + 0x28], esi
jmp case.0x420bfa.100
xor ecx, ecx
add esi, ecx
mov dword [esp + 0x28], esi
jmp case.0x420bfa.100
add eax, 2
cmp byte [esp + 0x27], 0
mov dword [esp + 0x18], eax
sete cl
cmp byte [esp + 0x1d], 0
mov byte [esp + 0x27], cl
je case.0x420bfa.100
cmp byte [esp + 0x1c], 0
je case.0x420bfa.100
test cl, cl
je 0x420d3e
mov eax, dword [esp + 0x20]
push 2
push eax
call dword [sym.imp.GDI32.dll_SetBkMode]
jmp 0x420ee2
mov ecx, dword [esp + 0x20]
push 1
push ecx
call dword [sym.imp.GDI32.dll_SetBkMode]
jmp 0x420ee2
mov edx, dword [esp + 0x78]
cmp ebp, dword [edx]
jge 0x420d97
cmp byte [esp + 0x1c], 0
jne 0x420d8f
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x10]
add ecx, dword [eax]
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x94]
add ecx, ebx
push ecx
push edi
mov ecx, ebp
push edx
shl ecx, 4
add ecx, dword [esp + 0xb0]
push eax
push ecx
call dword [sym.imp.USER32.dll_SetRect]
inc ebp
mov dword [esp + 0x80], ebp
mov edx, dword [esp + 0x88]
lea ecx, [edx - 1]
test ecx, ecx
jl 0x420db8
lea edx, [esp + 0x84]
call fcn.00401230
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x674]
test edx, edx
jle 0x420ddc
lea eax, [edx - 1]
test eax, eax
jl 0x420dda
cmp eax, edx
jge 0x420dda
mov edx, dword [esp + 0x84]
mov eax, dword [edx + eax*4]
jmp 0x420ddc
xor eax, eax
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
or edx, ecx
mov ecx, dword [esp + 0x20]
shr eax, 0x10
movzx eax, al
shl edx, 8
or edx, eax
push edx
push ecx
call dword [sym.imp.GDI32.dll_SetTextColor]
mov eax, dword [esp + 0x18]
mov byte [esp + 0x2f], 0
mov edx, dword [esp + 0x70]
add eax, 2
lea ecx, [edx - 1]
mov dword [esp + 0x18], eax
test ecx, ecx
jl 0x420e2b
lea edx, [esp + 0x6c]
call fcn.00401230
mov edx, dword [esp + 0x70]
lea eax, [edx - 1]
test eax, eax
jl 0x420e41
cmp eax, edx
jge 0x420e41
mov edx, dword [esp + 0x6c]
mov esi, dword [edx + eax*4]
test esi, esi
jne 0x420e4c
mov eax, dword [esp + 0x4c]
call fcn.00407460
mov esi, eax
mov eax, dword [esp + 0x30]
cmp byte [eax + 0x34], 0
je 0x420e88
cmp byte [esi + 0x8e], 0
jne 0x420e88
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0xb4]
push ecx
push 0x20
push 0x20
push edx
call dword [sym.imp.GDI32.dll_GetCharABCWidthsW]
mov eax, dword [esp + 0xbc]
cdq
sub eax, edx
sar eax, 1
add edi, eax
mov dword [esp + 0x40], edi
mov eax, dword [esi]
mov ecx, dword [esp + 0x20]
push eax
lea edi, [esi + 0x90]
push ecx
mov dword [esp + 0x38], edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, dword [esp + 0x54]
lea eax, [esi - 1]
test eax, eax
jl 0x420eb8
cmp eax, esi
jge 0x420eb8
mov edx, dword [esp + 0x50]
mov ecx, dword [edx + eax*4]
jmp 0x420eba
xor ecx, ecx
mov edx, dword [edi + 0x10]
mov edi, dword [edi]
add edx, edi
add ecx, edx
cmp dword [esp + 0x28], ecx
jg 0x420ee2
test eax, eax
jl 0x420eda
cmp eax, esi
jge 0x420eda
mov ecx, dword [esp + 0x50]
mov eax, dword [ecx + eax*4]
jmp 0x420edc
xor eax, eax
add edx, eax
mov dword [esp + 0x28], edx
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
mov esi, dword [sym.imp.USER32.dll_CharNextW]
test cx, cx
je 0x420f0f
cmp cx, 0x3e
je 0x420f0f
cmp cx, 0x7d
je 0x420f0f
push eax
call esi
mov dword [esp + 0x18], eax
movzx ecx, word [eax]
test cx, cx
jne 0x420ef4
push eax
call esi
mov dword [esp + 0x18], eax
jmp 0x421573
cmp cx, 0x3c
jne 0x420fa5
cmp word [eax + 4], 0x3e
jne 0x420fa5
movzx ebp, word [eax + 2]
lea esi, [eax + 2]
cmp bp, 0x7b
je 0x420f43
cmp bp, 0x7d
jne 0x420fa5
lea edx, [esp + 0x134]
push edx
push 1
push esi
mov esi, dword [esp + 0x2c]
xor eax, eax
push esi
mov dword [esp + 0x144], eax
mov dword [esp + 0x148], eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp byte [esp + 0x1d], 0
je 0x420f99
cmp byte [esp + 0x1c], 0
je 0x420f99
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
push 1
add eax, 2
push eax
mov eax, dword [esp + 0x38]
sub ecx, dword [eax + 0x10]
sub ecx, dword [eax]
add ecx, ebx
push ecx
push edi
push esi
call dword [sym.imp.GDI32.dll_TextOutW]
add edi, dword [esp + 0x134]
jmp 0x42102e
cmp cx, 0x7b
jne 0x42104c
cmp word [eax + 4], 0x7d
jne 0x42104c
movzx ebp, word [eax + 2]
lea esi, [eax + 2]
cmp bp, 0x3c
je 0x420fd1
cmp bp, 0x3e
jne 0x42104c
lea edx, [esp + 0x13c]
push edx
push 1
push esi
mov esi, dword [esp + 0x2c]
xor eax, eax
push esi
mov dword [esp + 0x14c], eax
mov dword [esp + 0x150], eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp byte [esp + 0x1d], 0
je 0x421027
cmp byte [esp + 0x1c], 0
je 0x421027
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x7c]
push 1
add eax, 2
push eax
mov eax, dword [esp + 0x38]
sub ecx, dword [eax + 0x10]
sub ecx, dword [eax]
add ecx, ebx
push ecx
push edi
push esi
call dword [sym.imp.GDI32.dll_TextOutW]
add edi, dword [esp + 0x13c]
cmp dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
jg 0x42103c
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0x18]
add eax, 6
mov dword [esp + 0x18], eax
jmp 0x421573
cmp cx, 0x20
jne 0x4210d2
mov esi, dword [esp + 0x20]
lea edx, [esp + 0x110]
push edx
push 1
xor eax, eax
push 0x8086b0
push esi
mov dword [esp + 0x120], eax
mov dword [esp + 0x124], eax
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp byte [esp + 0x1d], 0
je 0x4210ad
cmp byte [esp + 0x1c], 0
je 0x4210ad
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x7c]
sub ecx, dword [eax + 0x10]
push 1
sub ecx, dword [eax]
push 0x8086b0
add ecx, ebx
push ecx
push edi
push esi
call dword [sym.imp.GDI32.dll_TextOutW]
add edi, dword [esp + 0x110]
cmp dword [esp + 0x3c], edi
mov dword [esp + 0x40], edi
jg 0x4210c2
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0x18]
add eax, 2
mov dword [esp + 0x18], eax
jmp 0x421573
mov dword [esp + 0xa8], edi
xor edi, edi
mov dword [esp + 0xac], ebx
xor ebp, ebp
xor ebx, ebx
cmp byte [esp + 0x1f], 0
mov dword [esp + 0x38], edi
mov dword [esp + 0x60], edi
mov esi, eax
mov dword [esp + 0x9c], edi
mov dword [esp + 0xa0], edi
jne 0x42110b
cmp word [eax], 0x3c
je 0x421111
cmp word [eax], 0x7b
jne 0x42111b
mov ebp, 1
lea esi, [eax + 2]
mov ebx, ebp
movzx ecx, word [esi]
cmp cx, di
je 0x4212b7
jmp 0x421130
cmp cx, 0xa
je 0x4212b7
cmp byte [esp + 0x1f], 0
je 0x421175
cmp cx, 0x3c
je 0x42114d
cmp cx, 0x7b
jne 0x421189
cmp word [esi + 2], 0x2f
jne 0x421189
cmp word [esi + 4], 0x72
jne 0x421189
movzx ecx, word [esi + 6]
cmp cx, 0x3e
je 0x42116b
cmp cx, 0x7d
jne 0x421189
mov byte [esp + 0x1f], 0
jmp 0x4212b7
cmp cx, 0x3c
je 0x4212b7
cmp cx, 0x7b
je 0x4212b7
push esi
call dword [sym.imp.USER32.dll_CharNextW]
mov ecx, dword [esp + 0x40]
mov edi, eax
mov eax, dword [esp + 0x30]
mov eax, dword [eax + 0x18]
inc ebp
imul eax, ebp
mov edx, edi
sub edx, esi
sar edx, 1
add ebx, edx
lea edx, [eax + ecx]
mov ecx, dword [esp + 0x34]
cmp edx, dword [ecx + 8]
mov dword [esp + 0x9c], eax
jl 0x4211dc
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0x9c]
push edx
push ebx
push eax
push ecx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
add edx, eax
cmp edx, dword [ecx + 8]
jg 0x42123a
movzx eax, word [esi]
cmp ax, 0x61
jb 0x4211fa
cmp ax, 0x7a
jbe 0x42120e
cmp ax, 0x41
jb 0x421206
cmp ax, 0x5a
jbe 0x42120e
mov dword [esp + 0x38], ebp
mov dword [esp + 0x60], ebx
cmp ax, 0x20
jne 0x42121c
mov dword [esp + 0x38], ebp
mov dword [esp + 0x60], ebx
push esi
call dword [sym.imp.USER32.dll_CharNextW]
mov esi, eax
movzx ecx, word [esi]
mov eax, dword [esp + 0x18]
test cx, cx
jne 0x421130
jmp 0x4212b7
mov edx, dword [esp + 0x40]
add eax, edx
cmp eax, dword [ecx + 8]
jle 0x421250
cmp edx, dword [ecx]
je 0x421250
sub edi, esi
sar edi, 1
dec ebp
sub ebx, edi
mov ecx, dword [esp + 0x684]
test cl, 0x10
je 0x42126a
mov eax, dword [esp + 0x38]
test eax, eax
jle 0x42126a
mov ebx, dword [esp + 0x60]
mov ebp, eax
test ecx, 0x8000
je 0x4212a4
test ebp, ebp
jle 0x4212a4
mov eax, dword [esp + 0x18]
mov edi, dword [sym.imp.USER32.dll_CharPrevW]
push esi
push eax
call edi
dec ebp
test ebp, ebp
jle 0x421291
mov ecx, dword [esp + 0x18]
push eax
push ecx
call edi
mov edx, dword [esp + 0x34]
sub esi, eax
mov eax, dword [edx + 8]
sar esi, 1
sub ebx, esi
mov dword [esp + 0x40], eax
mov edx, eax
cmp dword [esp + 0x3c], edx
mov eax, dword [esp + 0x18]
mov byte [esp + 0x1e], 1
jg 0x4212b7
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x20]
lea ecx, [esp + 0x9c]
push ecx
push ebx
push eax
push edx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32W]
cmp byte [esp + 0x1d], 0
je 0x4213a7
cmp byte [esp + 0x1c], 0
je 0x4213a7
mov ecx, dword [esp + 0x684]
mov eax, ecx
and eax, 0x20
jne 0x421319
cmp dword [esp + 0x120], eax
je 0x421319
mov edi, dword [esp + 0x34]
mov eax, dword [edi + 8]
sub eax, dword [esp + 0x9c]
mov esi, dword [esp + 0xa8]
sub eax, dword [edi]
cdq
sub eax, edx
sar eax, 1
add esi, eax
jmp 0x421348
test eax, eax
jne 0x42133d
test cl, 2
je 0x42133d
mov edi, dword [esp + 0x34]
mov eax, dword [edi + 8]
sub eax, dword [esp + 0x9c]
mov esi, dword [esp + 0xa8]
sub eax, dword [edi]
add esi, eax
jmp 0x421348
mov edi, dword [esp + 0x34]
mov esi, dword [esp + 0xa8]
mov ebp, dword [esp + 0xac]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
mov edx, ebp
sub edx, dword [eax + 0x10]
push ebx
sub edx, dword [eax]
mov eax, dword [esp + 0x24]
add edx, dword [esp + 0x80]
push ecx
push edx
push esi
push eax
call dword [sym.imp.GDI32.dll_TextOutW]
mov ecx, dword [esp + 0x40]
cmp ecx, dword [edi + 8]
jl 0x4213a7
test dword [esp + 0x684], 0x8000
je 0x4213a7
mov edx, dword [esp + 0x9c]
mov eax, dword [esp + 0x20]
push 3
push 0x8086b4
push ebp
add esi, edx
push esi
push eax
call dword [sym.imp.GDI32.dll_TextOutW]
mov eax, dword [esp + 0x40]
add eax, dword [esp + 0x9c]
cmp dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
jg 0x4213c0
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x18]
lea eax, [ecx + ebx*2]
mov dword [esp + 0x18], eax
jmp 0x421573
cmp cx, 0xa
jne 0x4213dd
add eax, 2
mov dword [esp + 0x18], eax
test dl, dl
je 0x4213e6
mov byte [esp + 0x1e], 0
cmp byte [esp + 0x1c], 0
jne 0x4214ac
cmp byte [esp + 0x2f], 0
je 0x421464
mov edx, dword [esp + 0x78]
cmp ebp, dword [edx]
jge 0x421464
cmp edi, esi
mov ecx, edi
jl 0x42140c
mov ecx, esi
mov edx, dword [esp + 0x28]
add edx, ebx
push edx
mov edx, dword [esp + 0x98]
push ecx
mov ecx, dword [esp + 0xa0]
mov eax, ebp
shl eax, 4
add eax, dword [esp + 0xac]
push ecx
push edx
push eax
call dword [sym.imp.USER32.dll_SetRect]
mov ecx, dword [esp + 0xb0]
inc ebp
mov eax, ebp
imul eax, eax, 0x84
mov edx, dword [eax + ecx - 0x84]
lea esi, [eax + ecx]
push 0xffffffffffffffff
push edx
mov dword [esp + 0x88], ebp
call fcn.00401410
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x68]
cmp edi, ebp
jge 0x421491
mov ecx, dword [esp + 0x28]
lea esi, [ecx + ebx]
mov ecx, dword [esp + 0xa4]
mov edx, edi
shl edx, 4
lea edx, [edx + ecx + 0xc]
mov ecx, ebp
sub ecx, edi
mov dword [edx], esi
add edx, 0x10
sub ecx, 1
jne 0x421487
mov cl, byte [esp + 0x1d]
test cl, cl
je 0x4214d0
mov dl, byte [esp + 0x5e]
mov ebp, edi
mov byte [esp + 0x2f], dl
mov dword [esp + 0x80], ebp
jmp 0x4214d0
mov cl, byte [esp + 0x2f]
test cl, cl
je 0x4214c4
mov edx, dword [esp + 0x78]
cmp ebp, dword [edx]
jge 0x4214c4
inc ebp
mov dword [esp + 0x80], ebp
mov byte [esp + 0x5e], cl
mov cl, byte [esp + 0x1d]
mov dword [esp + 0x68], ebp
test byte [esp + 0x684], 0x20
je 0x4214f5
test cl, cl
je 0x421710
cmp byte [esp + 0x1c], 0
jne 0x421710
mov ebx, dword [esp + 0x44]
mov cl, byte [esp + 0x1d]
test cl, cl
je 0x421505
cmp byte [esp + 0x1c], 0
sete dl
mov byte [esp + 0x1c], dl
cmp byte [esp + 0x1c], 0
mov esi, dword [esp + 0x34]
mov edi, dword [esi]
mov dword [esp + 0x40], edi
jne 0x42151e
add ebx, dword [esp + 0x28]
mov dword [esp + 0x44], ebx
cmp ebx, dword [esi + 0xc]
jle 0x42152f
test cl, cl
jne 0x421710
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x54]
lea ecx, [edx - 1]
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], ebx
test ecx, ecx
jl 0x421555
cmp ecx, edx
jge 0x421555
mov edx, dword [esp + 0x50]
mov esi, dword [edx + ecx*4]
jmp 0x421557
xor esi, esi
mov edx, dword [esp + 0x30]
mov ecx, dword [edx + 0x10]
add ecx, dword [edx]
add ecx, esi
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x34]
cmp edi, dword [ecx + 8]
jge 0x421709
mov edx, dword [esp + 0x40]
mov ecx, dword [esp + 0x34]
cmp edx, dword [ecx + 8]
jge 0x42158e
movzx ecx, word [eax]
cmp cx, 0xa
je 0x42158e
test cx, cx
jne 0x421593
mov byte [esp + 0x1e], 1
cmp byte [esp + 0x1d], 0
je 0x4216fd
cmp byte [esp + 0x1e], 0
je 0x4216fd
cmp byte [esp + 0x1c], 0
jne 0x42184b
mov edi, dword [esp + 0x108]
push edi
lea esi, [esp + 0x70]
call fcn.004010e0
mov eax, dword [esp + 0x104]
mov ebx, dword [esp + 0x6c]
lea edx, [edi*4]
push edx
push eax
push ebx
call fcn.004909c0
mov edi, dword [esp + 0x108]
add esp, 0xc
push edi
lea esi, [esp + 0x88]
call fcn.004010e0
mov edx, dword [esp + 0xf8]
mov ebp, dword [esp + 0x84]
lea ecx, [edi*4]
push ecx
push edx
push ebp
call fcn.004909c0
mov edi, dword [esp + 0xfc]
add esp, 0xc
push edi
lea esi, [esp + 0x54]
call fcn.004010e0
mov ecx, dword [esp + 0xec]
mov edx, dword [esp + 0x50]
lea eax, [edi*4]
push eax
push ecx
push edx
call fcn.004909c0
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0xf0]
mov dl, byte [esp + 0x6b]
mov dword [esp + 0x88], eax
mov al, byte [esp + 0x56]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x94]
add esp, 0xc
mov byte [esp + 0x27], al
mov eax, dword [esp + 0x674]
mov byte [esp + 0x1f], dl
test ecx, ecx
jle 0x42168f
lea eax, [ecx - 1]
test eax, eax
jl 0x42168d
cmp eax, ecx
jge 0x42168d
mov eax, dword [ebp + eax*4]
jmp 0x42168f
xor eax, eax
mov esi, dword [esp + 0x20]
mov ecx, eax
shr ecx, 8
movzx edx, cl
movzx ecx, al
shl ecx, 8
shr eax, 0x10
or edx, ecx
movzx eax, al
shl edx, 8
or edx, eax
push edx
push esi
call dword [sym.imp.GDI32.dll_SetTextColor]
mov ecx, dword [esp + 0x70]
lea eax, [ecx - 1]
test eax, eax
jl 0x4216cc
cmp eax, ecx
jge 0x4216cc
mov eax, dword [ebx + eax*4]
test eax, eax
jne 0x4216d5
mov eax, dword [esp + 0x4c]
call fcn.00407460
mov edx, dword [eax]
push edx
lea ecx, [eax + 0x90]
push esi
mov dword [esp + 0x38], ecx
call dword [sym.imp.GDI32.dll_SelectObject]
cmp byte [esp + 0x4a], 0
je 0x4216f9
push 2
push esi
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x18]
movzx ecx, word [eax]
test cx, cx
jne 0x41fa10
mov ebp, dword [esp + 0x80]
test dword [esp + 0x684], 0x400
mov eax, dword [esp + 0x78]
mov dword [eax], ebp
je 0x42174f
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x44]
lea eax, [ecx + edx]
mov ecx, dword [esp + 0x64]
cmp ecx, eax
jle 0x421738
mov eax, ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x3c]
mov dword [ecx + 0xc], eax
mov eax, dword [ecx + 8]
cmp eax, edx
jl 0x42174c
mov eax, edx
mov dword [ecx + 8], eax
cmp byte [esp + 0x1d], 0
je 0x421769
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0x20]
push eax
push ecx
call dword [sym.imp.GDI32.dll_SelectClipRgn]
mov edx, dword [esp + 0xe0]
mov esi, dword [sym.imp.GDI32.dll_DeleteObject]
push edx
call esi
mov eax, dword [esp + 0x130]
push eax
call esi
mov ecx, dword [esp + 0x128]
mov edx, dword [esp + 0x20]
push ecx
push edx
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0xec]
test eax, eax
je 0x4217aa
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0xf8]
test eax, eax
je 0x4217be
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x104]
test eax, eax
je 0x4217d2
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x4b4]
lea ecx, [esp + 0x4b8]
cmp eax, ecx
je 0x4217ed
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x50]
test eax, eax
je 0x4217fe
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x84]
test eax, eax
je 0x421812
push eax
call fcn.0048f6ed
add esp, 4
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x421823
push eax
call fcn.0048f6ed
add esp, 4
mov ecx, dword [esp + 0x654]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x638]
xor ecx, esp
call fcn.0048d1f2
add esp, 0x64c
ret
mov edi, dword [esp + 0x70]
push edi
lea esi, [esp + 0x108]
call fcn.004010e0
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x104]
lea eax, [edi*4]
push eax
push ecx
push edx
call fcn.004909c0
mov edi, dword [esp + 0x94]
add esp, 0xc
push edi
lea esi, [esp + 0xfc]
call fcn.004010e0
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0xf8]
lea eax, [edi*4]
push eax
push ecx
push edx
call fcn.004909c0
mov edi, dword [esp + 0x60]
add esp, 0xc
push edi
lea esi, [esp + 0xf0]
call fcn.004010e0
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0xec]
lea eax, [edi*4]
push eax
push ecx
push edx
call fcn.004909c0
mov eax, dword [esp + 0x24]
mov cl, byte [esp + 0x33]
mov dl, byte [esp + 0x2b]
add esp, 0xc
mov dword [esp + 0xe4], eax
mov byte [esp + 0x4a], cl
mov byte [esp + 0x5f], dl
jmp 0x4216fd