Function at 0x10020960
Capabilities:
Create thread

Disassembly:
push 0x14
mov eax, 0x10047ab8
call fcn.10045150
mov esi, ecx
mov dword [ebp - 0x18], esi
xor ebx, ebx
mov byte [ebp - 0x11], bl
lea eax, [esi + 0x97]
push eax
lea ecx, [ebp - 0x20]
call fcn.10004365
mov dword [ebp - 4], ebx
cmp byte [esi + 0x71], bl
je 0x1001fef4
mov byte [ebp - 0x11], bl
mov byte [ebp - 0x12], bl
lea eax, [ebp - 0x12]
push eax
push ebx
push 2
call fcn.100048be
push eax
call fcn.1000119b
add esp, 0x10
test eax, eax
jne 0x1001fdb2
cmp byte [ebp - 0x12], 1
jne 0x1001fdb2
mov byte [ebp - 4], 1
cmp dword [esi + 0x45], ebx
je 0x1001fd36
mov ecx, dword [esi + 0x45]
call fcn.10005e39
jmp 0x1001fd38
xor eax, eax
cmp dword [esi + 0x2d], 0x10
jb 0x1001fd43
mov ecx, dword [esi + 0x19]
jmp 0x1001fd46
lea ecx, [esi + 0x19]
push dword [esi + 0x61]
push dword [esi + 0x59]
push eax
push str.Tag:__s__Value:__d__Quality:_0x_04x
push str.CiOPCStatus::GetUnitStatusTagCondition__
push 0x347
push str..opc_status.cpp
push ecx
push ebx
push 2
call fcn.100048be
push eax
call fcn.100011e2
add esp, 0x2c
mov dword [ebp - 4], ebx
jmp 0x1001fdb2
mov eax, dword [esi + 0x49]
cmp eax, 0xa
ja case.default.0x1001fdbe
jmp dword [eax*4 + 0x10020099]
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jmp 0x1001fee5
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
je case.default.0x1001fdbe
jmp 0x1001feeb
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
je case.default.0x1001fdbe
mov byte [ebp - 0x11], 1
mov dword [esi + 0x4d], eax
jmp case.default.0x1001fdbe
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jmp 0x1001fee5
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jmp 0x1001fddc
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jle case.default.0x1001fdbe
jmp 0x1001feeb
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jl case.default.0x1001fdbe
jmp 0x1001feeb
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jge case.default.0x1001fdbe
jmp 0x1001feeb
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
cmp eax, dword [esi + 0x4d]
jg case.default.0x1001fdbe
jmp 0x1001feeb
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
test dword [esi + 0x4d], eax
jmp 0x1001fddc
mov eax, dword [esi + 0x61]
and ax, 0xc0
cmp al, 0xc0
jne case.default.0x1001fdbe
mov eax, dword [esi + 0x59]
test dword [esi + 0x4d], eax
jne case.default.0x1001fdbe
mov byte [ebp - 0x11], 1
jmp case.default.0x1001fdbe
cmp byte [esi + 0x72], bl
je case.default.0x1001fdbe
cmp dword [esi + 0x73], ebx
jne case.default.0x1001fdbe
mov byte [ebp - 0x12], bl
lea eax, [ebp - 0x12]
push eax
push ebx
push 2
call fcn.100048be
push eax
call fcn.1000119b
add esp, 0x10
test eax, eax
jne 0x1001ff9f
cmp byte [ebp - 0x12], 1
jne 0x1001ff9f
mov byte [ebp - 4], 3
cmp dword [esi + 0x2d], 0x10
jb 0x1001ff37
mov eax, dword [esi + 0x19]
jmp 0x1001ff3a
lea eax, [esi + 0x19]
push str.Status_request:_OFFLINE___Restarting...
push str.CiOPCStatus::GetUnitStatusTagCondition__
push 0x3c8
push str..opc_status.cpp
push eax
push ebx
push 2
call fcn.100048be
push eax
call fcn.100011e2
add esp, 0x20
mov dword [ebp - 4], ebx
jmp 0x1001ff9f
push dword [esi + 0x7b]
call dword [sym.imp.KERNEL32.dll_ResetEvent]
lea eax, [esi + 0x77]
push eax
push ebx
push esi
push 0x1001f808
push ebx
push ebx
call dword [sym.imp.MSVCR80.dll__beginthreadex]
add esp, 0x18
mov dword [esi + 0x73], eax
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x20], vtable.CiCSLock.0
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov byte [ebp - 0x12], bl
lea eax, [ebp - 0x12]
push eax
push ebx
push 2
call fcn.100048be
push eax
call fcn.1000119b
add esp, 0x10
test eax, eax
jne 0x10020058
cmp byte [ebp - 0x12], 1
jne 0x10020058
mov dword [ebp - 4], 5
cmp byte [ebp - 0x11], bl
mov edi, 0x100499d4
jne 0x1002000d
mov edi, str.FALSE
cmp dword [esi + 0x45], ebx
je 0x1002001c
mov ecx, dword [esi + 0x45]
call fcn.10005e39
jmp 0x1002001e
xor eax, eax
cmp dword [esi + 0x2d], 0x10
jb 0x10020029
mov esi, dword [esi + 0x19]
jmp 0x1002002c
add esi, 0x19
push eax
push edi
push str.Returning__s_for_status_tag__s
push str.CiOPCStatus::GetUnitStatusTagCondition__
push 0x3d2
push str..opc_status.cpp
push esi
push ebx
push 2
call fcn.100048be
push eax
call fcn.100011e2
add esp, 0x28
or dword [ebp - 4], 0xffffffff
mov al, byte [ebp - 0x11]
call fcn.100451f5
ret
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
pop ebp
jmp 0x1001fcc5