Function at 0x467690
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x52caee
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x10c4
call fcn.005124e0
mov eax, dword [0x59c6b8]
xor eax, esp
mov dword [esp + 0x10c0], eax
push ebx
push esi
push edi
mov eax, dword [0x59c6b8]
xor eax, esp
push eax
lea eax, [esp + 0x10d8]
mov dword fs:[0], eax
mov ebx, dword [ebp + 8]
mov eax, ecx
xor esi, esi
mov dword [eax + 0xfc], esi
mov dword [eax + 0xf8], esi
mov edi, dword [ebx + 0x1ec]
mov ecx, 0xd
mov dword [esp + 0x18], eax
mov dword [esp + 0x54], ebx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x64], ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x5c], edi
cmp edi, esi
je 0x468059
cmp dword [edi + 0x18], 4
je 0x468059
fld qword [ebx + 0x1f0]
fld qword [ebx + 0x1f0]
fld qword [ebx + 0x208]
fmul st(2)
fld qword [ebx + 0x1f8]
fmul st(2)
faddp st(1)
fld qword [ebx + 0x200]
fmulp st(2)
fld qword [ebx + 0x210]
fmulp st(3)
fxch st(1)
faddp st(2)
fld qword [ebx + 0x20]
fmul st(2)
fld qword [ebx + 0x10]
fmul st(2)
faddp st(1)
fld qword [ebx + 0x28]
fmulp st(3)
fld qword [ebx + 0x18]
fmulp st(2)
fxch st(2)
faddp st(1)
fld qword [ebx]
fxch st(2)
fabs
fld qword [0x531540]
fmul st(3), st(0)
fxch st(1)
fcomp st(3)
fnstsw ax
fstp st(2)
test ah, 0x41
je 0x468055
fld qword [ebx + 8]
fxch st(1)
fabs
fxch st(1)
fmulp st(2)
fcompp
fnstsw ax
test ah, 0x41
je 0x468059
push 0x20
call fcn.00511699
add esp, 4
mov dword [esp + 0x34], eax
mov dword [esp + 0x10e0], esi
cmp eax, esi
je 0x4677ca
lea ecx, [edi + 0xc]
push ecx
mov ecx, eax
call fcn.004638b0
mov dword [esp + 0x1c], eax
jmp 0x4677ce
mov dword [esp + 0x1c], esi
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
mov ecx, dword [eax + 0xcc]
push edx
mov dword [esp + 0x10e4], 0xffffffff
call fcn.0047d0d0
mov esi, eax
test esi, esi
je 0x46780f
cmp dword [esp + 0x1c], 0
je 0x467e52
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
jmp 0x467e52
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx + 0xc0]
push 0
push edx
mov ecx, edi
mov dword [esp + 0x44], 0
call fcn.00423e50
mov ebx, eax
mov dword [esp + 0x2c], ebx
test ebx, ebx
jne 0x4678a3
mov edi, dword [edi + 0x14]
test edi, edi
je 0x467841
mov edi, dword [edi + 4]
jmp 0x467846
mov edi, str._unnamed_
push edi
push str.Couldnt_find_a_font_for_0:s
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
call fcn.00412330
add esp, 0x14
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x46786a
mov edx, dword [ecx]
mov eax, dword [edx]
push 1
call eax
mov eax, dword [esp + 0x14]
test eax, eax
je 0x468059
mov ecx, dword [eax + 4]
push ecx
call fcn.00529b96
mov ecx, dword [esp + 0x18]
add esp, 4
mov esi, ecx
test ecx, ecx
je 0x468059
call fcn.004a1da0
push esi
call fcn.0051163f
add esp, 4
jmp 0x468059
cmp dword [ebx], 0
jne 0x4679fb
mov eax, dword [edi + 0x28]
mov esi, dword [edi + 0x24]
push 0
push 0x5464f0
lea ecx, [esp + 0x58]
push ecx
lea edx, [esp + 0x20]
push edx
mov dword [esp + 0x48], eax
call fcn.004a3620
add esp, 0x10
test eax, eax
jne 0x4678fb
push str.Couldnt_create_temporary_font_file
push 0xffffffffffffffff
push 0xffffffffffffffff
push 4
call fcn.00412330
add esp, 0x10
mov ecx, ebx
call fcn.00423da0
push ebx
call fcn.0051163f
add esp, 4
jmp case.0x467a38.4
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x18]
push 0
lea ecx, [esp + 0x68]
mov dword [esp + 0x84], eax
mov eax, dword [edx + 0xc0]
push ecx
push eax
lea ecx, [esp + 0x80]
mov dword [esp + 0x80], 9
mov dword [esp + 0x88], esi
call fcn.0044ea00
lea ecx, [esp + 0x74]
call fcn.0044ea50
cmp dword [esp + 0x64], 8
je 0x467974
push str.Embedded_font_object_is_wrong_type
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
call fcn.00412330
add esp, 0x10
lea ecx, [esp + 0x64]
call fcn.0044ea50
mov ecx, dword [esp + 0x50]
push ecx
call fcn.005126eb
add esp, 4
jmp 0x4678e6
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
mov eax, dword [edx + 8]
call eax
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
mov edx, dword [edx + 0x1c]
push 0x1000
lea eax, [esp + 0xd0]
push eax
call edx
test eax, eax
jle 0x4679d4
jmp 0x4679a0
mov ecx, dword [esp + 0x50]
push ecx
push eax
lea edx, [esp + 0xd4]
push 1
push edx
call fcn.00513fed
mov ecx, dword [esp + 0x7c]
mov eax, dword [ecx]
mov eax, dword [eax + 0x1c]
add esp, 0x10
push 0x1000
lea edx, [esp + 0xd0]
push edx
call eax
test eax, eax
jg 0x4679a0
mov ecx, dword [esp + 0x6c]
mov edx, dword [ecx]
mov eax, dword [edx + 0xc]
call eax
lea ecx, [esp + 0x64]
call fcn.0044ea50
mov ecx, dword [esp + 0x50]
push ecx
call fcn.005126eb
mov esi, dword [esp + 0x18]
add esp, 4
jmp 0x467a2b
mov eax, dword [ebx + 0x28]
mov edx, dword [ebx + 0x14]
mov esi, dword [ebx + 0x10]
mov dword [esp + 0x3c], edx
test eax, eax
js 0x467a13
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x18], eax
fld qword [ebx + 0x18]
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x467a2b
fld qword [ebx + 0x18]
mov edx, dword [esp + 0x1c]
fstp qword [edx + 0x10]
mov eax, dword [ebx + 4]
dec eax
cmp eax, 0xa
ja case.0x467a38.4
jmp dword [eax*4 + 0x468080]
mov eax, dword [esi + 4]
xor edx, edx
cmp esi, dword [esp + 0x14]
lea ecx, [edi + 0xa4]
sete dl
push ecx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + 0xcc]
push edx
push eax
mov eax, dword [esp + 0x28]
push eax
call fcn.0047d120
mov esi, eax
test esi, esi
jne 0x467e3a
mov edi, dword [edi + 0x14]
test edi, edi
je 0x467a7e
mov eax, dword [edi + 4]
jmp 0x467a83
mov eax, str._unnamed_
push eax
push str.Couldnt_create_a_font_for_0:s
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
call fcn.00412330
mov esi, dword [esp + 0x40]
add esp, 0x14
mov ecx, esi
call fcn.00423da0
push esi
call fcn.0051163f
add esp, 4
jmp case.0x467a38.4
mov eax, dword [esi + 4]
xor ecx, ecx
cmp esi, dword [esp + 0x14]
lea edx, [edi + 0xa4]
sete cl
push edx
mov edx, dword [esp + 0x20]
push ecx
push eax
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0xcc]
push edx
call fcn.0047d140
jmp 0x467a68
mov eax, dword [esi + 4]
xor edx, edx
cmp esi, dword [esp + 0x14]
lea ecx, [edi + 0xa4]
sete dl
push ecx
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx + 0xcc]
push edx
push eax
mov eax, dword [esp + 0x28]
push eax
call fcn.0047d160
jmp 0x467a68
mov edx, dword [esp + 0x3c]
mov eax, dword [esi + 4]
push 0
push edx
push eax
call fcn.004960f0
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x467b6a
push ebx
mov ecx, edi
call fcn.00423600
mov dword [esp + 0x24], eax
mov eax, dword [ebx]
mov edx, dword [eax]
push 1
mov ecx, ebx
mov dword [esp + 0x14], 0x100
call edx
mov eax, dword [edi + 0x18]
cmp eax, 5
je 0x467b74
cmp eax, 6
je 0x467b74
mov edx, dword [esp + 0x24]
xor eax, eax
cmp dword [edx + eax*4], 0
jne 0x467b60
mov dword [edx + eax*4], 0xffffffff
inc eax
cmp eax, 0x100
jl 0x467b53
jmp 0x467b78
xor eax, eax
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x467b78
mov edx, dword [esp + 0x24]
mov eax, dword [edi + 0x20]
test eax, eax
je 0x467b84
mov ecx, dword [eax + 4]
jmp 0x467b86
xor ecx, ecx
mov eax, dword [esi + 4]
push ecx
mov ecx, dword [esp + 0x14]
push ecx
xor ecx, ecx
cmp esi, dword [esp + 0x1c]
push edx
mov edx, dword [esp + 0x48]
sete cl
push edx
mov edx, dword [esp + 0x2c]
push ecx
push eax
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0xcc]
push edx
call fcn.0047d1c0
jmp 0x467a68
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x1c]
xor ecx, ecx
cmp esi, dword [esp + 0x14]
sete cl
push ecx
push eax
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0xcc]
push edx
call fcn.0047d180
jmp 0x467a68
cmp dword [edi + 0xd8], 0
je 0x467c19
mov ebx, dword [edi + 0xdc]
push 4
push ebx
call fcn.004a30a0
mov edx, dword [edi + 0xd8]
lea ecx, [ebx*4]
push ecx
push edx
push eax
mov dword [esp + 0x38], eax
call fcn.00511be0
mov ecx, dword [esp + 0x38]
add esp, 0x14
jmp 0x467c1d
xor ecx, ecx
xor ebx, ebx
mov eax, dword [esi + 4]
mov edx, dword [esp + 0x1c]
push ebx
push ecx
xor ecx, ecx
cmp esi, dword [esp + 0x1c]
sete cl
push ecx
push eax
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 0xcc]
push edx
call fcn.0047d1a0
jmp 0x467a68
xor eax, eax
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], eax
cmp dword [ebx], eax
jne 0x467c90
cmp dword [edi + 0xd8], eax
je 0x467df5
mov ebx, dword [edi + 0xdc]
push 4
push ebx
mov dword [esp + 0x18], ebx
call fcn.004a30a0
mov edx, dword [edi + 0xd8]
lea ecx, [ebx*4]
push ecx
push edx
push eax
mov dword [esp + 0x38], eax
call fcn.00511be0
jmp 0x467df2
mov ecx, dword [0x59da88]
call fcn.00437a20
test eax, eax
jne 0x467cac
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], eax
jmp 0x467df5
mov ecx, edi
call fcn.00423bb0
mov dword [esp + 0x34], eax
test eax, eax
je 0x467dd0
mov ecx, dword [esp + 0x3c]
mov eax, dword [esi + 4]
push 0
push ecx
push eax
call fcn.004960f0
mov ebx, eax
add esp, 0xc
test ebx, ebx
je 0x467dc5
xor edi, edi
mov ecx, ebx
mov dword [esp + 0x44], edi
call fcn.00493bc0
test eax, eax
jle 0x467d26
lea ecx, [ecx]
push edi
mov ecx, ebx
call fcn.00493bd0
cmp eax, 3
jne 0x467d0a
push edi
mov ecx, ebx
call fcn.00493be0
cmp eax, 1
je 0x467d22
push edi
mov ecx, ebx
call fcn.00493bd0
test eax, eax
je 0x467d22
mov ecx, ebx
inc edi
call fcn.00493bc0
cmp edi, eax
jl 0x467cf0
mov dword [esp + 0x44], edi
mov ecx, ebx
call fcn.00493bc0
cmp edi, eax
jge 0x467db7
mov eax, dword [esp + 0x34]
cmp dword [eax + 4], 0
jne 0x467d49
mov dword [esp + 0x10], 0x10000
jmp 0x467d50
mov edx, dword [eax + 8]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x10]
push 4
push eax
call fcn.004a30a0
xor edi, edi
add esp, 8
mov dword [esp + 0x24], eax
cmp dword [esp + 0x10], edi
jle 0x467db7
jmp 0x467d70
push 8
lea ecx, [esp + 0xb0]
push ecx
mov ecx, dword [esp + 0x3c]
push edi
call fcn.00409f90
test eax, eax
jle 0x467da5
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x44]
push edx
push eax
mov ecx, ebx
call fcn.00493c00
mov ecx, dword [esp + 0x24]
mov dword [ecx + edi*4], eax
jmp 0x467db0
mov edx, dword [esp + 0x24]
mov dword [edx + edi*4], 0xffffffff
inc edi
cmp edi, dword [esp + 0x10]
jl 0x467d70
mov eax, dword [ebx]
mov edx, dword [eax]
push 1
mov ecx, ebx
call edx
mov edi, dword [esp + 0x5c]
mov ecx, dword [esp + 0x34]
call fcn.0040afd0
jmp 0x467df5
mov eax, dword [edi + 0x14]
test eax, eax
je 0x467ddc
mov eax, dword [eax + 4]
jmp 0x467de1
mov eax, str._unnamed_
push eax
push str.Couldnt_find_a_mapping_to_Unicode_for_font_0:s
push 0xffffffffffffffff
push 0xffffffffffffffff
push 1
call fcn.00412330
add esp, 0x14
mov eax, dword [edi + 0x20]
test eax, eax
je 0x467e01
mov ecx, dword [eax + 4]
jmp 0x467e03
xor ecx, ecx
mov edx, dword [esp + 0x24]
mov eax, dword [esi + 4]
push ecx
mov ecx, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x44]
push edx
xor edx, edx
cmp esi, dword [esp + 0x20]
push ecx
mov ecx, dword [esp + 0x28]
mov ecx, dword [ecx + 0xcc]
sete dl
push edx
push eax
mov eax, dword [esp + 0x34]
push eax
call fcn.0047d1c0
jmp 0x467a68
mov ebx, dword [esp + 0x2c]
mov ecx, ebx
call fcn.00423da0
push ebx
call fcn.0051163f
mov ebx, dword [esp + 0x58]
add esp, 4
mov eax, dword [esi + 4]
fld qword [ebx + 0x1f0]
fld qword [eax + 0x10]
mov eax, dword [eax + 0x18]
fld qword [ebx + 0x238]
mov dword [esp + 0x54], eax
fmul qword [ebx + 0x1f8]
fld qword [ebx + 0x200]
fmul qword [ebx + 0x238]
fld st(1)
fmul st(3)
fadd qword [ebx + 0x208]
fld st(1)
fmulp st(4)
fxch st(3)
fadd qword [ebx + 0x210]
fxch st(2)
fmul st(4)
fst qword [esp + 0x2c]
fxch st(1)
fmul st(4)
fst qword [esp + 0x24]
fxch st(3)
fmul st(4)
fstp qword [esp + 0x1c]
fxch st(1)
fmulp st(3)
fxch st(2)
fstp qword [esp + 0x84]
cmp eax, 0xb
ja 0x467fe8
fstp st(1)
xor ebx, ebx
fstp st(0)
lea edx, [edi + 0xa4]
fld1
mov dword [esp + 0x10], ebx
fstp qword [esp + 0x3c]
mov dword [esp + 0x34], edx
fldz
fstp qword [esp + 0x44]
mov eax, dword [esp + 0x34]
mov ecx, dword [eax]
test ecx, ecx
je 0x467f9a
mov al, byte [ecx]
test al, al
je 0x467f9a
cmp byte [ecx + 1], 0
jne 0x467f9a
cmp al, 0x41
jl 0x467f0b
cmp al, 0x5a
jle 0x467f1f
cmp al, 0x61
jl 0x467f13
cmp al, 0x7a
jle 0x467f1f
cmp al, 0x30
jl 0x467f9a
cmp al, 0x39
jg 0x467f9a
lea eax, [esp + 0x58]
movzx edx, bl
push eax
push ecx
fld qword [edi + edx*8 + 0x5b0]
mov ecx, dword [esp + 0x5c]
mov edx, dword [ecx*4 + 0x583578]
fstp qword [esp + 0x64]
mov ecx, dword [edx + 0x14]
call fcn.00408450
fld qword [0x534868]
fld qword [esp + 0x5c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x467f98
mov ax, word [esp + 0x58]
cmp ax, 0xa
jbe 0x467f98
movzx eax, ax
mov dword [esp + 0x5c], eax
fild dword [esp + 0x5c]
fmul qword [0x535848]
fdivp st(1)
fld qword [esp + 0x3c]
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x467f8a
fst qword [esp + 0x3c]
fadd qword [esp + 0x44]
inc dword [esp + 0x10]
fstp qword [esp + 0x44]
jmp 0x467f9a
fstp st(0)
add dword [esp + 0x34], 4
inc ebx
cmp ebx, 0x100
jl 0x467ee1
cmp dword [esp + 0x10], 0
je 0x467fe0
fild dword [esp + 0x10]
fdivr qword [esp + 0x44]
fld1
fcomp st(1)
fnstsw ax
test ah, 0x41
jne 0x467fde
fadd qword [esp + 0x3c]
fmul qword [0x5312a8]
fld qword [esp + 0x2c]
fmul st(1)
fxch st(1)
fmul qword [esp + 0x24]
jmp 0x467fe8
fstp st(0)
fld qword [esp + 0x2c]
fld qword [esp + 0x24]
mov edi, dword [esp + 0x18]
fxch st(1)
mov ecx, dword [edi + 0xc8]
fstp qword [esp + 0x8c]
fstp qword [esp + 0x94]
fld qword [esp + 0x1c]
fstp qword [esp + 0x9c]
fld qword [esp + 0x84]
fstp qword [esp + 0xa4]
call fcn.0042a0f0
push eax
lea ecx, [esp + 0x90]
push ecx
mov ecx, dword [edi + 0xcc]
push esi
call fcn.0047d210
mov ecx, dword [esp + 0x14]
mov dword [edi + 0xf8], eax
test ecx, ecx
je 0x468059
mov esi, ecx
call fcn.004a1da0
push esi
call fcn.0051163f
add esp, 4
jmp 0x468059
fstp st(1)
fstp st(0)
mov ecx, dword [esp + 0x10d8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x10c0]
xor ecx, esp
call fcn.00511afd
mov esp, ebp
pop ebp
ret 4