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

Disassembly:
sub esp, 0x8c
push ebx
mov ebx, dword [esp + 0x94]
test ebx, ebx
jne 0x100168ed
lea eax, [ebx + 0x14]
pop ebx
add esp, 0x8c
ret
mov eax, dword [esp + 0x98]
cdq
sub eax, edx
mov ecx, eax
mov eax, dword [esp + 0x9c]
cdq
sar ecx, 1
sub eax, edx
sar eax, 1
mov dword [esp + 0x44], ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x54], eax
mov dword [esp + 0x9c], eax
test ecx, ecx
jne 0x10016929
test eax, eax
je 0x10016e71
push ebx
call sym.ATextOut.dll_FT_Outline_Get_Orientation
add esp, 4
mov dword [esp + 0x50], eax
cmp eax, 2
jne 0x10016950
xor eax, eax
mov ecx, 6
cmp word [ebx], ax
pop ebx
cmovne eax, ecx
add esp, 0x8c
ret
push esi
mov esi, dword [ebx + 4]
xor ecx, ecx
push edi
xor edi, edi
mov dword [esp + 0x38], esi
xor eax, eax
mov dword [esp + 0x3c], edi
mov dword [esp + 0x50], ecx
cmp ax, word [ebx]
jge 0x10016e6f
push ebp
mov eax, dword [ebx + 0xc]
mov edx, dword [esi + edi*8 + 4]
mov dword [esp + 0x30], edx
movsx eax, word [eax + ecx*2]
mov ecx, dword [esi + edi*8]
mov dword [esp + 0x90], ecx
mov ecx, dword [esi + edi*8 + 4]
mov dword [esp + 0x88], ecx
mov ecx, dword [esi + edi*8]
mov ebp, ecx
sub ebp, dword [esi + eax*8]
mov esi, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], ebp
sub esi, dword [ecx + eax*8 + 4]
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], esi
call fcn.10018b00
mov ebx, eax
add esp, 4
mov dword [esp + 0x1c], ebx
test ebx, ebx
je 0x100169f7
push ebx
push ebp
call fcn.10014510
push ebx
push esi
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
call fcn.10014510
add esp, 0x10
mov dword [esp + 0x18], eax
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x4c]
cmp edi, eax
jg 0x10016e48
jge 0x10016a13
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + edi*8 + 8]
mov ecx, dword [ecx + edi*8 + 0xc]
jmp 0x10016a21
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x88]
mov ebp, eax
mov dword [esp + 0x48], ecx
sub ebp, dword [esp + 0x34]
mov esi, ecx
sub esi, dword [esp + 0x30]
mov dword [esp + 0x44], eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x2c], esi
mov dword [esp + 0x6c], ebp
mov dword [esp + 0x70], esi
test ebp, ebp
jne 0x10016a54
mov eax, esi
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
jmp 0x10016aa3
test esi, esi
jne 0x10016a63
mov eax, ebp
cdq
mov ebx, eax
xor ebx, edx
sub ebx, edx
jmp 0x10016aa3
lea eax, [esp + 0x6c]
push eax
call fcn.1001a880
mov edi, eax
lea eax, [esp + 0x70]
push eax
call fcn.1001a910
push dword [esp + 0x74]
call fcn.1001a810
add esp, 0xc
test edi, edi
jle 0x10016a9b
lea ecx, [edi - 1]
mov ebx, 1
shl ebx, cl
mov ecx, edi
add ebx, eax
sar ebx, cl
jmp 0x10016aa3
neg edi
mov ebx, eax
mov ecx, edi
shl ebx, cl
test ebx, ebx
je 0x10016bab
mov eax, 1
mov edi, ebx
mov dword [esp + 0x10], eax
test ebp, ebp
jns 0x10016ac3
neg ebp
or eax, 0xffffffff
mov dword [esp + 0x10], eax
test ebx, ebx
jns 0x10016ad1
mov edi, ebx
neg edi
neg eax
mov dword [esp + 0x10], eax
test edi, edi
jne 0x10016adc
mov ebp, 0x7fffffff
jmp 0x10016b1e
mov ecx, edi
mov eax, 0xffff
shr ecx, 0x11
sub eax, ecx
cmp ebp, eax
ja 0x10016afb
mov eax, edi
shl ebp, 0x10
shr eax, 1
xor edx, edx
add eax, ebp
div edi
jmp 0x10016b1c
mov edx, ebp
mov ecx, edi
shr ecx, 1
shl ebp, 0x10
add ecx, ebp
shr edx, 0x10
cmp ecx, ebp
push edi
sbb eax, eax
neg eax
add eax, edx
push ecx
push eax
call fcn.100199f0
add esp, 0xc
mov ebp, eax
cmp dword [esp + 0x10], 0
jge 0x10016b27
neg ebp
mov dword [esp + 0x28], ebp
mov eax, 1
mov dword [esp + 0x10], eax
mov edi, ebx
test esi, esi
jns 0x10016b43
neg esi
or eax, 0xffffffff
mov dword [esp + 0x10], eax
test ebx, ebx
jns 0x10016b51
mov edi, ebx
neg edi
neg eax
mov dword [esp + 0x10], eax
test edi, edi
jne 0x10016b5c
mov esi, 0x7fffffff
jmp 0x10016b9e
mov ecx, edi
mov eax, 0xffff
shr ecx, 0x11
sub eax, ecx
cmp esi, eax
ja 0x10016b7b
mov eax, edi
shl esi, 0x10
shr eax, 1
xor edx, edx
add eax, esi
div edi
jmp 0x10016b9c
mov edx, esi
mov ecx, edi
shr ecx, 1
shl esi, 0x10
add ecx, esi
shr edx, 0x10
cmp ecx, esi
push edi
sbb eax, eax
neg eax
add eax, edx
push ecx
push eax
call fcn.100199f0
add esp, 0xc
mov esi, eax
cmp dword [esp + 0x10], 0
jge 0x10016ba7
neg esi
mov dword [esp + 0x2c], esi
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x28]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x74], eax
mov edi, dword [esp + 0x74]
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x98]
add eax, edi
cmp eax, 0xffff1000
jle 0x10016dda
mov ecx, dword [esp + 0x14]
add eax, 0x10000
mov dword [esp + 0x68], eax
add ecx, ebp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x18]
add eax, esi
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x10], eax
jne 0x10016c42
neg eax
mov dword [esp + 0x10], eax
jmp 0x10016c48
neg ecx
mov dword [esp + 0x14], ecx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x7c], eax
mov edi, dword [esp + 0x7c]
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x8c], eax
sub edi, dword [esp + 0x8c]
cmp dword [esp + 0x5c], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
jne 0x10016cbb
neg edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x38], edi
cmp dword [esp + 0x1c], ebx
mov eax, ebx
cmovl eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0x38]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x84], eax
mov edi, dword [esp + 0x84]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x94], eax
cmp edi, dword [esp + 0x94]
jg 0x10016d3d
push dword [esp + 0x68]
push dword [esp + 0x54]
jmp 0x10016d45
push dword [esp + 0x18]
push dword [esp + 0x20]
push dword [esp + 0x18]
call fcn.10015aa0
mov dword [esp + 0x1c], eax
add esp, 0xc
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0x38]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x78], eax
mov edi, dword [esp + 0x78]
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x80], eax
cmp edi, dword [esp + 0x80]
jg 0x10016dbe
push dword [esp + 0x68]
push dword [esp + 0x64]
jmp 0x10016dc6
push dword [esp + 0x18]
push dword [esp + 0x20]
push dword [esp + 0x1c]
call fcn.10015aa0
mov edx, eax
add esp, 0xc
mov eax, dword [esp + 0x10]
jmp 0x10016dde
xor edx, edx
xor eax, eax
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x40]
add ecx, eax
mov eax, dword [esp + 0xa0]
add ecx, dword [esp + 0x50]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], ebp
mov eax, dword [eax + 4]
mov dword [esp + 0x1c], ebx
mov dword [eax + edi*8], ecx
mov eax, dword [esp + 0xa0]
mov ecx, dword [esp + 0x30]
add ecx, edx
add ecx, dword [esp + 0x60]
mov eax, dword [eax + 4]
mov dword [eax + edi*8 + 4], ecx
mov eax, esi
mov dword [esp + 0x18], eax
inc edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], edi
cmp edi, eax
jle 0x10016a03
mov ebx, dword [esp + 0xa0]
lea edi, [eax + 1]
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x3c]
inc ecx
mov dword [esp + 0x40], edi
movsx eax, word [ebx]
mov dword [esp + 0x54], ecx
cmp ecx, eax
jl 0x10016971
pop ebp
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x8c
ret