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

Disassembly:
push esi
sub esp, 0xcc
mov esi, dword [esp + 0xd4]
mov eax, dword [0x50302c]
xor eax, esp
mov dword [esp + 0xc8], eax
test byte [esi + 0x33], 1
jne 0x40abaa
mov esi, dword [esi + 0x14]
jmp 0x40ae22
mov word [ecx + 0x28], 0x101
lea eax, [esp + 0x50]
push eax
push 0x39
push 0x30
push edx
call dword [sym.imp.GDI32.dll_GetCharABCWidthsFloatA]
test eax, eax
je 0x40ae1f
fld dword [0x4c70dc]
fld st(0)
fadd dword [esp + 0x50]
fadd dword [esp + 0x54]
fadd dword [esp + 0x58]
fnstcw word [esp + 0x12]
movzx eax, word [esp + 0x12]
or eax, 0xc00
mov word [esp + 0x26], ax
fldcw word [esp + 0x26]
fistp dword [esp + 0x28]
fldcw word [esp + 0x12]
mov eax, dword [esp + 0x28]
xor esi, esi
test eax, eax
cmovns esi, eax
fld st(0)
fadd dword [esp + 0x5c]
fadd dword [esp + 0x60]
fadd dword [esp + 0x64]
fnstcw word [esp + 0x10]
movzx eax, word [esp + 0x10]
or eax, 0xc00
mov word [esp + 0x24], ax
fldcw word [esp + 0x24]
fistp dword [esp + 0x2c]
fldcw word [esp + 0x10]
mov eax, dword [esp + 0x2c]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0x68]
fadd dword [esp + 0x6c]
fadd dword [esp + 0x70]
fnstcw word [esp + 0xe]
movzx eax, word [esp + 0xe]
or eax, 0xc00
mov word [esp + 0x22], ax
fldcw word [esp + 0x22]
fistp dword [esp + 0x30]
fldcw word [esp + 0xe]
mov eax, dword [esp + 0x30]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0x74]
fadd dword [esp + 0x78]
fadd dword [esp + 0x7c]
fnstcw word [esp + 0xc]
movzx eax, word [esp + 0xc]
or eax, 0xc00
mov word [esp + 0x20], ax
fldcw word [esp + 0x20]
fistp dword [esp + 0x34]
fldcw word [esp + 0xc]
mov eax, dword [esp + 0x34]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0x80]
fadd dword [esp + 0x84]
fadd dword [esp + 0x88]
fnstcw word [esp + 0xa]
movzx eax, word [esp + 0xa]
or eax, 0xc00
mov word [esp + 0x1e], ax
fldcw word [esp + 0x1e]
fistp dword [esp + 0x38]
fldcw word [esp + 0xa]
mov eax, dword [esp + 0x38]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0x8c]
fadd dword [esp + 0x90]
fadd dword [esp + 0x94]
fnstcw word [esp + 8]
movzx eax, word [esp + 8]
or eax, 0xc00
mov word [esp + 0x1c], ax
fldcw word [esp + 0x1c]
fistp dword [esp + 0x3c]
fldcw word [esp + 8]
mov eax, dword [esp + 0x3c]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0x98]
fadd dword [esp + 0x9c]
fadd dword [esp + 0xa0]
fnstcw word [esp + 6]
movzx eax, word [esp + 6]
or eax, 0xc00
mov word [esp + 0x1a], ax
fldcw word [esp + 0x1a]
fistp dword [esp + 0x40]
fldcw word [esp + 6]
mov eax, dword [esp + 0x40]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0xa4]
fadd dword [esp + 0xa8]
fadd dword [esp + 0xac]
fnstcw word [esp + 4]
movzx eax, word [esp + 4]
or eax, 0xc00
mov word [esp + 0x18], ax
fldcw word [esp + 0x18]
fistp dword [esp + 0x44]
fldcw word [esp + 4]
mov eax, dword [esp + 0x44]
cmp esi, eax
cmovl esi, eax
fld st(0)
fadd dword [esp + 0xb0]
fadd dword [esp + 0xb4]
fadd dword [esp + 0xb8]
fnstcw word [esp + 2]
movzx eax, word [esp + 2]
or eax, 0xc00
mov word [esp + 0x16], ax
fldcw word [esp + 0x16]
fistp dword [esp + 0x48]
fldcw word [esp + 2]
mov eax, dword [esp + 0x48]
cmp esi, eax
cmovl esi, eax
fadd dword [esp + 0xbc]
fadd dword [esp + 0xc0]
fadd dword [esp + 0xc4]
fnstcw word [esp]
movzx eax, word [esp]
or eax, 0xc00
mov word [esp + 0x14], ax
fldcw word [esp + 0x14]
fistp dword [esp + 0x4c]
fldcw word [esp]
mov eax, dword [esp + 0x4c]
cmp esi, eax
cmovl esi, eax
jmp 0x40ae22
mov esi, dword [esi + 0x18]
mov ecx, dword [esp + 0xc8]
xor ecx, esp
call fcn.0049e0f0
mov eax, esi
add esp, 0xcc
pop esi
ret