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

Disassembly:
sub esp, 0x94
push ebx
push ebp
push esi
mov esi, ecx
mov eax, dword [esi + 0x84]
cmp eax, 0x38
push edi
jle 0x545c9e
mov ebp, 0x800
jmp 0x545cb9
cmp eax, 0x1c
jle 0x545caa
mov ebp, 0x400
jmp 0x545cb9
cmp eax, 0x14
mov ebp, 0x200
jg 0x545cb9
mov ebp, 0x100
test dword [esi + 0x14], 0x80000
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x20], ebp
mov dword [esi + 0x80], 0x7f
je 0x545ce5
sar ebp, 2
mov dword [esp + 0x2c], ebp
mov dword [esi + 0x80], 0x3a
xor eax, eax
mov dword [esp + 0x84], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov dword [esp + 0x80], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x20]
mov ecx, ebp
neg ecx
push 0
mov dword [esp + 0x7c], 0x28
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], ecx
mov word [esp + 0x88], 1
mov dword [esp + 0x8c], 0
mov word [esp + 0x8a], 0x20
call dword [sym.imp.gdi32.dll_CreateCompatibleDC]
push 0
push 0
lea edx, [esp + 0x5c]
push edx
mov ebx, eax
push 0
lea eax, [esp + 0x88]
push eax
push ebx
mov dword [esp + 0x54], ebx
call dword [sym.imp.gdi32.dll_CreateDIBSection]
mov edi, dword [sym.imp.gdi32.dll_SelectObject]
push eax
push ebx
mov dword [esp + 0x58], eax
call edi
mov ecx, dword [esp + 0xa8]
push ecx
push ebx
mov dword [esp + 0x54], eax
call edi
push 1
push ebx
mov dword [esp + 0x60], eax
call dword [sym.imp.gdi32.dll_SetMapMode]
mov eax, dword [esi + 0x58]
movzx edx, ah
mov dh, al
sar eax, 0x10
movzx eax, al
shl edx, 8
or edx, eax
push edx
push ebx
call dword [sym.imp.gdi32.dll_SetTextColor]
mov eax, dword [esi + 0x60]
movzx ecx, ah
mov ch, al
sar eax, 0x10
movzx edx, al
shl ecx, 8
or ecx, edx
push ecx
push ebx
call dword [sym.imp.gdi32.dll_SetBkColor]
push 0
push ebx
call dword [sym.imp.gdi32.dll_SetTextAlign]
mov eax, dword [esi + 0x14]
and eax, 0x100000
neg eax
sbb eax, eax
push 0
and eax, 0xfffffffb
push 4
add eax, 8
lea edi, [esi + 0x18]
lea ecx, [esi + 0xb4]
push 1
push eax
mov eax, dword [esp + 0x30]
push ebp
push eax
push edi
push ecx
mov ecx, esi
call fcn.0053d870
test eax, eax
je 0x545e73
mov ecx, dword [esp + 0x4c]
mov ebp, dword [sym.imp.gdi32.dll_SelectObject]
push ecx
push ebx
call ebp
mov edx, dword [esp + 0x58]
push edx
push ebx
call ebp
mov eax, dword [esp + 0x50]
push eax
call dword [sym.imp.gdi32.dll_DeleteObject]
push ebx
call dword [sym.imp.gdi32.dll_DeleteDC]
push edi
push str.Error_creating_scanning_texture_for_font__s
push 0xffffffffffffffff
push esi
call fcn.00533f30
add esp, 0x10
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x94
ret 4
xor eax, eax
mov edi, 0x20
cmp dword [esi + 0x80], edi
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], eax
mov word [esp + 0x1c], 0x78
mov byte [esp + 0x13], 0x20
jle 0x545ee7
mov cl, byte [esp + 0x13]
lea edx, [esp + 0x44]
push edx
push 1
lea eax, [esp + 0x24]
push eax
push ebx
mov byte [esp + 0x2c], cl
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32A]
movzx eax, byte [esp + 0x44]
mov ecx, dword [esi + 0x68]
cmp ecx, eax
jle 0x545ebf
mov eax, ecx
mov ecx, dword [esp + 0x48]
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0x6c]
cmp eax, ecx
jg 0x545ecf
mov eax, ecx
mov dword [esi + 0x6c], eax
mov al, byte [esp + 0x13]
add al, 1
movzx ecx, al
cmp ecx, dword [esi + 0x80]
mov byte [esp + 0x13], al
jl 0x545e96
cmp dword [esi + 0x80], edi
mov al, 0x20
mov byte [esp + 0x13], al
jle 0x54614f
mov ebp, edi
jmp 0x545f00
mov byte [esp + 0x1c], al
lea eax, [esp + 0x6c]
push eax
push ebp
push ebp
lea edx, [ebp + ebp*2]
push ebx
lea edi, [esi + edx*8 - 0x244]
call dword [sym.imp.gdi32.dll_GetCharABCWidthsFloatA]
test eax, eax
jne 0x545f41
lea ecx, [esp + 0x38]
push ecx
push ebp
push ebp
push ebx
call dword [sym.imp.gdi32.dll_GetCharWidth32A]
fld1
fst dword [esp + 0x6c]
fild dword [esp + 0x38]
fstp dword [esp + 0x70]
fstp dword [esp + 0x74]
lea edx, [esp + 0x44]
push edx
push 1
lea eax, [esp + 0x24]
push eax
push ebx
call dword [sym.imp.gdi32.dll_GetTextExtentPoint32A]
fild dword [esp + 0x48]
sub esp, 8
fmul dword [0x5ae17c]
fstp qword [esp]
call fcn.00590180
fnstcw word [esp + 0x20]
add esp, 8
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x14], eax
fldcw word [esp + 0x14]
fistp qword [esp + 0x30]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x14], ecx
fldcw word [esp + 0x18]
fld dword [esp + 0x6c]
call fcn.00588a90
fld dword [esp + 0x74]
mov byte [edi + 6], al
call fcn.00588a90
mov ebp, dword [esp + 0x28]
mov byte [edi + 7], al
mov edx, dword [esi + 0x68]
add edx, ebp
cmp edx, dword [esp + 0x20]
jle 0x545fd7
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
mov dword [esp + 0x28], 0
mov ebp, dword [esp + 0x28]
lea eax, [ecx + eax + 1]
mov dword [esp + 0x24], eax
jmp 0x545fdb
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x44]
mov ecx, dword [esi + 0x6c]
add edx, ebp
push 0x520
mov dword [esp + 0x68], edx
lea edx, [esp + 0x60]
push edx
add ecx, eax
mov dword [esp + 0x68], eax
push 1
lea eax, [esp + 0x28]
push eax
push ebx
mov dword [esp + 0x70], ebp
mov dword [esp + 0x7c], ecx
call dword [sym.imp.user32.dll_DrawTextA]
push 0x120
lea ecx, [esp + 0x60]
push ecx
push 1
lea edx, [esp + 0x28]
push edx
push ebx
call dword [sym.imp.user32.dll_DrawTextA]
fild dword [esp + 0x14]
mov eax, dword [esp + 0x14]
test eax, eax
jge 0x546038
fadd qword [0x61d120]
fmul qword [0x5cad60]
mov edx, dword [esp + 0x44]
fnstcw word [esp + 0x18]
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x14], eax
fldcw word [esp + 0x14]
fistp qword [esp + 0x30]
mov ecx, dword [esp + 0x30]
sub edx, ecx
add ebp, edx
fldcw word [esp + 0x18]
mov dword [esp + 0x28], ebp
fld dword [esp + 0x74]
fldz
fcom st(1)
fnstsw ax
test ah, 5
jp 0x54607f
fstp st(1)
jmp 0x546081
fstp st(0)
mov ecx, dword [esp + 0x5c]
fnstcw word [esp + 0x18]
mov eax, dword [esp + 0x64]
sub eax, ecx
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x14], eax
fisubr dword [esp + 0x14]
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x14], eax
mov al, byte [esp + 0x68]
mov word [edi], cx
fldcw word [esp + 0x14]
sub al, bl
mov byte [edi + 5], al
mov word [edi + 2], bx
movsx ecx, cx
fistp dword [esp + 0x14]
mov dl, byte [esp + 0x14]
mov byte [edi + 4], dl
mov ebx, dword [esi + 0xb4]
mov dword [esp + 0x14], ecx
movzx edx, dl
fldcw word [esp + 0x18]
add edx, ecx
fild dword [esp + 0x14]
fidiv dword [ebx + 4]
movsx ebx, word [esp + 0x60]
mov dword [esp + 0x14], ebx
fstp dword [edi + 8]
fild dword [esp + 0x14]
mov ebp, dword [esi + 0xb4]
mov dword [esp + 0x14], edx
movzx edx, al
add edx, ebx
fidiv dword [ebp + 8]
mov ebx, dword [esp + 0x3c]
fstp dword [edi + 0xc]
fild dword [esp + 0x14]
mov ecx, dword [esi + 0xb4]
mov dword [esp + 0x14], edx
fidiv dword [ecx + 4]
fstp dword [edi + 0x10]
fild dword [esp + 0x14]
mov eax, dword [esi + 0xb4]
fidiv dword [eax + 8]
mov al, byte [esp + 0x13]
add al, 1
movzx ebp, al
mov byte [esp + 0x13], al
fstp dword [edi + 0x14]
cmp ebp, dword [esi + 0x80]
jl 0x545f00
mov ebp, dword [esp + 0x2c]
mov ecx, dword [esi + 0xb4]
mov eax, dword [ecx + 4]
lea edi, [esi + 0xb4]
cdq
idiv dword [esi + 0x68]
push 0
push 0
push 0
mov dword [esi + 0x78], eax
mov eax, dword [ecx + 8]
cdq
idiv dword [esi + 0x6c]
mov dword [esi + 0x7c], eax
call fcn.00538bb0
mov ecx, eax
xor edx, edx
cmp ecx, edx
mov dword [esp + 0x28], ecx
je 0x546476
mov eax, dword [esi + 0x14]
test eax, 0x18000
je 0x546318
test eax, 0x8000
je 0x5461ad
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x3c], edx
jmp 0x5461c4
test eax, 0x10000
je 0x5461c4
mov dword [esp + 0x24], 0xff000000
mov dword [esp + 0x3c], 0xffffff
cmp ebp, edx
jle 0x546441
mov eax, dword [esp + 0x20]
fld dword [0x5e7dc4]
fld qword [0x6246e0]
lea edi, [eax*4]
fld qword [0x623b38]
mov dword [esp + 0x14], edx
fld dword [0x5ae17c]
mov dword [esp + 0x30], edi
mov dword [esp + 0x38], ebp
test eax, eax
mov edi, ecx
jle 0x5462e9
mov ebp, edx
mov dword [esp + 0x2c], eax
mov edx, dword [esp + 0x54]
mov eax, dword [edx + ebp]
mov edx, dword [esi + 0x60]
and eax, 0xffffff
and edx, 0xffffff
cmp eax, edx
jne 0x54622f
mov eax, dword [esp + 0x3c]
mov dword [edi], eax
jmp 0x5462d4
mov edx, dword [esi + 0x58]
and edx, 0xffffff
cmp eax, edx
jne 0x546247
mov eax, dword [esp + 0x24]
mov dword [edi], eax
jmp 0x5462d4
mov edx, eax
shr edx, 8
movzx edx, dl
mov ecx, eax
shr ecx, 0x10
mov dword [esp + 0x18], edx
movzx ecx, cl
fild dword [esp + 0x18]
mov dword [esp + 0x18], ecx
movzx edx, al
fmul st(4)
fild dword [esp + 0x18]
mov dword [esp + 0x18], edx
fmul st(2)
faddp st(1)
fild dword [esp + 0x18]
fmul st(4)
faddp st(1)
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x546289
fstp st(0)
fld st(1)
fnstcw word [esp + 0x18]
movzx eax, word [esp + 0x18]
or eax, 0xc00
test dword [esi + 0x14], 0x10000
mov dword [esp + 0x40], eax
fldcw word [esp + 0x40]
fistp dword [esp + 0x40]
mov cl, byte [esp + 0x40]
mov al, cl
fldcw word [esp + 0x18]
je 0x5462bb
test cl, cl
sete al
xor edx, edx
mov dh, cl
mov ecx, dword [esp + 0x28]
movzx eax, al
or edx, eax
shl edx, 8
or edx, eax
shl edx, 8
or edx, eax
mov dword [edi], edx
add edi, 4
add ebp, 4
sub dword [esp + 0x2c], 1
jne 0x54620b
mov eax, dword [esp + 0x20]
mov edx, dword [esi + 0xb4]
add ecx, dword [edx + 0x10]
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0x30]
sub dword [esp + 0x38], 1
lea edi, [esi + 0xb4]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x14], edx
jne 0x5461fb
jmp 0x546439
cmp ebp, edx
jle 0x546441
fld dword [0x5e7dc4]
mov dword [esp + 0x24], edx
fld qword [0x6246e0]
mov edx, dword [esp + 0x20]
fld qword [0x623b38]
mov dword [esp + 0x14], ebp
fld dword [0x5ae17c]
test edx, edx
mov edi, ecx
jle 0x546410
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x38], edx
mov eax, dword [esp + 0x54]
mov ecx, dword [eax + ebp]
mov eax, dword [esi + 0x60]
and ecx, 0xffffff
and eax, 0xffffff
cmp ecx, eax
jne 0x546376
mov dword [edi], ecx
jmp 0x5463fb
mov eax, dword [esi + 0x58]
and eax, 0xffffff
cmp ecx, eax
jne 0x54638c
or ecx, 0xff000000
mov dword [edi], ecx
jmp 0x5463fb
mov edx, ecx
shr edx, 8
movzx edx, dl
mov eax, ecx
shr eax, 0x10
mov dword [esp + 0x30], edx
movzx eax, al
fild dword [esp + 0x30]
mov dword [esp + 0x30], eax
movzx edx, cl
fmul st(4)
fild dword [esp + 0x30]
mov dword [esp + 0x30], edx
fmul st(2)
faddp st(1)
fild dword [esp + 0x30]
fmul st(4)
faddp st(1)
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x5463ce
fstp st(0)
fld st(1)
mov edx, dword [esp + 0x20]
fnstcw word [esp + 0x18]
movzx eax, word [esp + 0x18]
or eax, 0xc00
mov dword [esp + 0x30], eax
fldcw word [esp + 0x30]
fistp qword [esp + 0x30]
mov eax, dword [esp + 0x30]
shl eax, 0x18
or eax, ecx
fldcw word [esp + 0x18]
mov dword [edi], eax
add edi, 4
add ebp, 4
sub dword [esp + 0x38], 1
jne 0x546356
mov ecx, dword [esp + 0x28]
mov eax, dword [esi + 0xb4]
add ecx, dword [eax + 0x10]
lea edi, [esi + 0xb4]
lea eax, [edx*4]
add dword [esp + 0x24], eax
sub dword [esp + 0x14], 1
mov dword [esp + 0x28], ecx
jne 0x546344
fstp st(1)
fstp st(2)
fstp st(0)
fstp st(0)
mov ecx, dword [edi]
push 0
push 0
push 0
call fcn.00538be0
mov ecx, dword [esp + 0x4c]
mov esi, dword [sym.imp.gdi32.dll_SelectObject]
push ecx
push ebx
call esi
mov edx, dword [esp + 0x58]
push edx
push ebx
call esi
mov eax, dword [esp + 0x50]
push eax
call dword [sym.imp.gdi32.dll_DeleteObject]
push ebx
call dword [sym.imp.gdi32.dll_DeleteDC]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x94
ret 4