Function at 0x10005280
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x2c
push ebx
mov ebx, ecx
mov ecx, dword [ebp + 0x10]
xor eax, eax
push esi
cmp ecx, eax
push edi
mov dword [esp + 0x10], eax
je 0x100052a8
cmp ecx, 0xffffffff
je 0x100052a8
mov edx, dword [ecx]
mov dword [esp + 0x20], edx
jmp 0x100052ac
mov dword [esp + 0x20], eax
mov esi, dword [ebp + 0x14]
cmp esi, eax
je 0x100052c0
cmp esi, 0xffffffff
je 0x100052c0
mov edx, dword [esi]
mov dword [esp + 0x24], edx
jmp 0x100052c4
mov dword [esp + 0x24], eax
cmp ecx, eax
jne 0x100052ec
cmp esi, eax
jne 0x100052ec
push 0x813
push str.ImmCondition.cpp
push 4
call sym.IFC22.dll_public:_static_void___cdecl_CIFCErrors::SetErrorCode_long_int__char_const___int_
add esp, 0xc
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edx, dword [ebx + 0xf8]
xor edi, edi
lea eax, [edx - 1]
cmp eax, 3
ja case.default.0x10005300
jmp dword [eax*4 + 0x10005868]
mov eax, esi
jmp 0x10005321
mov eax, ecx
mov edi, esi
inc eax
neg eax
sbb eax, eax
and eax, ecx
inc edi
neg edi
sbb edi, edi
and edi, esi
jmp 0x10005321
mov eax, ecx
test eax, eax
mov esi, 0x100
je 0x10005347
mov ecx, dword [eax + 4]
cmp ecx, 0x80000000
je 0x10005347
cmp dword [ebx + 0xcc], ecx
je 0x10005347
mov dword [ebx + 0xcc], ecx
mov dword [esp + 0x10], esi
test edi, edi
je 0x1000536e
mov ecx, dword [edi + 4]
cmp ecx, 0x80000000
je 0x1000536e
cmp dword [ebx + 0xe4], ecx
je 0x1000536e
mov dword [ebx + 0xe4], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x10005395
mov ecx, dword [eax + 8]
cmp ecx, 0x80000000
je 0x10005395
cmp dword [ebx + 0xd0], ecx
je 0x10005395
mov dword [ebx + 0xd0], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test edi, edi
je 0x100053bc
mov ecx, dword [edi + 8]
cmp ecx, 0x80000000
je 0x100053bc
cmp dword [ebx + 0xe8], ecx
je 0x100053bc
mov dword [ebx + 0xe8], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x100053e3
mov ecx, dword [eax + 0xc]
cmp ecx, 0x80000000
je 0x100053e3
cmp dword [ebx + 0xd4], ecx
je 0x100053e3
mov dword [ebx + 0xd4], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test edi, edi
je 0x1000540a
mov ecx, dword [edi + 0xc]
cmp ecx, 0x80000000
je 0x1000540a
cmp dword [ebx + 0xec], ecx
je 0x1000540a
mov dword [ebx + 0xec], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x10005431
mov ecx, dword [eax + 0x10]
cmp ecx, 0x80000000
je 0x10005431
cmp dword [ebx + 0xd8], ecx
je 0x10005431
mov dword [ebx + 0xd8], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test edi, edi
je 0x10005458
mov ecx, dword [edi + 0x10]
cmp ecx, 0x80000000
je 0x10005458
cmp dword [ebx + 0xf0], ecx
je 0x10005458
mov dword [ebx + 0xf0], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x1000547f
mov ecx, dword [eax + 0x14]
cmp ecx, 0x80000000
je 0x1000547f
cmp dword [ebx + 0xdc], ecx
je 0x1000547f
mov dword [ebx + 0xdc], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test edi, edi
je 0x100054a6
mov ecx, dword [edi + 0x14]
cmp ecx, 0x80000000
je 0x100054a6
cmp dword [ebx + 0xf4], ecx
je 0x100054a6
mov dword [ebx + 0xf4], ecx
mov ecx, dword [esp + 0x10]
or ecx, esi
mov dword [esp + 0x10], ecx
test eax, eax
je 0x100054d3
mov eax, dword [eax]
cmp eax, 0x80000000
je 0x100054d3
cmp eax, dword [0x10021220]
je 0x100054d3
cmp dword [ebx + 0xc8], eax
je 0x100054d3
mov dword [ebx + 0xc8], eax
mov eax, dword [esp + 0x10]
or eax, esi
mov dword [esp + 0x10], eax
test edi, edi
je 0x10005500
mov eax, dword [edi]
cmp eax, 0x80000000
je 0x10005500
cmp eax, dword [0x10021224]
je 0x10005500
cmp dword [ebx + 0xe0], eax
je 0x10005500
mov dword [ebx + 0xe0], eax
mov eax, dword [esp + 0x10]
or eax, esi
mov dword [esp + 0x10], eax
cmp edx, 4
mov eax, 1
jne 0x10005549
mov eax, dword [ebp + 8]
mov ecx, 0x40
cmp eax, 0x80000000
je 0x1000552b
cmp dword [ebx + 0x70], eax
je 0x1000552b
mov dword [ebx + 0x70], eax
mov eax, dword [esp + 0x10]
or eax, ecx
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0xc]
cmp eax, 0x80000000
je 0x1000554f
cmp dword [ebx + 0x74], eax
je 0x1000554f
mov dword [ebx + 0x74], eax
mov eax, dword [esp + 0x10]
or eax, ecx
mov dword [esp + 0x10], eax
jmp 0x1000554f
mov dword [ebx + 0x70], eax
mov dword [ebx + 0x74], eax
lea esi, [ebx + 0x8c]
mov ecx, 4
mov edi, 0x100216c8
xor eax, eax
repe cmpsd dword [esi], dword es:[edi]
jne 0x10005599
mov eax, dword [ebx + 0x100]
test eax, eax
jne 0x10005599
cmp edx, 4
jne 0x10005599
mov ecx, 2
mov edi, 0x10021220
lea esi, [esp + 0x20]
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
je 0x10005599
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
push eax
push ecx
mov ecx, ebx
call sym.IFC22.dll_protected:_void___thiscall_CImmCondition::convert_line_point_to_offset_struct_tagPOINT_
cmp dword [ebx + 0xa0], 3
jne 0x10005838
mov ecx, 4
mov edi, 0x100216c8
lea esi, [ebx + 0x8c]
xor edx, edx
repe cmpsd dword [esi], dword es:[edi]
jne 0x10005838
mov esi, dword [sym.imp.USER32.dll_GetSystemMetrics]
push edx
call esi
mov dword [esp + 0x14], eax
push 1
fild dword [esp + 0x18]
fstp qword [esp + 0x2c]
call esi
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x4c]
fild dword [esp + 0x14]
cmp eax, 1
fstp qword [esp + 0x30]
jne 0x10005636
mov eax, dword [ebx + 0x50]
cmp dword [eax], 0
jne 0x100055fb
fld qword [esp + 0x28]
jmp 0x100055ff
fld qword [esp + 0x30]
call fcn.10018874
mov ecx, eax
mov eax, dword [ebx + 0xc8]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 5
cdq
idiv ecx
sub eax, 0x2710
mov dword [ebx + 0xc8], eax
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
cmp dword [ebx + 0x5c], 0x30
jne 0x100056c4
mov esi, dword [ebx + 0x50]
cmp dword [esi], 0
jne 0x1000564e
fld qword [esp + 0x28]
jmp 0x10005652
fld qword [esp + 0x30]
call fcn.10018874
mov ecx, eax
mov eax, dword [ebx + 0xc8]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 5
cdq
idiv ecx
sub eax, 0x2710
mov dword [ebx + 0xc8], eax
mov eax, dword [esi + 4]
test eax, eax
jne 0x10005689
fld qword [esp + 0x28]
jmp 0x1000568d
fld qword [esp + 0x30]
call fcn.10018874
mov ecx, eax
mov eax, dword [ebx + 0xe0]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
shl eax, 5
cdq
idiv ecx
sub eax, 0x2710
mov dword [ebx + 0xe0], eax
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
test byte [ebx + 0x34], 0x20
je 0x10005738
fild dword [ebx + 0x70]
fmul qword [0x10021230]
fmul qword [0x10021278]
fld st(0)
fsin
fstp qword [esp + 0x18]
fcos
fld qword [esp + 0x18]
fld st(1)
fmul qword [esp + 0x30]
fdiv qword [esp + 0x28]
fpatan
fmul qword [0x10021288]
fdiv qword [0x10021230]
call fcn.10018874
fld qword [esp + 0x18]
fcomp qword [0x10021268]
mov dword [ebx + 0x70], eax
fnstsw ax
test ah, 1
je 0x10005722
fld qword [esp + 0x18]
fchs
fstp qword [esp + 0x18]
fcom qword [0x10021268]
fnstsw ax
test ah, 1
je 0x100057de
jmp 0x100057dc
fild dword [ebx + 0x74]
fmul qword [esp + 0x30]
fdiv qword [esp + 0x28]
call fcn.10018874
mov ecx, dword [ebx + 0x70]
mov dword [esp + 0x18], eax
mov dword [ebx + 0x74], eax
mov dword [esp + 0x20], ecx
cdq
mov esi, eax
mov eax, ecx
xor esi, edx
sub esi, edx
cdq
xor eax, edx
sub eax, edx
add esi, eax
mov dword [esp + 0x14], esi
fild dword [esp + 0x14]
fcom dword [0x10021280]
fnstsw ax
test ah, 0x40
je 0x100057a0
push str.x_and_y_direction_vectors_are_both_zero__n
fstp st(0)
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
fld qword [0x10021268]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 0x3ff00000
jmp 0x100057de
fild dword [esp + 0x18]
fld st(1)
fdivp st(1)
fstp qword [esp + 0x18]
fild dword [esp + 0x20]
fxch st(1)
fdivp st(1)
fld qword [esp + 0x18]
fcomp qword [0x10021268]
fnstsw ax
test ah, 1
je 0x100057cf
fld qword [esp + 0x18]
fchs
fstp qword [esp + 0x18]
fcom qword [0x10021268]
fnstsw ax
test ah, 1
je 0x100057de
fchs
mov eax, dword [ebx + 0xc8]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea eax, [eax + eax*4]
lea esi, [eax + eax*4]
shl esi, 5
mov dword [esp + 0x20], esi
fild dword [esp + 0x20]
fld st(0)
fmul qword [esp + 0x18]
fdiv qword [esp + 0x28]
fstp qword [esp + 0x28]
fmulp st(1)
fdiv qword [esp + 0x30]
fld st(0)
fmul st(1)
fld qword [esp + 0x28]
fmul qword [esp + 0x28]
faddp st(1)
fsqrt
call fcn.10018874
test esi, esi
fstp st(0)
mov dword [ebx + 0xc8], eax
jge 0x10005838
neg eax
mov dword [ebx + 0xc8], eax
mov eax, dword [esp + 0x10]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
push 0x831
push str.ImmCondition.cpp
push 3
call sym.IFC22.dll_public:_static_void___cdecl_CIFCErrors::SetErrorCode_long_int__char_const___int_
add esp, 0xc
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10