Function at 0x455dd9
Capabilities:
Check os version

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x138
mov eax, dword [0x4dd52c]
mov ecx, dword [ebp + 0x20]
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0xd0], eax
mov eax, dword [ebp + 0x18]
push ebx
mov ebx, dword [ebp + 0x14]
mov dword [ebp - 0xa4], eax
mov eax, dword [ebp + 0x24]
push esi
mov esi, dword [ebp + 8]
mov dword [ebp - 0x94], eax
xor eax, eax
xor edx, edx
push edi
mov edi, dword [ebp + 0xc]
inc eax
cmp edi, edx
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xf4], eax
mov dword [ebp - 0xa8], edx
mov dword [ebp - 0xb4], edx
je 0x457580
cmp edi, eax
mov dword [ebp - 0xc0], ecx
jbe 0x455e52
mov ecx, dword [ebp + 0x1c]
test byte [ecx], al
mov dword [ebp - 0xdc], eax
je 0x455e58
mov dword [ebp - 0xdc], edx
mov eax, edi
shl eax, 2
push eax
push edx
mov dword [ebp - 0xe8], edx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
test eax, eax
mov dword [ebp - 0xcc], eax
je 0x457580
mov dword [ebp - 0xbc], eax
add edi, edi
add eax, edi
push ebx
mov dword [ebp - 0xec], eax
call sub.GDI32.dll_FONTOBJ_pifi
test eax, eax
mov dword [ebp - 0xd4], eax
jne 0x455ea0
xor esi, esi
jmp 0x457572
push ebx
call sub.GDI32.dll_FONTOBJ_pxoGetXform
test eax, eax
mov dword [ebp - 0xc4], eax
je 0x455e99
mov eax, dword [ebp - 0xd4]
mov ebx, dword [eax + 0x10]
add ebx, eax
push 0x80
push ebx
lea eax, [ebp - 0x8c]
push eax
call fcn.004ac4ed
and dword [ebp - 0xc8], 0
cmp word [esi + 0x14c], 1
mov eax, dword [ebp + 0x1c]
jne 0x455eea
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0xc8], ecx
cmp dword [eax + 0xc], 0
jne 0x4572a1
push dword [ebp - 0xb0]
push esi
call fcn.0047b432
push eax
push dword [ebp - 0xb0]
push esi
call fcn.0047b445
mov ebx, eax
xor eax, eax
cmp dword [ebp - 0xc8], eax
mov dword [ebp - 0xa8], ebx
jne 0x45646b
cmp word [esi + 0x362], ax
jne 0x456149
cmp dword [esi + 0x51d0], eax
jbe 0x45646b
cmp ebx, eax
je 0x455f88
cmp dword [ebx + 0x22a0], 1
jne 0x455f88
lea ecx, [esi + 0x50b4]
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x455f54
push 0
sub eax, edi
push eax
push ecx
lea eax, [esi + 0x5230]
push eax
call fcn.004b6aed
push ebx
lea eax, [ebp - 0x8c]
push eax
push dword [ebp - 0xb0]
push esi
call fcn.0047cc5c
and dword [ebx + 0x22a0], 0
and dword [ebp - 0xa0], 0
cmp dword [ebp + 0xc], 0
mov ebx, dword [ebp - 0xd0]
jbe 0x45646b
cmp dword [ebp - 0xa0], 0
jne 0x455fca
lea ecx, [esi + 0x50b4]
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x455fb3
sub eax, edi
push eax
push ecx
lea eax, [esi + 0x5230]
push eax
call fcn.004b6ab8
mov ecx, dword [ebx]
xor eax, eax
mov dword [ebp - 0xe0], ecx
mov ecx, dword [ebp - 0xa8]
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0x98], eax
add ecx, 0x12a2
cmp word [ecx - 2], 0xffff
jne 0x455ffb
cmp word [ecx], 0xffff
je 0x456005
inc eax
inc ecx
inc ecx
cmp eax, 0x7ff
jb 0x455fec
sub eax, dword [esi + 0x51d0]
push 0
pop edx
je 0x45603e
mov ecx, dword [ebp - 0xa8]
add ecx, 0x12a0
movzx edi, word [ecx]
cmp dword [ebp - 0xe0], edi
je 0x456030
inc edx
inc ecx
inc ecx
cmp edx, eax
jb 0x45601c
jmp 0x45603e
xor eax, eax
inc eax
cmp dword [ebp + 0xc], eax
je 0x45603e
mov dword [ebp - 0xb8], eax
mov eax, dword [ebp - 0xd0]
xor edx, edx
cmp dword [ebp - 0xa0], edx
jbe 0x45606e
mov ecx, dword [ebp - 0xa0]
mov edi, dword [ebp - 0xe0]
cmp edi, dword [eax]
jne 0x456068
mov dword [ebp - 0x98], 1
add eax, 0x10
dec ecx
jne 0x456054
mov eax, dword [ebp - 0xc0]
mov ax, word [eax]
add dword [ebp - 0xc0], 2
cmp dword [ebp - 0xb8], edx
mov word [esi + 0x51d4], ax
jne 0x4560c5
cmp dword [ebp - 0x98], edx
jne 0x4560c5
mov eax, dword [ebp - 0xa4]
push dword [eax + 4]
lea eax, [ebp - 0x8c]
push dword [ebp - 0xa8]
push dword [ebx]
push dword [ebp - 0xa0]
push dword [ebp - 0xc4]
push eax
push dword [ebp - 0xb0]
push esi
call fcn.0047d8fe
mov edi, dword [ebp + 0xc]
lea eax, [edi - 1]
cmp dword [ebp - 0xa0], eax
jne 0x4560df
lea eax, [esi + 0x5230]
push eax
call fcn.004b6d6d
lea eax, [ebp - 0x99]
push eax
lea eax, [ebp - 0x9a]
push eax
push ebx
push dword [ebp - 0xa8]
push esi
call fcn.004559d3
test eax, eax
mov eax, dword [ebp - 0xbc]
jne 0x456117
mov byte [eax], 0
inc eax
mov byte [eax], 0
mov dword [ebp - 0xe8], 1
jmp 0x456128
mov cl, byte [ebp - 0x9a]
mov byte [eax], cl
mov cl, byte [ebp - 0x99]
inc eax
mov byte [eax], cl
inc eax
inc dword [ebp - 0xa0]
add ebx, 0x10
cmp dword [ebp - 0xa0], edi
mov dword [ebp - 0xbc], eax
jb 0x455f9f
jmp 0x45646b
cmp dword [esi + 0x51d0], eax
jbe 0x45646b
cmp ebx, eax
je 0x45619c
cmp dword [ebx + 0x22a0], 1
jne 0x45619c
lea ecx, [esi + 0x50b4]
mov eax, ecx
lea edi, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x45616d
push 0
sub eax, edi
push eax
push ecx
lea eax, [esi + 0x5230]
push eax
call fcn.004b6aed
lea eax, [ebp - 0x8c]
push eax
push esi
call fcn.0047cb87
and dword [ebx + 0x22a0], 0
xor eax, eax
cmp dword [ebp + 0xc], eax
mov dword [ebp - 0xa0], eax
jbe 0x45646b
mov ebx, dword [ebp - 0xd0]
add ebx, 4
cmp dword [ebp - 0xa0], 0
jne 0x4561df
lea edi, [esi + 0x50b4]
mov eax, edi
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
test dl, dl
jne 0x4561c8
sub eax, ecx
push eax
push edi
lea eax, [esi + 0x5230]
push eax
call fcn.004b6ab8
and dword [ebp - 0xa4], 0
cmp dword [ebp - 0xb0], 0
je 0x456226
lea eax, [ebp - 0x138]
mov dword [ebp - 0xf0], eax
lea eax, [ebp - 0xf0]
push eax
lea eax, [ebx - 4]
push eax
push 1
push 1
push dword [ebp - 0xb0]
call sub.GDI32.dll_FONTOBJ_cGetGlyphs
cmp eax, 1
jne 0x455e99
mov eax, dword [ebp - 0xf0]
mov dword [ebx], eax
mov eax, dword [ebx]
mov eax, dword [eax]
mov edi, dword [eax + 8]
add edi, 0x1f
sar edi, 5
imul edi, dword [eax + 0xc]
shl edi, 2
push edi
lea ecx, [eax + 0x10]
push 0
mov dword [ebp - 0xc4], ecx
call dword [sym.imp.KERNEL32.dll_GlobalAlloc]
test eax, eax
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0xd4], eax
je 0x455e99
mov eax, dword [ebx - 4]
mov edx, dword [ebp - 0xa8]
xor ecx, ecx
mov dword [ebp - 0xe0], eax
mov dword [ebp - 0xb8], ecx
mov dword [ebp - 0x98], ecx
lea eax, [edx + 0x12a2]
cmp word [eax - 2], 0xffff
jne 0x456292
cmp word [eax], 0xffff
je 0x45629d
inc ecx
inc eax
inc eax
cmp ecx, 0x7ff
jb 0x456283
sub ecx, dword [esi + 0x51d0]
mov dword [ebp - 0x90], 0
je 0x4562e0
add edx, 0x12a0
movzx eax, word [edx]
cmp dword [ebp - 0xe0], eax
je 0x4562d2
inc dword [ebp - 0x90]
inc edx
inc edx
cmp dword [ebp - 0x90], ecx
jb 0x4562b5
jmp 0x4562e0
xor eax, eax
inc eax
cmp dword [ebp + 0xc], eax
je 0x4562e0
mov dword [ebp - 0xb8], eax
mov ecx, dword [ebp - 0xa0]
test ecx, ecx
mov eax, dword [ebp - 0xd0]
jbe 0x45630a
mov edx, dword [ebp - 0xe0]
cmp edx, dword [eax]
jne 0x456304
mov dword [ebp - 0x98], 1
add eax, 0x10
dec ecx
jne 0x4562f0
xor eax, eax
cmp dword [ebp - 0xb8], eax
jne 0x4563dd
cmp dword [ebp - 0x98], eax
jne 0x4563dd
mov ecx, dword [ebx]
mov ecx, dword [ecx]
cmp dword [ecx + 0xc], eax
mov dword [ebp - 0x98], eax
jle 0x4563a6
mov ecx, dword [ebx]
mov ecx, dword [ecx]
mov ecx, dword [ecx + 8]
add ecx, 7
xor eax, eax
test ecx, 0xfffffff8
jle 0x456375
mov ecx, dword [ebp - 0xc4]
mov cl, byte [ecx]
mov edx, dword [ebp - 0xd8]
inc dword [ebp - 0xd8]
inc dword [ebp - 0xc4]
mov byte [edx], cl
mov ecx, dword [ebx]
mov ecx, dword [ecx]
mov ecx, dword [ecx + 8]
add ecx, 7
inc eax
sar ecx, 3
cmp eax, ecx
jl 0x456347
push 4
cdq
pop ecx
idiv ecx
test edx, edx
je 0x456385
push ecx
pop eax
sub eax, edx
jmp 0x456387
xor eax, eax
test eax, eax
jle 0x456391
add dword [ebp - 0xa4], eax
inc dword [ebp - 0x98]
mov eax, dword [ebx]
mov eax, dword [eax]
mov ecx, dword [ebp - 0x98]
cmp ecx, dword [eax + 0xc]
jl 0x456333
sub edi, dword [ebp - 0xa4]
mov eax, dword [ebx]
mov eax, dword [eax]
lea ecx, [edi + 0xa]
push ecx
push dword [ebx - 4]
xor ecx, ecx
mov cx, word [eax + 8]
push ecx
xor ecx, ecx
mov cx, word [eax + 0xc]
push ecx
push dword [eax + 4]
push dword [eax]
push esi
call fcn.0047d41b
push edi
push dword [ebp - 0xd4]
push esi
call fcn.0043dbe6
push dword [ebp - 0xd4]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov edi, dword [ebp + 0xc]
lea eax, [edi - 1]
cmp dword [ebp - 0xa0], eax
jne 0x456403
lea eax, [esi + 0x5230]
push eax
call fcn.004b6d6d
lea eax, [ebp - 0x99]
push eax
lea eax, [ebp - 0x9a]
push eax
lea eax, [ebx - 4]
push eax
push dword [ebp - 0xa8]
push esi
call fcn.004559d3
test eax, eax
mov eax, dword [ebp - 0xbc]
jne 0x45643e
mov byte [eax], 0
inc eax
mov byte [eax], 0
mov dword [ebp - 0xe8], 1
jmp 0x45644f
mov cl, byte [ebp - 0x9a]
mov byte [eax], cl
mov cl, byte [ebp - 0x99]
inc eax
mov byte [eax], cl
inc eax
inc dword [ebp - 0xa0]
add ebx, 0x10
cmp dword [ebp - 0xa0], edi
mov dword [ebp - 0xbc], eax
jb 0x4561b4
cmp word [esi + 0x14a], 1
mov edi, dword [ebp - 0x94]
jne 0x456486
cmp dword [edi], 0xffffff
je 0x456486
and dword [edi], 0
cmp dword [esi + 0x1df84], 1
jne 0x4564ab
cmp dword [esi + 0x1e064], 1
jne 0x4564ab
push 8
push 0x408760
lea eax, [esi + 0x5230]
push eax
call fcn.004b6d3a
push 0
push 1
push edi
push esi
call fcn.0044aec6
push 0xfc
push esi
call fcn.0043e213
cmp word [esi + 0x362], 0
movsx eax, word [esi + 0x5e]
mov word [esi + 0x162d0], 0xfc
jne 0x45655f
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fmul dword [esi + 0x16294]
call fcn.004a9810
movsx ecx, ax
mov eax, dword [esi + 0x50ac]
imul eax, ecx
cdq
push 0x48
pop edi
idiv edi
mov edx, dword [ebp - 0xa8]
sar eax, 8
test edx, edx
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fstp dword [ebp - 0x90]
je 0x456557
fld dword [ebp - 0x90]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456557
mov eax, dword [edx + 0x14]
imul eax, ecx
cdq
push edi
pop ecx
idiv ecx
sar eax, 8
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fstp dword [ebp - 0x90]
fld dword [ebp - 0x90]
jmp 0x45659b
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fmul dword [esi + 0x16294]
call fcn.004a9810
movsx eax, ax
imul eax, dword [esi + 0x50ac]
cdq
push 0x48
pop ecx
idiv ecx
sar eax, 8
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fst dword [ebp - 0x90]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 1
jne 0x4565c3
fld dword [ebp - 0x90]
fcomp dword [0x405bb0]
fnstsw ax
test ah, 0x41
jp 0x4565c3
fld1
fstp dword [ebp - 0x90]
lea edx, [esi + 0x162fc]
lea edi, [esi + 0x50b4]
mov eax, edx
mov bl, byte [eax]
mov cl, bl
cmp bl, byte [edi]
jne 0x4565f3
test cl, cl
je 0x4565ef
mov bl, byte [eax + 1]
mov cl, bl
cmp bl, byte [edi + 1]
jne 0x4565f3
inc eax
inc eax
inc edi
inc edi
test cl, cl
jne 0x4565d1
xor eax, eax
jmp 0x4565f8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x456622
movsx eax, word [esi + 0x162fa]
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fld dword [ebp - 0x90]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4567ad
lea eax, [esi + 0x50b4]
mov ebx, 0x275
sub edx, eax
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x45662f
fld dword [ebp - 0x90]
call fcn.004a9810
cmp dword [ebp - 0xc8], 1
mov word [esi + 0x162fa], ax
jne 0x45677a
mov edi, dword [sym.imp.msvcrt.dll_strncmp]
push 7
lea eax, [ebp - 0x8c]
push 0x40a54c
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x45667f
mov ebx, 0x486c
jmp 0x45677c
push 6
lea eax, [ebp - 0x8c]
push 0x40a544
push eax
call edi
add esp, 0xc
test eax, eax
je 0x456773
push 8
lea eax, [ebp - 0x8c]
push 0x40a538
push eax
call edi
add esp, 0xc
test eax, eax
je 0x456773
push 5
lea eax, [ebp - 0x8c]
push 0x40a530
push eax
call edi
add esp, 0xc
test eax, eax
je 0x45676c
push 5
lea eax, [ebp - 0x8c]
push 0x40a528
push eax
call edi
add esp, 0xc
test eax, eax
je 0x45676c
push 5
lea eax, [ebp - 0x8c]
push 0x40a520
push eax
call edi
add esp, 0xc
test eax, eax
je 0x45676c
push 5
lea eax, [ebp - 0x8c]
push 0x40a518
push eax
call edi
add esp, 0xc
test eax, eax
je 0x456765
push 5
lea eax, [ebp - 0x8c]
push 0x40a510
push eax
call edi
add esp, 0xc
test eax, eax
je 0x456765
push 6
lea eax, [ebp - 0x8c]
push 0x40a508
push eax
call edi
add esp, 0xc
test eax, eax
je 0x456765
push 0x10
lea eax, [ebp - 0x8c]
push 0x40a4f4
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x45677c
mov ebx, 0x1cc
jmp 0x45677c
mov ebx, 0x1f1
jmp 0x45677c
mov ebx, 0x116
jmp 0x45677c
mov ebx, 0x26d
jmp 0x45677c
xor ebx, ebx
lea eax, [esi + 0x50b4]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x456785
fld dword [ebp - 0x90]
push ebx
push ecx
sub eax, edx
fstp dword [esp]
push eax
lea eax, [esi + 0x50b4]
push eax
lea eax, [esi + 0x5230]
push eax
call fcn.004b74ce
fld dword [0x405bd4]
xor ebx, ebx
fld dword [esi + 0x5078]
inc ebx
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4567d3
fld dword [esi + 0x5078]
fdiv dword [esi + 0x5084]
jmp 0x4567f6
fld dword [0x405bd4]
lea ecx, [esi + 0x507c]
fld dword [ecx]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4567f4
fld dword [ecx]
fdiv dword [esi + 0x5080]
jmp 0x4567d1
fld1
fcom dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456809
fld st(0)
fchs
fstp st(1)
fld dword [0x40a4f0]
fmul st(1)
call fcn.004a9810
fld dword [esi + 0x16400]
fmul dword [0x40a4f0]
mov edi, eax
call fcn.004a9810
cmp dword [ebp - 0xc8], 0
jne 0x456881
mov cx, word [esi + 0x362]
test cx, cx
je 0x456881
cmp cx, bx
fstp st(0)
jne 0x4568d1
fld dword [0x405bb0]
fld dword [esi + 0x16400]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x4568d1
fld1
push ecx
fstp dword [esi + 0x16400]
push ecx
fld1
lea eax, [esi + 0x5230]
fstp dword [esp + 4]
fld1
fstp dword [esp]
push eax
call fcn.004b7272
jmp 0x4568d1
cmp di, ax
je 0x4568c6
lea edi, [esi + 0x1627c]
fstp dword [esi + 0x16400]
cmp dword [edi], 2
jne 0x4568a5
push 0
lea eax, [esi + 0x5230]
push eax
call fcn.004b71da
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld dword [esi + 0x16400]
lea eax, [esi + 0x5230]
fstp dword [esp]
mov dword [edi], ebx
push eax
call fcn.004b7272
jmp 0x4568c8
fstp st(0)
cmp dword [ebp - 0xc8], 0
jne 0x4568db
cmp word [esi + 0x362], 0
jne 0x456915
mov eax, dword [ebp - 0xb0]
test byte [eax + 0xd], 0x40
je 0x456915
cmp dword [esi + 0x16274], 0
jne 0x45693d
push ecx
fldz
push ecx
fstp dword [esp + 4]
fld dword [0x40a4ec]
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b72ae
mov dword [esi + 0x16274], ebx
jmp 0x45693d
cmp dword [esi + 0x16274], ebx
jne 0x45693d
push ecx
fldz
push ecx
fstp dword [esp + 4]
fldz
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b72ae
and dword [esi + 0x16274], 0
xor ecx, ecx
cmp dword [ebp - 0xc8], ecx
mov eax, 0x2000
jne 0x456955
cmp word [esi + 0x362], cx
jne 0x456984
mov edx, dword [ebp - 0xb0]
test dword [edx + 0xc], eax
je 0x456984
lea edi, [esi + 0x16278]
cmp dword [edi], ecx
jne 0x4569d7
fld dword [0x40a4e8]
push ecx
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b723e
mov dword [edi], ebx
jmp 0x4569d7
cmp word [esi + 0x362], bx
jne 0x4569b8
mov ecx, dword [ebp - 0xb0]
test dword [ecx + 0xc], eax
je 0x4569b8
call dword [sym.imp.KERNEL32.dll_GetVersion]
movzx ecx, al
cmp ecx, 5
jb 0x4569ab
cmp ah, 1
jae 0x4569d7
cmp ecx, 6
jae 0x4569d7
mov dword [ebp - 0xb4], ebx
jmp 0x4569d7
lea edi, [esi + 0x16278]
cmp dword [edi], ebx
jne 0x4569d7
push ecx
fldz
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b723e
and dword [edi], 0
cmp word [esi + 0x362], 0
push 3
pop edi
je 0x456a10
cmp dword [ebp - 0xc8], ebx
je 0x456a10
lea edi, [esi + 0x1627c]
cmp dword [edi], 2
jne 0x456d9e
push 0
lea eax, [esi + 0x5230]
push eax
call fcn.004b71da
mov dword [edi], ebx
jmp 0x456d9e
cmp word [esi + 0x684], bx
jne 0x456a4a
cmp dword [esi + 0x19758], 0
jne 0x456a4a
movsx eax, word [esi + 0x682]
mov dword [ebp - 0x94], eax
push ecx
lea eax, [esi + 0x5230]
fild dword [ebp - 0x94]
fstp dword [esp]
push eax
call fcn.004b720a
jmp 0x456d9e
fld dword [0x405bd4]
fld dword [esi + 0x5078]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x456a92
fld dword [esi + 0x507c]
fdiv dword [esi + 0x5078]
fld1
fpatan
fmul qword [0x40a4e0]
fmul qword [0x40a4d8]
call fcn.004a9810
mov dword [ebp - 0x94], eax
fild dword [ebp - 0x94]
fstp dword [ebp - 0x90]
fld dword [0x405bd4]
fld dword [esi + 0x507c]
fucompp
fld dword [0x405bd4]
fnstsw ax
test ah, 0x44
jp 0x456bc6
fld dword [esi + 0x5080]
fucompp
fnstsw ax
test ah, 0x44
jp 0x456d9e
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jnp 0x456b31
fld dword [esi + 0x5084]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jnp 0x456b31
mov eax, dword [esi + 0x1627c]
cmp eax, 2
jne 0x456b05
push 0
lea eax, [esi + 0x5230]
push eax
call fcn.004b71da
jmp 0x456b26
cmp eax, edi
jne 0x456b26
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld dword [esi + 0x16400]
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
mov dword [esi + 0x1627c], ebx
jmp 0x456d9e
cmp dword [esi + 0x1627c], 2
fld1
mov eax, dword [esi + 0x16400]
fstp dword [ebp - 0x94]
mov dword [ebp - 0xd4], eax
jne 0x456b5c
push 0
lea eax, [esi + 0x5230]
push eax
call fcn.004b71da
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456b7d
fld dword [esi + 0x16400]
fchs
fstp dword [ebp - 0xd4]
fld dword [esi + 0x5084]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456b9a
mov dword [ebp - 0x94], 0xbf800000
fld dword [ebp - 0x94]
push ecx
push ecx
fstp dword [esp + 4]
lea eax, [esi + 0x5230]
fld dword [ebp - 0xd4]
fstp dword [esp]
push eax
call fcn.004b7272
mov dword [esi + 0x1627c], edi
jmp 0x456d9e
fld dword [esi + 0x5078]
fucompp
fnstsw ax
test ah, 0x44
jp 0x456c5f
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 0x41
jne 0x456c14
cmp dword [esi + 0x1627c], edi
jne 0x456c0d
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld1
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
push 0x10e
jmp 0x456c4e
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456d94
cmp dword [esi + 0x1627c], edi
jne 0x456c4c
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld1
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
push 0x5a
lea eax, [esi + 0x5230]
push eax
call fcn.004b71da
jmp 0x456d94
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 0x41
jne 0x456cb2
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 0x41
jne 0x456cb2
cmp dword [esi + 0x1627c], edi
jne 0x456caa
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld dword [esi + 0x16400]
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
fld dword [0x40a4d4]
jmp 0x456d29
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456cd8
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 0x41
je 0x456cfe
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456d31
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456d31
cmp dword [esi + 0x1627c], edi
jne 0x456d23
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld dword [esi + 0x16400]
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
fld dword [0x40a4d0]
fsub dword [ebp - 0x90]
jmp 0x456d84
fld dword [esi + 0x5078]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 0x41
jne 0x456d9e
fld dword [esi + 0x507c]
fcomp dword [0x405bd4]
fnstsw ax
test ah, 5
jp 0x456d9e
cmp dword [esi + 0x1627c], edi
jne 0x456d7c
push ecx
fld1
push ecx
fstp dword [esp + 4]
fld dword [esi + 0x16400]
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b7272
fld dword [ebp - 0x90]
fchs
push ecx
lea eax, [esi + 0x5230]
fstp dword [esp]
push eax
call fcn.004b720a
mov dword [esi + 0x1627c], 2
mov edi, dword [ebp - 0xd0]
lea ecx, [edi + 0xc]
mov dword [ebp - 0x98], ecx
movsx ecx, word [ecx]
push ecx
lea ebx, [edi + 8]
xor ecx, ecx
mov cx, word [ebx]
lea eax, [esi + 0x5230]
mov dword [ebp - 0xd8], ebx
push ecx
push eax
call fcn.004b7420
cmp dword [ebp - 0xc8], 1
push 2
setne al
add al, 0xc8
mov byte [ebp - 0xc], al
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push 2
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
cmp dword [ebp - 0xc8], 1
jne 0x456e2c
cmp dword [ebp + 0xc], 0
jbe 0x456e50
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0xc0]
mov dword [ebp - 0x94], eax
movsx eax, word [edi]
push 1
push eax
push esi
call fcn.0043dcbe
inc edi
inc edi
dec dword [ebp - 0x94]
jne 0x456e14
jmp 0x456e50
cmp dword [ebp + 0xc], 0
jbe 0x456e50
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x94], eax
push 2
push dword [edi]
push esi
call fcn.0043dcbe
add edi, 0x10
dec dword [ebp - 0x94]
jne 0x456e3b
push 0xab
lea eax, [esi + 0x5230]
push eax
call fcn.004b78f0
mov edi, dword [ebp - 0x94]
xor ecx, ecx
inc ecx
cmp dword [ebp + 0xc], ecx
jbe 0x456ff7
mov eax, dword [ebx]
mov dword [ebp - 0xa4], ebx
cmp ecx, dword [ebp + 0xc]
mov dword [ebp - 0xc4], eax
je 0x456e9d
add dword [ebp - 0xa4], 0x10
mov eax, dword [ebp - 0xa4]
mov eax, dword [eax]
mov edi, eax
sub edi, dword [ebp - 0xc4]
test edi, edi
jne 0x456eac
inc ecx
cmp ecx, dword [ebp + 0xc]
jbe 0x456e7b
jmp 0x456f31
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xcb
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push 2
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
mov dword [ebp - 0x90], 1
mov ecx, dword [ebp - 0x90]
cmp ecx, dword [ebp + 0xc]
mov eax, dword [ebx]
je 0x456ee9
add ebx, 0x10
mov edi, dword [ebx]
sub edi, eax
test edi, edi
jl 0x456ef8
mov eax, 0x7fff
cmp edi, eax
jl 0x456f03
jmp 0x456f01
mov eax, 0xffff8000
cmp edi, eax
jg 0x456f03
mov edi, eax
push 2
push edi
push esi
call fcn.0043dcbe
inc dword [ebp - 0x90]
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp + 0xc]
jbe 0x456ed5
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0xaf
call fcn.0043dbe6
xor edx, edx
inc edx
cmp dword [ebp + 0xc], edx
jb 0x456ff7
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx]
cmp edx, dword [ebp + 0xc]
mov dword [ebp - 0xa4], eax
je 0x456f5d
add ecx, 0x10
mov eax, dword [ecx]
mov edi, eax
sub edi, dword [ebp - 0xa4]
test edi, edi
jne 0x456f6c
inc edx
cmp edx, dword [ebp + 0xc]
jbe 0x456f45
jmp 0x456ff7
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xcb
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push 2
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
mov ebx, dword [ebp - 0x98]
mov dword [ebp - 0x90], 1
mov ecx, dword [ebp + 0xc]
cmp dword [ebp - 0x90], ecx
mov eax, dword [ebx]
je 0x456faf
add ebx, 0x10
mov edi, dword [ebx]
sub edi, eax
test edi, edi
jl 0x456fbe
mov eax, 0x7fff
cmp edi, eax
jl 0x456fc9
jmp 0x456fc7
mov eax, 0xffff8000
cmp edi, eax
jg 0x456fc9
mov edi, eax
push 2
push edi
push esi
call fcn.0043dcbe
inc dword [ebp - 0x90]
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp + 0xc]
jbe 0x456f9b
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0xb0
call fcn.0043dbe6
push 0xa8
lea eax, [esi + 0x5230]
push eax
call fcn.004b7871
xor eax, eax
inc eax
cmp dword [ebp - 0xb4], eax
jne 0x4573d5
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0xc0], 1
push 1
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xd3
call fcn.0043dbe6
mov eax, dword [ebp - 0xd8]
mov eax, dword [eax]
add eax, dword [ebp - 0xc0]
push 2
pop ebx
push ebx
push eax
push esi
call fcn.0043dcbe
mov eax, dword [ebp - 0x98]
mov eax, dword [eax]
add eax, dword [ebp - 0xb8]
push ebx
push eax
push esi
call fcn.0043dcbe
push 3
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0x4c
mov byte [ebp - 0xa], 0x6b
call fcn.0043dbe6
push ebx
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xc9
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push ebx
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
cmp dword [ebp + 0xc], 0
mov ebx, dword [ebp - 0xd0]
jbe 0x4570c5
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0xb4], eax
push 2
push dword [ebx]
push esi
call fcn.0043dcbe
add ebx, 0x10
dec dword [ebp - 0xb4]
jne 0x4570b0
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0xab
call fcn.0043dbe6
mov ebx, dword [ebp + 0xc]
xor edx, edx
inc edx
cmp ebx, edx
jbe 0x457265
mov ecx, dword [ebp - 0xd8]
mov eax, dword [ecx]
cmp edx, ebx
mov dword [ebp - 0xc4], eax
je 0x457106
add ecx, 0x10
mov eax, dword [ecx]
mov edi, eax
sub edi, dword [ebp - 0xc4]
test edi, edi
jne 0x457114
inc edx
cmp edx, ebx
jbe 0x4570ef
jmp 0x4571a2
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xcb
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push 2
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
mov ebx, dword [ebp - 0xd8]
mov dword [ebp - 0x90], 1
mov ecx, dword [ebp + 0xc]
cmp dword [ebp - 0x90], ecx
mov eax, dword [ebx]
je 0x457157
add ebx, 0x10
mov edi, dword [ebx]
sub edi, eax
test edi, edi
jl 0x457166
mov eax, 0x7fff
cmp edi, eax
jl 0x457171
jmp 0x45716f
mov eax, 0xffff8000
cmp edi, eax
jg 0x457171
mov edi, eax
push 2
push edi
push esi
call fcn.0043dcbe
inc dword [ebp - 0x90]
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp + 0xc]
jbe 0x457143
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0xaf
call fcn.0043dbe6
mov ebx, dword [ebp + 0xc]
xor edx, edx
inc edx
cmp ebx, edx
jb 0x457265
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx]
cmp edx, ebx
mov dword [ebp - 0xa4], eax
je 0x4571cc
add ecx, 0x10
mov eax, dword [ecx]
mov edi, eax
sub edi, dword [ebp - 0xa4]
test edi, edi
jne 0x4571da
inc edx
cmp edx, ebx
jbe 0x4571b5
jmp 0x457265
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xcb
mov byte [ebp - 0xb], 0xc1
call fcn.0043dbe6
push 2
push dword [ebp + 0xc]
push esi
call fcn.0043dcbe
mov ebx, dword [ebp - 0x98]
mov dword [ebp - 0x90], 1
mov ecx, dword [ebp + 0xc]
cmp dword [ebp - 0x90], ecx
mov eax, dword [ebx]
je 0x45721d
add ebx, 0x10
mov edi, dword [ebx]
sub edi, eax
test edi, edi
jl 0x45722c
mov eax, 0x7fff
cmp edi, eax
jl 0x457237
jmp 0x457235
mov eax, 0xffff8000
cmp edi, eax
jg 0x457237
mov edi, eax
push 2
push edi
push esi
call fcn.0043dcbe
inc dword [ebp - 0x90]
mov eax, dword [ebp - 0x90]
cmp eax, dword [ebp + 0xc]
jbe 0x457209
push 2
lea eax, [ebp - 0xc]
push eax
push esi
mov byte [ebp - 0xc], 0xf8
mov byte [ebp - 0xb], 0xb0
call fcn.0043dbe6
push 0xa8
lea eax, [esi + 0x5230]
push eax
call fcn.004b7871
inc dword [ebp - 0xc0]
cmp dword [ebp - 0xc0], 4
jl 0x457027
inc dword [ebp - 0xb8]
cmp dword [ebp - 0xb8], 4
jl 0x45701d
jmp 0x4573d5
cmp dword [eax + 8], 0
je 0x45739d
mov eax, dword [esi + 0x5140]
movzx eax, word [eax + 0x16]
push eax
call fcn.004ac471
test eax, eax
je 0x4572d6
push edi
push ebx
lea eax, [ebp - 0xac]
push eax
push edi
push dword [ebp - 0xcc]
call fcn.004ac438
jmp 0x4572f9
xor eax, eax
push eax
push eax
push dword [ebp + 0xc]
shr edi, 1
push dword [ebp - 0xcc]
push edi
push ebx
push eax
push 0x4e4
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0xac], eax
xor ecx, ecx
cmp dword [ebp - 0xdc], ecx
mov eax, dword [ebp + 0x1c]
jne 0x45747e
cmp dword [eax + 8], ecx
je 0x45731f
mov edx, dword [esi + 0x5004]
test byte [edx + 4], 8
jne 0x45747e
cmp dword [eax + 0xc], ecx
je 0x457415
mov edx, dword [eax + 4]
cmp edx, dword [esi + 0x51f4]
ja 0x457415
mov edi, dword [ebp - 0xcc]
xor ebx, ebx
cmp dword [ebp - 0xac], ecx
jbe 0x45756c
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0xe4]
push eax
push dword [ebp - 0xac]
push edi
push dword [esi + 0x5140]
call fcn.004ad2aa
push dword [ebp - 0xe4]
push edi
push dword [ebp - 0xec]
push dword [esi + 0x5140]
call fcn.004ad1ef
test ebx, ebx
jne 0x457388
inc ebx
mov eax, dword [ebp - 0xe4]
add edi, eax
sub dword [ebp - 0xac], eax
jne 0x45734b
jmp 0x45756c
mov edi, dword [ebp + 0xc]
test edi, edi
mov ecx, dword [ebp - 0xd0]
mov eax, dword [ebp - 0xbc]
jbe 0x4573c9
cmp dword [ecx], 0xff
jbe 0x4573be
mov dl, byte [ecx + 1]
mov byte [eax], dl
inc eax
mov dl, byte [ecx]
mov byte [eax], dl
inc eax
add ecx, 0x10
dec edi
jne 0x4573b0
sub eax, dword [ebp - 0xcc]
mov dword [ebp - 0xac], eax
xor ecx, ecx
cmp dword [ebp - 0xe8], ecx
je 0x4572fb
push dword [ebp - 0xdc]
push dword [ebp - 0xcc]
push dword [ebp - 0xd0]
push dword [ebp + 0xc]
push dword [ebp - 0xa8]
push dword [ebp - 0xb0]
push esi
call fcn.00455d49
mov dword [ebp - 0xf4], eax
jmp 0x45756c
cmp dword [esi + 0x513c], ecx
je 0x45756c
cmp dword [eax + 0x1c], ecx
jne 0x45756c
mov eax, dword [ebp + 0xc]
mov edi, dword [ebp - 0xcc]
xor ebx, ebx
cmp eax, 1
jb 0x45756c
mov dword [ebp - 0xb4], eax
mov al, byte [edi]
inc edi
cmp al, byte [esi + 0x5144]
mov byte [ebp - 0x94], al
je 0x45746f
cmp ebx, ecx
jle 0x45745b
xor ebx, ebx
push dword [ebp - 0x94]
push dword [ebp - 0xa8]
push esi
call fcn.00455a30
xor ecx, ecx
inc edi
inc ebx
dec dword [ebp - 0xb4]
jne 0x457444
jmp 0x45756c
cmp dword [eax + 0xc], ecx
je 0x45752b
mov edx, dword [eax + 4]
cmp edx, dword [esi + 0x51f4]
ja 0x45752b
cmp dword [ebp - 0xac], ecx
mov eax, dword [ebp - 0xcc]
mov dword [ebp - 0xdc], eax
jbe 0x45756c
mov edi, dword [ebp - 0xdc]
lea eax, [ebp - 0xf8]
push eax
lea eax, [ebp - 0xe4]
push eax
push dword [ebp - 0xac]
push edi
push dword [esi + 0x5140]
call fcn.004ad2aa
mov eax, dword [ebp - 0xe4]
xor ebx, ebx
inc ebx
cmp eax, ebx
jb 0x45751b
push 1
push edi
push dword [ebp - 0xec]
push dword [esi + 0x5140]
call fcn.004ad1ef
test eax, eax
jne 0x45750f
push 2
push edi
push dword [ebp - 0xec]
push dword [esi + 0x5140]
call fcn.004ad1ef
inc edi
inc ebx
mov eax, dword [ebp - 0xe4]
inc edi
inc ebx
cmp ebx, eax
jbe 0x4574e1
add dword [ebp - 0xdc], eax
sub dword [ebp - 0xac], eax
jne 0x4574ae
jmp 0x45756c
cmp dword [eax + 0x1c], ecx
jne 0x45756c
cmp dword [esi + 0x513c], ecx
je 0x45756c
mov ebx, dword [ebp + 0xc]
cmp ebx, 1
mov edi, dword [ebp - 0xcc]
jb 0x45756c
mov al, byte [edi]
inc edi
cmp al, byte [esi + 0x5144]
mov byte [ebp - 0xb4], al
je 0x457569
push dword [ebp - 0xb4]
push dword [ebp - 0xa8]
push esi
call fcn.00455a30
dec ebx
jne 0x457546
mov esi, dword [ebp - 0xf4]
push dword [ebp - 0xcc]
call dword [sym.imp.KERNEL32.dll_GlobalFree]
mov eax, esi
mov ecx, dword [ebp - 4]
pop edi
pop esi
pop ebx
call fcn.004a9585
leave
ret 0x20