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

Disassembly:
push 0xffffffffffffffff
push 0x101c545b
mov eax, dword fs:[0]
push eax
sub esp, 0x47c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x102832a0]
xor eax, esp
push eax
lea eax, [esp + 0x490]
mov dword fs:[0], eax
mov ebx, dword [esp + 0x4a0]
mov eax, dword [esp + 0x4ac]
mov ecx, dword [esp + 0x4bc]
mov edx, dword [esp + 0x4b8]
push eax
mov eax, dword [esp + 0x4ac]
push ecx
push edx
push eax
mov edi, ebx
call fcn.1003f0e0
xor edi, edi
mov dword [esp + 0x498], edi
mov ecx, dword [esp + 0x4b0]
mov eax, 0xd
mov dword [ebx], vtable.Gfx8BitFont.0
mov dword [ebx + 0xdd0], eax
mov dword [ebx + 0xdd8], edi
mov dword [ebx + 0xde0], eax
mov dword [ebx + 0xde8], edi
mov dword [esp + 0x44], eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x5c], eax
mov eax, dword [ebx + 0x24]
mov dword [esp + 0x4c], edi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x64], edi
mov dword [ebx + 0xb8], 1
mov dword [ebx + 0x38], ecx
mov dword [ebx + 0x5c0], edi
cmp eax, edi
je 0x10040429
push eax
call section..text
mov ebp, eax
mov edx, dword [ebp + 0x18]
cmp edx, edi
jle 0x10040340
mov eax, dword [ebp + 0x1c]
cmp byte [edi + eax], 0x20
jne 0x10040336
lea ecx, [edi + 1]
cmp ecx, edx
mov eax, 1
jle 0x1004030c
mov eax, edx
sub eax, edi
sub edx, eax
cmp edi, edx
mov ecx, edi
jg 0x10040329
mov edx, dword [ebp + 0x1c]
lea esi, [edx + ecx]
mov dl, byte [eax + esi]
mov byte [esi], dl
mov edx, dword [ebp + 0x18]
inc ecx
sub edx, eax
cmp ecx, edx
jle 0x10040314
mov esi, dword [ebp + 0x18]
sub esi, eax
push ebp
call fcn.100558d0
jmp 0x10040337
inc edi
mov edx, dword [ebp + 0x18]
cmp edi, edx
jl 0x100402f3
xor edi, edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x3c], 0x33
lea esp, [esp]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x3c]
add eax, ecx
cdq
sub eax, edx
mov edi, eax
sar edi, 1
mov ecx, dword [edi*8 + 0x1022fc58]
xor esi, esi
cmp dword [ebp + 0x18], esi
jle 0x10040393
mov ebx, dword [ebp + 0x1c]
sub ebx, ecx
mov al, byte [ecx]
test al, al
je 0x1004038e
movsx edx, byte [ebx + ecx]
movsx eax, al
sub edx, eax
jne 0x100403e9
inc esi
inc ecx
cmp esi, dword [ebp + 0x18]
jl 0x10040374
jmp 0x10040393
cmp esi, dword [ebp + 0x18]
jl 0x100403ed
cmp byte [ecx], 0
je 0x100403ed
mov dword [esp + 0x3c], edi
mov ecx, dword [esp + 0x3c]
sub ecx, dword [esp + 0x1c]
cmp ecx, 1
jg 0x10040350
mov esi, dword [esp + 0x1c]
mov ecx, dword [esi*8 + 0x1022fc58]
mov eax, ebp
call fcn.10056990
test eax, eax
jne 0x10040407
push 0x20
call fcn.100f5c37
add esp, 4
mov dword [esp + 0x20], eax
mov byte [esp + 0x498], 1
test eax, eax
je 0x100403f3
mov ebx, dword [esi*8 + 0x1022fc5c]
mov edi, eax
call fcn.10055a30
jmp 0x100403f5
test edx, edx
jl 0x10040398
mov dword [esp + 0x1c], edi
jmp 0x1004039c
xor eax, eax
mov byte [esp + 0x498], 0
mov edx, dword [esp + 0x4a0]
mov dword [edx + 0x24], eax
mov eax, dword [ebp + 0x1c]
cmp eax, ebp
je 0x10040417
push eax
call fcn.10109eb5
add esp, 4
push ebp
call fcn.100f5c66
mov ebx, dword [esp + 0x4a4]
add esp, 4
xor edi, edi
mov ebp, dword [ebx + 0x24]
fldz
fld qword [0x1026bf88]
mov dword [esp + 0x38], edi
cmp ebp, edi
je 0x10040460
xor edi, edi
mov esi, 0x102a82f8
mov ecx, dword [esi]
mov eax, ebp
call fcn.10056990
test eax, eax
je 0x10040560
add esi, 0x18
inc edi
cmp esi, 0x102a8448
jl 0x10040443
mov esi, dword [esp + 0x38]
fstp st(0)
fld qword [0x1026bdd0]
fstp qword [ebx + 0xa8]
fld qword [0x1026bdc8]
fstp qword [ebx + 0xb0]
fst qword [ebx + 0x98]
fst qword [ebx + 0x90]
fst qword [ebx + 0x88]
fstp qword [ebx + 0x80]
mov eax, dword [esp + 0x4a4]
mov edi, dword [esp + 0x4b4]
push eax
push ebx
mov ecx, edi
call fcn.1003f2e0
test esi, esi
je 0x1004053f
cmp dword [ebx + 0x44], 0
jge 0x1004053f
movsx ecx, word [esi + 8]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fld qword [0x1026bf88]
fmul st(1), st(0)
fxch st(1)
fstp qword [ebx + 0xa8]
movsx edx, word [esi + 0xa]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0xb0]
movsx eax, word [esi + 0xc]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x80]
movsx ecx, word [esi + 0xe]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x88]
movsx edx, word [esi + 0x10]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x90]
movsx eax, word [esi + 0x12]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmulp st(1)
fstp qword [ebx + 0x98]
mov eax, dword [ebx + 0x24]
test eax, eax
je 0x10040608
mov ecx, dword [ebx + 0x38]
cmp ecx, 1
jne 0x100405f5
push 0x102ab9e4
jmp 0x100405ff
lea esi, [edi + edi*2]
lea esi, [esi*8 + 0x102a82f8]
mov dword [esp + 0x38], esi
test esi, esi
je 0x10040464
movsx eax, word [esi + 8]
fstp st(1)
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0xa8]
movsx ecx, word [esi + 0xa]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0xb0]
movsx edx, word [esi + 0xc]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x80]
movsx eax, word [esi + 0xe]
mov dword [esp + 0x14], eax
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x88]
movsx ecx, word [esi + 0x10]
mov dword [esp + 0x14], ecx
fild dword [esp + 0x14]
fmul st(1)
fstp qword [ebx + 0x90]
movsx edx, word [esi + 0x12]
mov dword [esp + 0x14], edx
fild dword [esp + 0x14]
fmulp st(1)
fstp qword [ebx + 0x98]
jmp 0x10040496
cmp ecx, 5
jne 0x10040608
push 0x102ab9f8
push eax
call fcn.100547d0
mov dword [ebx + 0x4c], eax
fld1
lea esi, [ebx + 0x50]
fst qword [ebx + 0x68]
lea ecx, [esp + 0x44]
fstp qword [esi]
push ecx
fldz
push str.FontMatrix
fst qword [ebx + 0x78]
mov ecx, edi
fst qword [ebx + 0x70]
mov dword [esp + 0x28], esi
fst qword [ebx + 0x60]
fstp qword [ebx + 0x58]
call fcn.1001d860
cmp dword [eax], 6
jne 0x10040721
xor ebp, ebp
xor edi, edi
mov eax, dword [esp + 0x44]
cmp eax, 6
je 0x10040666
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
cmp ebp, dword [ecx + 0xc]
jge 0x10040721
cmp eax, 6
je 0x10040693
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov ecx, dword [esp + 0x4c]
test ebp, ebp
jl 0x100406f0
cmp ebp, dword [ecx + 0xc]
jge 0x100406f0
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
lea edx, [esp + 0x24]
push edx
push eax
add ecx, edi
call fcn.100760f0
mov eax, dword [eax]
cmp eax, 1
je 0x100406ba
cmp eax, 2
jne 0x10040708
mov eax, dword [esp + 0x24]
cmp eax, 1
je 0x100406ea
cmp eax, 2
je 0x100406e5
push 2
push 1
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d_or__d
xor edx, edx
call fcn.1001d950
add esp, 0x10
call fcn.10105849
mov eax, dword [esp + 0x24]
cmp eax, 1
jne 0x10040702
fild dword [esp + 0x2c]
jmp 0x10040706
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 5
jmp 0x10040708
fld qword [esp + 0x2c]
fstp qword [esi]
lea ecx, [esp + 0x24]
call fcn.10076130
add edi, 0x10
inc ebp
add esi, 8
cmp edi, 0x60
jl 0x10040642
lea ecx, [esp + 0x44]
call fcn.10076130
cmp dword [ebx + 0x38], 4
jne 0x100408a0
lea ecx, [esp + 0x44]
push ecx
mov ecx, dword [esp + 0x4b8]
push str.FontBBox
call fcn.1001d860
cmp dword [eax], 6
jne 0x10040840
lea eax, [ebx + 0x80]
xor edi, edi
xor esi, esi
mov ebp, eax
nop
mov eax, dword [esp + 0x44]
cmp eax, 6
je 0x10040784
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x4c]
cmp edi, dword [ecx + 0xc]
jge 0x10040840
cmp eax, 6
je 0x100407b1
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov ecx, dword [esp + 0x4c]
test edi, edi
jl 0x1004080e
cmp edi, dword [ecx + 0xc]
jge 0x1004080e
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
lea edx, [esp + 0x24]
push edx
push eax
add ecx, esi
call fcn.100760f0
mov eax, dword [eax]
cmp eax, 1
je 0x100407d8
cmp eax, 2
jne 0x10040827
mov eax, dword [esp + 0x24]
cmp eax, 1
je 0x10040808
cmp eax, 2
je 0x10040803
push 2
push 1
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d_or__d
xor edx, edx
call fcn.1001d950
add esp, 0x10
call fcn.10105849
mov eax, dword [esp + 0x24]
cmp eax, 1
jne 0x10040820
fild dword [esp + 0x2c]
jmp 0x10040824
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 5
jmp 0x10040827
fld qword [esp + 0x2c]
fstp qword [ebp]
lea ecx, [esp + 0x24]
call fcn.10076130
add esi, 0x10
inc edi
add ebp, 8
cmp esi, 0x40
jl 0x10040760
lea ecx, [esp + 0x44]
call fcn.10076130
mov ebp, dword [esp + 0x4b4]
lea esi, [ebx + 0xdd0]
push esi
push str.CharProcs
mov ecx, ebp
call fcn.1001d860
cmp dword [eax], 7
je 0x1004087f
push str.Missing_or_invalid_CharProcs_dictionary_in_Type_3_font
or edx, 0xffffffff
call fcn.1001d950
add esp, 4
mov ecx, esi
call fcn.10076130
lea esi, [ebx + 0xde0]
push esi
push str.Resources
mov ecx, ebp
call fcn.1001d860
cmp dword [eax], 7
je 0x100408a7
mov ecx, esi
call fcn.10076130
jmp 0x100408a7
mov ebp, dword [esp + 0x4b4]
lea ecx, [esp + 0x44]
xor edi, edi
push ecx
push str.Encoding
mov ecx, ebp
mov dword [ebx + 0x5c4], edi
mov dword [ebx + 0x5c8], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x60], edi
call fcn.1001d860
mov eax, dword [esp + 0x44]
mov ebp, 0x1029a0b0
cmp eax, 7
jne 0x10040a11
lea edx, [esp + 0x24]
push edx
push str.BaseEncoding
lea ecx, [esp + 0x4c]
call fcn.10009890
cmp dword [esp + 0x24], 4
jne 0x100409fe
mov esi, dword [esp + 0x2c]
mov edx, str.MacRomanEncoding
mov ecx, esi
lea esp, [esp]
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10040930
test al, al
je 0x1004092c
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10040930
add ecx, 2
add edx, 2
test al, al
jne 0x10040910
xor eax, eax
jmp 0x10040935
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x10040960
mov edi, 1
lea ecx, [esp + 0x24]
mov dword [ebx + 0x5c4], edi
mov dword [ebx + 0x5c8], edi
mov dword [esp + 0x18], 0x102998b0
call fcn.10076130
jmp 0x10040af7
mov edx, str.MacExpertEncoding
mov ecx, esi
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10040987
test al, al
je 0x10040983
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10040987
add ecx, 2
add edx, 2
test al, al
jne 0x10040967
xor eax, eax
jmp 0x1004098c
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x100409b1
mov edi, 1
lea ecx, [esp + 0x24]
mov dword [ebx + 0x5c4], edi
mov dword [esp + 0x18], 0x10299cb0
call fcn.10076130
jmp 0x10040af7
mov ecx, str.WinAnsiEncoding
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100409d8
test dl, dl
je 0x100409d4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100409d8
add eax, 2
add ecx, 2
test dl, dl
jne 0x100409b8
xor eax, eax
jmp 0x100409dd
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x100409fe
mov edi, 1
lea ecx, [esp + 0x24]
mov dword [ebx + 0x5c4], edi
mov dword [esp + 0x18], ebp
call fcn.10076130
jmp 0x10040af7
lea ecx, [esp + 0x24]
mov edi, 1
call fcn.10076130
jmp 0x10040af7
cmp eax, 4
jne 0x10040af2
mov esi, dword [esp + 0x4c]
mov edx, str.MacRomanEncoding
mov ecx, esi
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10040a45
test al, al
je 0x10040a41
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10040a45
add ecx, 2
add edx, 2
test al, al
jne 0x10040a25
xor eax, eax
jmp 0x10040a4a
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x10040a6c
mov edi, 1
mov dword [ebx + 0x5c4], edi
mov dword [ebx + 0x5c8], edi
mov dword [esp + 0x18], 0x102998b0
jmp 0x10040af7
mov edx, str.MacExpertEncoding
mov ecx, esi
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x10040a93
test al, al
je 0x10040a8f
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x10040a93
add ecx, 2
add edx, 2
test al, al
jne 0x10040a73
xor eax, eax
jmp 0x10040a98
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x10040ab1
mov edi, 1
mov dword [ebx + 0x5c4], edi
mov dword [esp + 0x18], 0x10299cb0
jmp 0x10040af7
mov ecx, str.WinAnsiEncoding
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10040ad8
test dl, dl
je 0x10040ad4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10040ad8
add eax, 2
add ecx, 2
test dl, dl
jne 0x10040ab8
xor eax, eax
jmp 0x10040add
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x10040af2
mov edi, 1
mov dword [ebx + 0x5c4], edi
mov dword [esp + 0x18], ebp
jmp 0x10040af7
mov edi, 1
mov eax, dword [ebx + 0x38]
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x54], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x1c], esi
cmp eax, edi
jne 0x10040cae
mov ecx, dword [ebx + 0x4c]
cmp ecx, ebp
jne 0x10040b26
cmp dword [ebx + 0x44], ebp
jl 0x10040cae
cmp ecx, ebp
je 0x10040b3d
mov ecx, dword [ecx + 0x1c]
push ecx
call fcn.10021840
mov ebp, eax
add esp, 4
mov dword [esp + 0x54], ebp
jmp 0x10040bb8
mov ecx, dword [esp + 0x4a4]
lea eax, [esp + 0x14]
push eax
push ecx
mov eax, ebx
call fcn.100400d0
mov esi, eax
push 0x20
mov dword [esp + 0x20], esi
call fcn.100f5c37
add esp, 4
mov dword [esp + 0x54], eax
mov byte [esp + 0x498], 2
cmp eax, ebp
je 0x10040ba8
mov edx, dword [esp + 0x14]
mov dword [eax], vtable.FoFiBase.0
mov dword [eax + 8], esi
mov dword [eax + 4], esi
mov dword [eax + 0xc], edx
mov dword [eax + 0x10], ebp
mov byte [esp + 0x498], 3
mov dword [eax], vtable.FoFiType1.0
mov dword [eax + 0x14], ebp
mov dword [eax + 0x18], ebp
mov dword [eax + 0x1c], ebp
mov byte [esp + 0x498], 2
jmp 0x10040baa
xor eax, eax
mov byte [esp + 0x498], 0
mov ebp, eax
mov dword [esp + 0x54], eax
test ebp, ebp
je 0x10040de4
cmp dword [ebp + 0x1c], 0
jne 0x10040bcd
mov ecx, ebp
call fcn.10021a70
cmp dword [ebp + 0x14], 0
je 0x10040c8a
mov esi, dword [ebx + 0x40]
test esi, esi
je 0x10040bf7
mov eax, dword [esi + 0x1c]
cmp eax, esi
je 0x10040bee
push eax
call fcn.10109eb5
add esp, 4
push esi
call fcn.100f5c66
add esp, 4
push 0x20
call fcn.100f5c37
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
mov byte [esp + 0x498], 4
test edi, edi
je 0x10040c67
cmp dword [ebp + 0x1c], 0
jne 0x10040c20
mov ecx, ebp
call fcn.10021a70
mov eax, dword [esp + 0x54]
mov ebp, dword [eax + 0x14]
xor esi, esi
or ebx, 0xffffffff
mov dword [edi + 0x1c], esi
mov dword [edi + 0x18], esi
cmp ebp, esi
je 0x10040c4d
mov eax, ebp
lea edx, [eax + 1]
jmp 0x10040c40
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10040c40
sub eax, edx
mov ebx, eax
mov esi, ebx
push edi
call fcn.100558d0
mov eax, dword [edi + 0x1c]
test ebp, ebp
je 0x10040c69
push ebx
push ebp
push eax
call fcn.1010c900
add esp, 0xc
jmp 0x10040c69
xor edi, edi
mov byte [esp + 0x498], 0
mov ecx, dword [esp + 0x4a0]
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x54]
mov dword [ecx + 0x40], edi
mov ebx, ecx
mov edi, 1
cmp dword [esp + 0x18], 0
jne 0x10040de4
cmp dword [ebp + 0x1c], 0
jne 0x10040ca2
mov ecx, ebp
call fcn.10021a70
mov edx, dword [ebp + 0x18]
mov dword [esp + 0x18], edx
jmp 0x10040de0
cmp eax, 2
jne 0x10040df3
mov eax, dword [ebx + 0x4c]
cmp eax, ebp
jne 0x10040ccb
cmp dword [ebx + 0x44], ebp
jl 0x10040df3
cmp eax, ebp
je 0x10040cdf
mov eax, dword [eax + 0x1c]
push eax
call fcn.10021f90
mov ebp, eax
add esp, 4
mov dword [esp + 0x3c], ebp
jmp 0x10040d0d
mov ecx, dword [esp + 0x4a4]
lea eax, [esp + 0x14]
push eax
push ecx
mov eax, ebx
call fcn.100400d0
mov edx, dword [esp + 0x14]
mov esi, eax
push edx
push esi
mov dword [esp + 0x24], eax
call fcn.10021ef0
add esp, 8
mov ebp, eax
mov dword [esp + 0x3c], eax
test ebp, ebp
je 0x10040de4
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x10040dd2
cmp dword [eax + 0x1c], 0
je 0x10040dd2
mov esi, dword [ebx + 0x40]
test esi, esi
je 0x10040d4a
mov eax, dword [esi + 0x1c]
cmp eax, esi
je 0x10040d41
push eax
call fcn.10109eb5
add esp, 4
push esi
call fcn.100f5c66
add esp, 4
push 0x20
call fcn.100f5c37
mov edi, eax
add esp, 4
mov dword [esp + 0x14], edi
mov byte [esp + 0x498], 5
test edi, edi
je 0x10040daf
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x10040d72
mov ebp, dword [eax + 0x1c]
jmp 0x10040d74
xor ebp, ebp
xor esi, esi
or ebx, 0xffffffff
mov dword [edi + 0x1c], esi
mov dword [edi + 0x18], esi
cmp ebp, esi
je 0x10040d95
mov eax, ebp
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10040d88
sub eax, edx
mov ebx, eax
mov esi, ebx
push edi
call fcn.100558d0
mov eax, dword [edi + 0x1c]
test ebp, ebp
je 0x10040db1
push ebx
push ebp
push eax
call fcn.1010c900
add esp, 0xc
jmp 0x10040db1
xor edi, edi
mov byte [esp + 0x498], 0
mov eax, dword [esp + 0x4a0]
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x3c]
mov dword [eax + 0x40], edi
mov ebx, eax
mov edi, 1
cmp dword [esp + 0x18], 0
jne 0x10040de4
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x58], edi
test esi, esi
je 0x10040df1
push esi
call fcn.10109eb5
add esp, 4
xor ebp, ebp
cmp dword [esp + 0x18], ebp
jne 0x10040e2b
mov eax, dword [esp + 0x38]
cmp eax, ebp
je 0x10040e15
cmp dword [ebx + 0x44], ebp
jge 0x10040e15
mov edx, dword [eax + 4]
mov dword [esp + 0x18], edx
mov dword [ebx + 0x5c4], edi
jmp 0x10040e2b
cmp dword [ebx + 0x38], 5
mov dword [esp + 0x18], 0x1029a0b0
je 0x10040e2b
mov dword [esp + 0x18], 0x10298cb0
mov edx, dword [esp + 0x4a0]
mov ecx, dword [esp + 0x18]
lea ebx, [edx + 0xc0]
xor esi, esi
mov dword [esp + 0x1c], ebx
mov eax, dword [ecx + esi*4]
mov dword [ebx], eax
mov eax, dword [esp + 0x58]
mov byte [edx + esi + 0x4c0], al
test al, al
je 0x10040eab
cmp dword [ebx], 0
je 0x10040eab
mov edi, dword [ecx + esi*4]
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10040e63
sub eax, edx
add eax, 1
jne 0x10040e75
xor ebp, ebp
jmp 0x10040e88
push eax
call fcn.10109f92
add esp, 4
test eax, eax
je 0x10040fbb
mov ebp, eax
mov edx, ebp
mov eax, edi
sub edx, edi
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x10040e90
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x4a0]
mov dword [ebx], ebp
inc esi
add ebx, 4
cmp esi, 0x100
jl 0x10040e42
cmp dword [edx + 0x38], 2
jne 0x10040efe
cmp dword [edx + 0x4c], 0
jne 0x10040ec9
cmp dword [edx + 0x44], 0
jl 0x10040efe
test eax, eax
je 0x10040efe
mov ecx, dword [esp + 0x1c]
add edx, 0x4c0
mov eax, 0x10298cb0
lea esp, [esp]
cmp dword [ecx], 0
jne 0x10040ef0
mov esi, dword [eax]
test esi, esi
je 0x10040ef0
mov dword [ecx], esi
mov byte [edx], 0
add eax, 4
add ecx, 4
inc edx
cmp eax, 0x102990b0
jl 0x10040ee0
cmp dword [esp + 0x44], 7
jne 0x100410d3
lea ecx, [esp + 0x24]
push ecx
push str.Differences
lea ecx, [esp + 0x4c]
call fcn.10009890
mov eax, dword [esp + 0x24]
cmp eax, 6
jne 0x100410ca
mov edx, dword [esp + 0x4a0]
xor ebp, ebp
mov dword [edx + 0x5c4], 1
xor ebx, ebx
mov dword [esp + 0x14], ebp
cmp eax, 6
je 0x10040f62
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x2c]
cmp ebp, dword [ecx + 0xc]
jge 0x100410ca
cmp eax, 6
je 0x10040f8f
push 6
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov ecx, dword [esp + 0x2c]
test ebp, ebp
jl 0x10040fd8
cmp ebp, dword [ecx + 0xc]
jge 0x10040fd8
mov edx, dword [ecx]
mov ecx, dword [ecx + 4]
add ecx, dword [esp + 0x14]
lea eax, [esp + 0x5c]
push eax
push edx
call fcn.100760f0
mov eax, dword [esp + 0x5c]
cmp eax, 1
jne 0x10041019
mov ebx, dword [esp + 0x64]
jmp 0x10041001
push str.Out_of_memory_n
call fcn.10107014
add eax, 0x40
push eax
call fcn.10106bd7
add esp, 8
push 1
call fcn.1010a517
mov eax, 5
mov dword [esp + 0x64], 0
mov dword [esp + 0x5c], eax
mov eax, dword [eax*4 + 0x10289730]
push eax
push str.Wrong_type_in_font_encoding_resource_differences___s_
or edx, 0xffffffff
call fcn.1001d950
add esp, 8
lea ecx, [esp + 0x5c]
call fcn.10076130
mov eax, dword [esp + 0x24]
inc ebp
add dword [esp + 0x14], 0x10
jmp 0x10040f42
cmp eax, 4
jne 0x10040fe9
cmp ebx, 0xff
ja 0x100410c4
mov eax, dword [esp + 0x4a0]
cmp byte [eax + ebx + 0x4c0], 0
je 0x1004106f
mov eax, dword [eax + ebx*4 + 0xc0]
test eax, eax
je 0x1004106f
push eax
call fcn.10109eb5
mov eax, dword [esp + 0x60]
add esp, 4
cmp eax, 4
je 0x1004106f
push 4
push eax
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov eax, dword [esp + 0x64]
mov edi, eax
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10041078
sub eax, edx
add eax, 1
jne 0x1004108a
xor esi, esi
jmp 0x1004109d
push eax
call fcn.10109f92
add esp, 4
test eax, eax
je 0x10040fbb
mov esi, eax
mov edx, esi
mov eax, edi
sub edx, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
inc eax
test cl, cl
jne 0x100410a3
mov eax, dword [esp + 0x4a0]
mov dword [eax + ebx*4 + 0xc0], esi
add eax, 0x4c0
mov byte [eax + ebx], 1
inc ebx
jmp 0x10041001
lea ecx, [esp + 0x24]
call fcn.10076130
lea ecx, [esp + 0x44]
call fcn.10076130
mov ecx, dword [esp + 0x54]
test ecx, ecx
je 0x100410ec
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov ecx, dword [esp + 0x3c]
test ecx, ecx
je 0x100410fc
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov ecx, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 0x3c], ebp
xor ebx, ebx
mov dword [esp + 0x14], ecx
lea esp, [esp]
mov edx, dword [esp + 0x14]
mov esi, dword [edx]
test esi, esi
je 0x10041246
mov eax, dword [0x102b00f0]
mov edi, dword [eax + 8]
push esi
call fcn.10075e80
mov dword [esp + ebp*4 + 0x8c], eax
test eax, eax
jne 0x10041251
mov ecx, str..notdef
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x10041162
test dl, dl
je 0x1004115e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x10041162
add eax, 2
add ecx, 2
test dl, dl
jne 0x10041142
xor eax, eax
jmp 0x10041167
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10041251
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x10041174
sub eax, edx
cmp eax, 3
jne 0x100411de
movsx ecx, byte [esi]
push ecx
call fcn.10109223
add esp, 4
test eax, eax
je 0x100411de
movsx edx, byte [esi + 1]
push edx
call fcn.10109426
add esp, 4
test eax, eax
je 0x100411de
movsx eax, byte [esi + 2]
push eax
call fcn.10109426
add esp, 4
test eax, eax
je 0x100411de
mov al, byte [esi + 1]
cmp al, 0x61
jl 0x100411c3
cmp al, 0x66
jle 0x10041237
cmp al, 0x41
jl 0x100411cb
cmp al, 0x46
jle 0x10041237
mov al, byte [esi + 2]
cmp al, 0x61
jl 0x100411d6
cmp al, 0x66
jle 0x10041237
cmp al, 0x41
jl 0x100411de
cmp al, 0x46
jle 0x10041237
mov eax, esi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x100411e3
sub eax, edx
cmp eax, 2
jne 0x1004123f
movsx ecx, byte [esi]
push ecx
call fcn.10109426
add esp, 4
test eax, eax
je 0x1004123f
movsx edx, byte [esi + 1]
push edx
call fcn.10109426
add esp, 4
test eax, eax
je 0x1004123f
mov al, byte [esi]
cmp al, 0x61
jl 0x1004121c
cmp al, 0x66
jle 0x10041237
cmp al, 0x41
jl 0x10041224
cmp al, 0x46
jle 0x10041237
mov al, byte [esi + 1]
cmp al, 0x61
jl 0x1004122f
cmp al, 0x66
jle 0x10041237
cmp al, 0x41
jl 0x1004123f
cmp al, 0x46
jg 0x1004123f
mov dword [esp + 0x3c], 1
mov ebx, 1
jmp 0x10041251
mov dword [esp + ebp*4 + 0x8c], 0
add dword [esp + 0x14], 4
inc ebp
cmp ebp, 0x100
jl 0x10041110
lea eax, [esp + 0x8c]
push eax
call fcn.10018d90
mov ecx, dword [esp + 0x4a4]
add esp, 4
mov dword [ecx + 0x5c0], eax
test ebx, ebx
je 0x100413f8
mov edx, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 0x14], edx
cmp dword [esp + ebp*4 + 0x8c], 0
jne 0x100413e6
mov eax, dword [esp + 0x14]
mov ebx, dword [eax]
test ebx, ebx
je 0x10041359
mov ecx, str..notdef
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x100412d5
test dl, dl
je 0x100412d1
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x100412d5
add eax, 2
add ecx, 2
test dl, dl
jne 0x100412b5
xor eax, eax
jmp 0x100412da
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x10041359
mov eax, dword [0x102b00f0]
lea esi, [eax + 0xe8]
push esi
mov edi, eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [edi + 0xb8]
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [esp + 0x3c]
push 1
push ecx
push edi
push 1
push 0
push 8
lea edx, [esp + 0x84]
push edx
push ebx
call fcn.10042960
add esp, 0x20
test eax, eax
je 0x10041359
mov ecx, dword [esp + 0x4a0]
mov esi, dword [ecx + 0x5c0]
cmp eax, 1
jne 0x10041347
mov edx, dword [esi + 4]
mov eax, dword [esp + 0x6c]
mov dword [edx + ebp*4], eax
jmp 0x100413e6
lea ecx, [esp + 0x6c]
push ecx
push ebp
mov ebx, eax
call fcn.10019af0
jmp 0x100413e6
mov eax, dword [0x102b00f0]
lea esi, [eax + 0xe8]
push esi
mov edi, eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [edi + 0xbc]
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test edi, edi
je 0x100413e6
test ebx, ebx
je 0x100413cf
cmp byte [ebx], 0
je 0x100413cf
xor eax, eax
lea ecx, [ecx]
movsx ecx, byte [eax + ebx]
mov dword [esp + eax*4 + 0x6c], ecx
test ecx, ecx
je 0x100413a2
inc eax
cmp eax, 8
jb 0x10041390
mov edx, dword [esp + 0x4a0]
mov esi, dword [edx + 0x5c0]
cmp eax, 1
jne 0x100413c0
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x6c]
mov dword [eax + ebp*4], ecx
jmp 0x100413e6
lea edx, [esp + 0x6c]
push edx
push ebp
mov ebx, eax
call fcn.10019af0
jmp 0x100413e6
mov eax, dword [esp + 0x4a0]
mov eax, dword [eax + 0x5c0]
mov dword [esp + 0x6c], ebp
mov ecx, dword [eax + 4]
mov dword [ecx + ebp*4], ebp
add dword [esp + 0x14], 4
inc ebp
cmp ebp, 0x100
jl 0x10041292
mov ebp, dword [esp + 0x4a0]
mov edx, dword [ebp + 0x5c0]
mov edi, dword [esp + 0x4b4]
push edx
push 8
mov ecx, edi
call fcn.1003fdf0
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x1004159d
push eax
call fcn.10054a00
mov dword [esp + 0x3c], eax
test eax, eax
je 0x1004159d
xor eax, eax
mov ecx, 0x100
lea edi, [esp + 0x8c]
rep stosd dword es:[edi], eax
lea eax, [esp + 0x8c]
push eax
call fcn.10018d90
mov esi, dword [esp + 0x40]
add esp, 4
mov dword [esp + 0x14], eax
xor ebp, ebp
mov ecx, dword [esp + 0x4a0]
mov edx, dword [ecx + 0x5c0]
cmp ebp, dword [edx + 8]
jae 0x10041524
mov eax, dword [edx + 4]
cmp dword [eax + ebp*4], 0
lea ecx, [eax + ebp*4]
jne 0x100414bb
mov eax, dword [edx + 0x10]
sub eax, 1
js 0x10041524
mov edi, dword [edx + 0xc]
lea ecx, [eax + eax*2]
lea ecx, [edi + ecx*4]
cmp dword [ecx], ebp
je 0x100414a5
dec eax
sub ecx, 0xc
test eax, eax
jge 0x10041494
jmp 0x10041524
mov ecx, edi
lea eax, [eax + eax*2]
cmp dword [ecx + eax*4 + 8], 1
lea eax, [ecx + eax*4]
mov ecx, dword [eax + 4]
jl 0x10041524
mov edi, dword [ecx]
cmp edi, dword [esi + 8]
jae 0x10041524
mov edx, dword [esi + 4]
cmp dword [edx + edi*4], 0
lea ecx, [edx + edi*4]
jne 0x10041505
mov eax, dword [esi + 0x10]
sub eax, 1
js 0x10041524
mov edx, dword [esi + 0xc]
lea ecx, [eax + eax*2]
lea ecx, [edx + ecx*4]
cmp dword [ecx], edi
je 0x100414f1
dec eax
sub ecx, 0xc
test eax, eax
jge 0x100414e3
jmp 0x10041524
lea eax, [eax + eax*2]
mov ecx, dword [edx + eax*4 + 4]
lea eax, [edx + eax*4]
mov eax, dword [eax + 8]
cmp eax, 1
jl 0x10041524
jne 0x10041513
mov edx, dword [esp + 0x14]
mov eax, dword [edx + 4]
mov ecx, dword [ecx]
mov dword [eax + ebp*4], ecx
jmp 0x10041524
mov esi, dword [esp + 0x14]
push ecx
push ebp
mov ebx, eax
call fcn.10019af0
mov esi, dword [esp + 0x3c]
inc ebp
cmp ebp, 0x100
jl 0x1004145d
lea edi, [esi + 0x1c]
push edi
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
add dword [esi + 0x18], 0xffffffff
mov ebx, 0
push edi
sete bl
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
test ebx, ebx
je 0x10041562
mov eax, esi
call fcn.10019a30
push esi
call fcn.100f5c66
add esp, 4
mov edx, dword [esp + 0x4a0]
mov edi, dword [edx + 0x5c0]
test edi, edi
je 0x10041583
mov eax, edi
call fcn.10019a30
push edi
call fcn.100f5c66
add esp, 4
mov ecx, dword [esp + 0x4a0]
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x4b4]
mov dword [ecx + 0x5c0], eax
mov ebp, ecx
fld qword [0x1026bf88]
lea ebx, [ebp + 0x5d0]
mov eax, ebx
mov ecx, 0x100
fld qword [ebp + 0xa0]
add eax, 8
sub ecx, 1
fmul st(1)
fstp qword [eax - 8]
jne 0x100415b0
lea edx, [esp + 0x44]
fstp st(0)
push edx
push str.FirstChar
mov ecx, edi
call fcn.1001d860
mov esi, dword [esp + 0x44]
dec esi
neg esi
sbb esi, esi
not esi
and esi, dword [esp + 0x4c]
lea ecx, [esp + 0x44]
call fcn.10076130
test esi, esi
jl 0x100415fa
cmp esi, 0xff
jle 0x100415fc
xor esi, esi
lea eax, [esp + 0x44]
push eax
push str.LastChar
mov ecx, edi
call fcn.1001d860
cmp dword [esp + 0x44], 1
mov edi, dword [esp + 0x4c]
je 0x1004161d
mov edi, 0xff
lea ecx, [esp + 0x44]
call fcn.10076130
test edi, edi
jl 0x10041632
cmp edi, 0xff
jle 0x10041637
mov edi, 0xff
cmp dword [ebp + 0x38], 4
jne 0x10041645
mov ecx, dword [esp + 0x20]
fld qword [ecx]
jmp 0x1004164b
fld qword [0x1026bf88]
mov ecx, dword [esp + 0x4b4]
fstp qword [esp + 0x3c]
lea edx, [esp + 0x44]
push edx
push str.Widths
call fcn.1001d860
mov edx, dword [esp + 0x44]
cmp edx, 6
jne 0x10041763
or dword [ebp + 0x3c], 1
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 0xc]
mov ebx, edi
sub ebx, esi
inc ebx
cmp eax, ebx
jge 0x1004168a
lea edi, [esi + eax - 1]
cmp esi, edi
jg 0x100418b2
mov eax, dword [esp + 0x4a0]
lea eax, [eax + esi*8 + 0x5d0]
sub edi, esi
xor ebx, ebx
xor ebp, ebp
mov dword [esp + 0x14], eax
mov dword [esp + 0x20], eax
inc edi
mov esi, eax
jmp 0x100416bb
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x44]
cmp edx, 6
je 0x100416db
push 6
push edx
push str.Call_to_Object_where_the_object_was_type__d__not_the_expected_type__d
xor edx, edx
call fcn.1001d950
add esp, 0xc
call fcn.10105849
mov ecx, dword [esp + 0x4c]
test ebx, ebx
jl 0x1004170f
cmp ebx, dword [ecx + 0xc]
jge 0x1004170f
mov eax, dword [ecx]
mov ecx, dword [ecx + 4]
lea edx, [esp + 0x24]
push edx
push eax
add ecx, ebp
call fcn.100760f0
mov eax, dword [esp + 0x24]
cmp eax, 1
je 0x10041709
cmp eax, 2
jne 0x10041745
cmp eax, 1
jne 0x10041721
fild dword [esp + 0x2c]
jmp 0x10041725
mov dword [esp + 0x2c], 0
mov dword [esp + 0x24], 5
jmp 0x10041745
fld qword [esp + 0x2c]
fmul qword [esp + 0x3c]
mov ecx, dword [esp + 0x14]
fst qword [esi]
fld qword [ecx]
fucompp
fnstsw ax
test ah, 0x44
jnp 0x10041745
mov eax, dword [esp + 0x4a0]
and dword [eax + 0x3c], 0xfffffffe
lea ecx, [esp + 0x24]
call fcn.10076130
add ebp, 0x10
add esi, 8
inc ebx
sub edi, 1
jne 0x100416b3
jmp 0x100418b2
mov eax, dword [esp + 0x38]
test eax, eax
je 0x100417f7
mov esi, dword [eax + 0x14]
lea edx, [esp + 0x18]
push edx
mov edi, str.space
call fcn.10016c30
test eax, eax
je 0x100417a4
movzx eax, word [esp + 0x18]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fld qword [0x1026bf88]
fmul st(1), st(0)
fxch st(1)
fstp qword [ebp + 0x6d0]
jmp 0x100417aa
fld qword [0x1026bf88]
mov ebp, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], 0x100
mov edi, dword [ebx]
test edi, edi
je 0x100417e5
mov edx, dword [esp + 0x38]
mov esi, dword [edx + 0x14]
lea ecx, [esp + 0x18]
push ecx
call fcn.10016c30
test eax, eax
je 0x100417e5
movzx eax, word [esp + 0x18]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul st(1)
fstp qword [ebp]
add ebx, 4
add ebp, 8
sub dword [esp + 0x14], 1
jne 0x100417b8
jmp 0x100418b0
mov eax, dword [ebp + 0x3c]
test al, 1
je 0x10041802
xor ecx, ecx
jmp 0x10041813
mov ecx, 0
test al, 2
setne cl
lea ecx, [ecx*4 + 4]
test eax, 0x40000
je 0x1004181d
add ecx, 2
test al, 0x40
je 0x10041822
inc ecx
mov ecx, dword [ecx*4 + 0x102a8448]
mov esi, dword [ecx + 0x14]
lea edx, [esp + 0x18]
push edx
mov edi, str.space
mov dword [esp + 0x3c], ecx
call fcn.10016c30
test eax, eax
je 0x10041862
movzx eax, word [esp + 0x18]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fld qword [0x1026bf88]
fmul st(1), st(0)
fxch st(1)
fstp qword [ebp + 0x6d0]
jmp 0x10041868
fld qword [0x1026bf88]
mov ebp, ebx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], 0x100
mov edi, dword [ebx]
test edi, edi
je 0x100418a3
mov edx, dword [esp + 0x38]
mov esi, dword [edx + 0x14]
lea ecx, [esp + 0x18]
push ecx
call fcn.10016c30
test eax, eax
je 0x100418a3
movzx eax, word [esp + 0x18]
mov dword [esp + 0x20], eax
fild dword [esp + 0x20]
fmul st(1)
fstp qword [ebp]
add ebx, 4
add ebp, 8
sub dword [esp + 0x14], 1
jne 0x10041876
fstp st(0)
lea ecx, [esp + 0x44]
call fcn.10076130
mov eax, dword [esp + 0x4a0]
mov dword [eax + 0xbc], 1
mov dword [esp + 0x498], 0xffffffff
mov ecx, dword [esp + 0x490]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x488
ret 0x20