Function at 0x560920
Capabilities:
Allocate or change rwx memory
Connect pipe
Create pipe
Create thread
Delete file
Execute shellcode via indirect call
Get common file path
Read file on windows
Spawn thread to rwx shellcode
Write file on windows
Write pipe

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x388
mov eax, dword [0x8e0660]
test eax, eax
je 0x562150
mov eax, dword [0x8e065c]
test eax, eax
je 0x562150
mov eax, dword [sym.imp.kernel32.dll_VirtualAlloc]
mov dword [esp + 0xc], 4
mov dword [esp + 8], 0x203000
mov dword [esp + 4], 0x10000
mov dword [esp], 0
mov dword [ebp - 0x368], eax
call eax
sub esp, 0x10
mov esi, eax
test eax, eax
je 0x5620c0
mov eax, 0x6de
lea ebx, [ebp - 0x330]
call fcn.0055a4a0
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualAlloc_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
test esi, esi
setne al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [sym.imp.kernel32.dll_VirtualQuery]
mov dword [esp + 8], 0x1c
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [ebp - 0x358], eax
call eax
sub esp, 0xc
mov dword [ebp - 0x35c], eax
mov eax, 0x6e0
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualQuery_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x6e1
call fcn.0055a4a0
mov eax, dword [ebp - 0x330]
mov dword [esp + 0xc], esi
mov dword [esp + 4], str.BaseAddress__p_instead_of__p_n
cmp eax, esi
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6e2
call fcn.0055a4a0
mov eax, dword [ebp - 0x328]
mov dword [esp + 4], str.wrong_AllocationProtect__lx_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6e3
call fcn.0055a4a0
mov eax, dword [ebp - 0x324]
mov dword [esp + 4], str.wrong_RegionSize_0x_Ix_n
cmp eax, 0x10000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6e4
call fcn.0055a4a0
mov eax, dword [ebp - 0x320]
mov dword [esp + 4], str.wrong_State_0x_lx_n
cmp eax, 0x1000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6e5
call fcn.0055a4a0
mov eax, dword [ebp - 0x31c]
mov dword [esp + 4], str.wrong_Protect_0x_lx_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6e6
call fcn.0055a4a0
mov eax, dword [ebp - 0x318]
mov dword [esp + 4], str.wrong_Type_0x_lx_n
cmp eax, 0x20000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x6eb
call fcn.0055a4a0
mov edx, dword [ebp - 0x35c]
xor eax, eax
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
cmp edx, 0xffffffff
mov dword [esp + 8], edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6ec
call fcn.0055a4a0
mov edx, dword [edi + 0x34]
mov eax, 1
cmp edx, 0x57
je 0x560bc7
mov edi, dword [0x8f0770]
cmp edx, 0xdeadbeef
sete cl
xor eax, eax
test edi, edi
sete al
and eax, ecx
mov dword [esp + 8], edx
mov dword [esp], eax
mov dword [esp + 4], 0x5fe805
call fcn.0055ab70
mov eax, dword [sym.imp.kernel32.dll_GetModuleHandleW]
mov edi, dword [0x8e0660]
mov edx, dword fs:[0x18]
mov dword [edx + 0x34], 0xdeadbeef
mov dword [ebp - 0x35c], edx
mov dword [esp], 0
mov dword [ebp - 0x374], eax
call eax
lea ecx, [ebp - 0x348]
sub esp, 4
mov dword [esp + 0x14], ecx
lea ecx, [ebp - 0x34c]
mov dword [esp + 0x10], ecx
lea ecx, [ebp - 0x314]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0x10000
mov dword [esp + 4], eax
mov dword [esp], 0
call edi
sub esp, 0x18
mov edi, eax
test eax, eax
jne 0x5620f0
mov eax, 0x6f9
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [esp + 4], esi
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x6fd
mov edi, dword fs:[0x18]
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6fe
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
mov byte [esi + eax + 1], 0x44
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x704
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x705
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x706
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
add edx, esi
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x70a
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x70b
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x70c
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
add edx, esi
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x710
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x711
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
mov byte [esi + eax*2 + 3], 0x11
mov eax, dword [ebp - 0x348]
mov byte [esi + eax*4 + 8], 0x11
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x718
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x719
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x71a
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*2]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x71b
call fcn.0055a4a0
mov eax, dword [ebp - 0x310]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov edx, dword [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
lea eax, [edx + edx]
mov dword [esp + 8], eax
add eax, edx
add eax, esi
mov dword [esp], 0
mov dword [esp + 4], eax
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x71f
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x720
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x721
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
mov dword [esp], esi
lea eax, [eax + eax*2]
mov dword [esp + 4], eax
call dword [0x8e065c]
sub esp, 8
mov dword [ebp - 0x35c], eax
mov eax, 0x724
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.pResetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x728
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x729
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x72a
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
mov dword [esi + eax*2 - 2], 0xdeadbeef
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x730
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x731
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 3
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x732
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
add edx, esi
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x733
call fcn.0055a4a0
mov eax, dword [ebp - 0x310]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*2]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x734
call fcn.0055a4a0
mov eax, dword [ebp - 0x30c]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 1
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x738
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x739
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x73a
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
add edx, esi
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x73e
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x73f
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x740
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*2]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x741
call fcn.0055a4a0
mov eax, dword [ebp - 0x310]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x354]
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x348]
mov dword [esp], esi
lea eax, [eax + eax*2]
mov dword [esp + 4], eax
mov eax, dword [sym.imp.kernel32.dll_VirtualProtect]
mov dword [ebp - 0x36c], eax
call eax
sub esp, 0x10
mov dword [ebp - 0x35c], eax
mov eax, 0x746
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualProtect_failed_error__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x747
call fcn.0055a4a0
mov eax, dword [ebp - 0x354]
mov dword [esp + 4], str.wrong_old_prot__lx_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], 0x1c
mov ecx, dword [ebp - 0x358]
call ecx
sub esp, 0xc
mov dword [ebp - 0x35c], eax
mov eax, 0x74a
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualQuery_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x74b
call fcn.0055a4a0
mov eax, dword [ebp - 0x330]
mov dword [esp + 0xc], esi
mov dword [esp + 4], str.BaseAddress__p_instead_of__p_n
cmp eax, esi
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x74c
call fcn.0055a4a0
mov eax, dword [ebp - 0x324]
mov dword [esp + 4], str.wrong_RegionSize_0x_Ix_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [edx + edx*2]
cmp edx, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x74d
call fcn.0055a4a0
mov eax, dword [ebp - 0x320]
mov dword [esp + 4], str.wrong_State_0x_lx_n
cmp eax, 0x1000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x74e
call fcn.0055a4a0
mov eax, dword [ebp - 0x31c]
mov dword [esp + 4], str.wrong_Protect_0x_lx_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x354]
mov dword [esp + 8], 4
mov dword [esp + 0xc], edx
mov eax, dword [ebp - 0x348]
mov dword [esp], esi
lea eax, [eax + eax*2]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x36c]
call eax
sub esp, 0x10
mov dword [ebp - 0x35c], eax
mov eax, 0x751
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualProtect_failed_error__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x752
call fcn.0055a4a0
mov eax, dword [ebp - 0x354]
mov dword [esp + 4], str.wrong_old_prot__lx_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x35c], eax
mov eax, 0x756
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x35c]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x757
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x758
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*2]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x759
call fcn.0055a4a0
mov eax, dword [ebp - 0x310]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x348]
lea edx, [esi + edx*4]
cmp eax, edx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], ebx
mov dword [esp], esi
mov dword [esp + 8], 0x1c
mov ecx, dword [ebp - 0x358]
call ecx
sub esp, 0xc
mov ebx, eax
mov eax, 0x75c
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp], ebx
mov ebx, edi
mov dword [esp + 4], str.VirtualQuery_failed__lu_n
mov dword [esp + 8], eax
call fcn.0055ab70
mov eax, 0x75d
call fcn.0055a4a0
mov eax, dword [ebp - 0x330]
mov dword [esp + 0xc], esi
mov dword [esp + 4], str.BaseAddress__p_instead_of__p_n
cmp eax, esi
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x75e
call fcn.0055a4a0
mov eax, dword [ebp - 0x324]
mov dword [esp + 4], str.wrong_RegionSize_0x_Ix_n
cmp eax, 0x10000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x75f
call fcn.0055a4a0
mov eax, dword [ebp - 0x320]
mov dword [esp + 4], str.wrong_State_0x_lx_n
cmp eax, 0x1000
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x760
call fcn.0055a4a0
mov eax, dword [ebp - 0x31c]
mov dword [esp + 4], str.wrong_Protect_0x_lx_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
xor eax, eax
mov dword [ebp - 0x358], esi
mov esi, eax
mov dword [ebp - 0x344], 0
mov dword [ebp - 0x340], 0
mov dword [ebp - 0x33c], 0
mov dword [ebp - 0x338], 0
mov dword [ebp - 0x334], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateEventA]
mov dword [ebp - 0x334], eax
sub esp, 0x10
lea eax, [esi*4]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x400
mov dword [esp + 0x10], 0x400
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov dword [esp + 4], 0x40000001
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateNamedPipeA]
sub esp, 0x20
mov edi, eax
mov eax, 0x76c
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.CreateNamedPipeA_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x344]
mov dword [esp + 4], eax
mov dword [ebp - 0x35c], edi
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_ConnectNamedPipe]
sub esp, 8
mov edi, eax
mov eax, 0x76f
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str._lu:_ConnectNamedPipe_unexpectedly_succeeded_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x770
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_expected_ERROR_IO_PENDING__got__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
cmp dword [ebx + 0x34], 0x3e5
sete al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
mov edi, eax
mov eax, 0x774
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
cmp edi, 0xffffffff
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_CreateFileA_failed__lu_n
mov dword [esp + 0xc], eax
setne al
movzx eax, al
mov dword [ebp - 0x360], edi
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x334]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
sub esp, 8
mov edi, eax
mov eax, 0x777
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 0xc], edi
sete al
mov dword [esp + 8], esi
mov dword [esp], eax
mov dword [esp + 4], str._lu:_expected_WAIT_OBJECT_0__got__lu_n
call fcn.0055ab70
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov edi, dword [ebp - 0x358]
mov dword [esp], edi
call sub.msvcrt.dll_memset
lea edx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov dword [ebp - 0x358], edi
mov dword [esp + 4], edi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x77d
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x77e
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x344]
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], edx
mov dword [esp + 8], 0x10000
mov eax, dword [ebp - 0x358]
mov dword [esp + 4], eax
mov edi, dword [ebp - 0x35c]
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov edi, eax
mov eax, 0x781
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 8], esi
sete al
mov dword [esp + 4], str._lu:_ReadFile_unexpectedly_succeeded_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x782
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_expected_ERROR_IO_PENDING__got__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
cmp dword [ebx + 0x34], 0x3e5
sete al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov eax, dword [ebp - 0x358]
mov dword [esp], 1
mov dword [esp + 4], eax
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x787
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x788
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x350]
mov dword [ebp - 0x350], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0xc
mov dword [esp + 4], str.Hello_World
mov ecx, dword [ebp - 0x360]
mov dword [esp], ecx
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov edi, eax
mov eax, 0x78c
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp], edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str._lu:_WriteFile_failed__lu_n
call fcn.0055ab70
mov eax, 0x78d
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_number_of_bytes_written__lu_n
cmp eax, 0xc
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea ecx, [ebp - 0x350]
mov dword [ebp - 0x350], 0
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x344]
mov dword [esp + 4], ecx
mov dword [esp + 0xc], 1
mov edi, dword [ebp - 0x35c]
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_GetOverlappedResult]
sub esp, 0x10
mov edi, eax
mov eax, 0x791
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetOverlappedResult_failed__lu_n
mov dword [esp + 0xc], eax
mov dword [esp], edi
call fcn.0055ab70
mov eax, 0x792
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_number_of_bytes_read__lu_n
cmp eax, 0xc
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x793
call fcn.0055a4a0
mov eax, dword [ebp - 0x358]
cmp dword [eax], 0x6c6c6548
je 0x562170
mov eax, 1
xor eax, 1
mov dword [esp + 8], esi
lea edi, [ebp - 0x314]
mov dword [esp], eax
mov dword [esp + 4], str._lu:_didnt_receive_expected_data_n
call fcn.0055ab70
xor eax, eax
mov ecx, 0x40
mov dword [ebp - 0x34c], 0x40
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x348]
mov dword [esp + 8], 0x10000
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x358]
mov dword [esp], 1
mov dword [esp + 4], eax
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x798
call fcn.0055a4a0
mov edx, dword fs:[0x18]
mov eax, dword [edx + 0x34]
mov dword [ebp - 0x364], edx
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x799
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x79a
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_result__p_n
mov dword [esp + 0xc], eax
mov ecx, dword [ebp - 0x358]
cmp eax, ecx
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x35c]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x360]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x334]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov edx, dword [ebp - 0x364]
sub esp, 4
test esi, esi
jne 0x562198
mov esi, 1
jmp 0x561a10
mov eax, dword fs:[0x18]
cmp dword [eax + 0x34], 0x57
je 0x5620d6
cmp dword [eax + 0x34], 0x32
jne 0x56097f
mov eax, 0x6db
call fcn.0055a4a0
mov dword [esp], str.MEM_WRITE_WATCH_not_supported_n
call fcn.0055ab40
jmp 0x562166
mov eax, 0x6f4
call fcn.0055a4a0
xor eax, eax
cmp edi, 0xffffffff
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x6f5
call fcn.0055a4a0
mov edx, dword [ebp - 0x35c]
mov eax, dword [edx + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edx + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
jmp 0x560c78
mov eax, 0x6d2
call fcn.0055a4a0
mov dword [esp], str.GetWriteWatch_not_supported_n
call fcn.0055ab40
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [eax + 4], 0x6f57206f
jne 0x561f55
cmp dword [eax + 8], 0x646c72
jne 0x561f55
xor eax, eax
jmp 0x561f5a
mov dword [ebp - 0x370], esi
mov ebx, edx
xor esi, esi
lea eax, [esi*4]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x400
mov dword [esp + 0x10], 0x400
mov dword [esp + 0xc], 1
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateNamedPipeA]
sub esp, 0x20
mov edi, eax
mov eax, 0x7a9
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
cmp edi, 0xffffffff
mov dword [esp + 4], str.CreateNamedPipeA_failed__lu_n
mov dword [esp + 8], eax
setne al
movzx eax, al
mov dword [ebp - 0x360], edi
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov edi, dword [ebp - 0x358]
mov dword [esp], edi
call sub.msvcrt.dll_memset
lea ecx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], ecx
lea ecx, [ebp - 0x34c]
mov dword [esp + 0x10], ecx
lea ecx, [ebp - 0x314]
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 0x10000
mov dword [ebp - 0x358], edi
mov dword [esp + 4], edi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x7af
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7b0
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov edi, dword [ebp - 0x358]
mov eax, dword [ebp - 0x360]
lea ecx, [ebp - 0x110]
mov dword [ebp - 0x10c], esi
mov dword [ebp - 0x108], edi
mov dword [ebp - 0x110], eax
mov dword [ebp - 0x104], 0x10000
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x5607b0
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateThread]
sub esp, 0x18
mov dword [ebp - 0x364], eax
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
mov dword [ebp - 0x35c], eax
mov eax, 0x7b9
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_CreateFileA_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
cmp dword [ebp - 0x35c], 0xffffffff
setne al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp], 0xc8
call dword [sym.imp.kernel32.dll_Sleep]
lea edx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
sub esp, 4
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov dword [ebp - 0x358], edi
mov dword [esp + 4], edi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x7be
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7bf
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x350]
mov dword [ebp - 0x350], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0xc
mov dword [esp + 4], str.Hello_World
mov ecx, dword [ebp - 0x35c]
mov dword [esp], ecx
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov edi, eax
mov eax, 0x7c3
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp], edi
lea edi, [ebp - 0x314]
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
mov dword [esp + 4], str._lu:_WriteFile_failed__lu_n
call fcn.0055ab70
mov eax, 0x7c4
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_number_of_bytes_written__lu_n
cmp eax, 0xc
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], 0x2710
mov edx, dword [ebp - 0x364]
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
xor eax, eax
lea edx, [ebp - 0x348]
mov ecx, 0x40
rep stosd dword es:[edi], eax
sub esp, 8
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov edi, dword [ebp - 0x358]
mov dword [esp], 1
mov dword [esp + 4], edi
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x7ca
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_GetWriteWatch_failed__lu_n
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7cb
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 0xc], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7cc
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 8], esi
mov dword [esp + 4], str._lu:_wrong_result__p_n
mov dword [esp + 0xc], eax
mov edi, dword [ebp - 0x358]
cmp eax, edi
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x360]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov ecx, dword [ebp - 0x35c]
sub esp, 4
mov dword [esp], ecx
call dword [sym.imp.kernel32.dll_CloseHandle]
mov edx, dword [ebp - 0x364]
sub esp, 4
mov dword [esp], edx
call dword [sym.imp.kernel32.dll_CloseHandle]
sub esp, 4
test esi, esi
jne 0x562668
mov esi, dword [ebp - 0x370]
jmp 0x5621a2
lea edi, [ebp - 0x214]
mov esi, dword [ebp - 0x358]
mov dword [esp], 0x104
mov dword [esp + 4], edi
call dword [sym.imp.kernel32.dll_GetTempPathA]
lea eax, [ebp - 0x110]
sub esp, 8
mov dword [esp], edi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0x5fea7d
call dword [sym.imp.kernel32.dll_GetTempFileNameA]
lea eax, [ebp - 0x110]
sub esp, 0x10
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 2
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0xc0000000
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
mov edi, eax
mov eax, 0x7d6
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.CreateFile_error__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 0xc], 0
mov edx, dword [sym.imp.kernel32.dll_SetFilePointer]
mov dword [esp + 8], 0
mov eax, dword [ebp - 0x348]
mov dword [esp], edi
lea eax, [eax + eax + 3]
mov dword [esp + 4], eax
mov dword [ebp - 0x358], edx
call edx
sub esp, 0x10
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_SetEndOfFile]
sub esp, 4
mov dword [esp], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov edx, dword [ebp - 0x358]
call edx
lea eax, [ebp - 0x350]
sub esp, 0x10
mov dword [esp], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov dword [ebp - 0x358], eax
mov eax, 0x7dc
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.ReadFile_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x7dd
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 4], str.wrong_bytes__lu_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x348]
lea ecx, [ecx + ecx + 3]
cmp ecx, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x358], eax
mov eax, 0x7e1
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7e2
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x350]
mov dword [esp], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov dword [ebp - 0x358], eax
mov eax, 0x7e5
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.ReadFile_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x7e6
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 4], str.wrong_bytes__lu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x358], eax
mov eax, 0x7ea
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7eb
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_CloseHandle]
lea eax, [ebp - 0x110]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_DeleteFileA]
lea eax, [ebp - 0x350]
sub esp, 4
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 0xdead
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov edi, eax
mov eax, 0x7f1
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 4], str.ReadFile_succeeded_n
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7f2
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebx + 0x34], 6
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov edi, eax
mov eax, 0x7f6
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
test edi, edi
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x7f7
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [ebp - 0x344], 0
mov dword [ebp - 0x340], 0
mov dword [ebp - 0x33c], 0
mov dword [ebp - 0x338], 0
mov dword [ebp - 0x334], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateEventA]
sub esp, 0x10
mov dword [ebp - 0x334], eax
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0x400
mov dword [esp + 0x10], 0x400
mov dword [esp + 0xc], 1
mov dword [esp + 8], 4
mov dword [esp + 4], 0x40000001
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateNamedPipeA]
sub esp, 0x20
mov edi, eax
mov eax, 0x800
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.CreateNamedPipeA_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x344]
mov dword [esp + 4], eax
mov dword [ebp - 0x358], edi
mov dword [esp], edi
call dword [sym.imp.kernel32.dll_ConnectNamedPipe]
sub esp, 8
mov edi, eax
mov eax, 0x803
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 4], str.ConnectNamedPipe_unexpectedly_succeeded_n
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x804
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.expected_ERROR_IO_PENDING__got__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebx + 0x34], 0x3e5
sete al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 3
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0x40000000
mov dword [esp], str..pipe_test_write_watch_pipe
call dword [sym.imp.kernel32.dll_CreateFileA]
sub esp, 0x1c
mov edi, eax
mov eax, 0x807
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.CreateFileA_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp edi, 0xffffffff
setne al
mov dword [ebp - 0x35c], edi
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], 0x3e8
mov eax, dword [ebp - 0x334]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_WaitForSingleObject]
sub esp, 8
mov edi, eax
mov eax, 0x80a
call fcn.0055a4a0
xor eax, eax
test edi, edi
mov dword [esp + 8], edi
sete al
mov dword [esp + 4], str.expected_WAIT_OBJECT_0__got__lu_n
lea edi, [esi + 0xffec]
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 8], 0x10000
mov dword [esp + 4], 0
mov dword [esp], esi
call sub.msvcrt.dll_memset
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 1
mov dword [esp], 0
call dword [sym.imp.kernel32.dll_CreateEventA]
lea edx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
sub esp, 0x10
mov dword [esi + 0xfffc], eax
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x360], eax
mov eax, 0x812
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x360]
xor eax, eax
test ecx, ecx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x813
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 0x10
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xc
mov dword [esp + 4], esi
mov eax, dword [ebp - 0x358]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_ReadFile]
sub esp, 0x14
mov dword [ebp - 0x360], eax
mov eax, 0x816
call fcn.0055a4a0
mov dword [esp + 4], str.ReadFile_unexpectedly_succeeded_n
xor eax, eax
mov ecx, dword [ebp - 0x360]
test ecx, ecx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x817
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.expected_ERROR_IO_PENDING__got__lu_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [ebx + 0x34], 0x3e5
sete al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x348]
mov dword [esi + 0xffec], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], edx
lea edx, [ebp - 0x34c]
mov dword [esp + 0x10], edx
lea edx, [ebp - 0x314]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x360], eax
mov eax, 0x81c
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x360]
xor eax, eax
test ecx, ecx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x81d
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea edx, [ebp - 0x350]
mov dword [ebp - 0x350], 0
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0xc
mov dword [esp + 4], str.Hello_World
mov ecx, dword [ebp - 0x35c]
mov dword [esp], ecx
call dword [sym.imp.kernel32.dll_WriteFile]
sub esp, 0x14
mov dword [ebp - 0x360], eax
mov eax, 0x821
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.WriteFile_failed__lu_n
mov dword [esp + 8], eax
mov ecx, dword [ebp - 0x360]
mov dword [esp], ecx
call fcn.0055ab70
mov eax, 0x822
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 4], str.wrong_number_of_bytes_written__lu_n
cmp eax, 0xc
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea ecx, [ebp - 0x350]
mov dword [ebp - 0x350], 0
mov dword [esp + 8], ecx
mov dword [esp + 4], edi
mov dword [esp + 0xc], 1
mov eax, dword [ebp - 0x358]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_GetOverlappedResult]
sub esp, 0x10
mov edi, eax
mov eax, 0x826
call fcn.0055a4a0
mov eax, dword [ebx + 0x34]
mov dword [esp + 4], str.GetOverlappedResult_failed__lu_n
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.0055ab70
mov eax, 0x827
call fcn.0055a4a0
mov eax, dword [ebp - 0x350]
mov dword [esp + 4], str.wrong_number_of_bytes_read__lu_n
cmp eax, 0xc
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x828
call fcn.0055a4a0
cmp dword [esi], 0x6c6c6548
je 0x5639c8
mov eax, 1
xor eax, 1
mov dword [esp + 4], str.didnt_receive_expected_data_n
lea edi, [ebp - 0x314]
mov dword [esp], eax
call fcn.0055ab70
xor eax, eax
mov ecx, 0x40
mov dword [ebp - 0x34c], 0x40
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x348]
mov dword [esp + 4], esi
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 1
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x360], eax
mov eax, 0x82d
call fcn.0055a4a0
mov edi, dword fs:[0x18]
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x360]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x82e
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 2
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x82f
call fcn.0055a4a0
mov eax, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
cmp eax, esi
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x358]
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x35c]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [ebp - 0x334]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
mov eax, dword [esi + 0xfffc]
sub esp, 4
mov dword [esp], eax
call dword [sym.imp.kernel32.dll_CloseHandle]
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0
sub esp, 4
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
test eax, eax
jne 0x563a30
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x87e
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0x57
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x87f
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0xdeadbeef
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x883
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], esi
mov dword [esp], 0xdeadbeef
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x887
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp + 4], esi
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x88b
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 4], 0
mov dword [esp], esi
call dword [0x8e065c]
sub esp, 8
mov ebx, eax
mov eax, 0x88e
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.ResetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov ebx, dword [0x8e065c]
mov dword [esp], 0
mov eax, dword [ebp - 0x374]
call eax
sub esp, 4
mov dword [esp + 4], 0x10000
mov dword [esp], eax
call ebx
sub esp, 8
mov ebx, eax
mov eax, 0x891
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.ResetWriteWatch_failed__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp], esi
mov esi, dword [sym.imp.kernel32.dll_VirtualFree]
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
call esi
sub esp, 0xc
mov dword [esp + 0xc], 4
mov dword [esp + 8], 0x202000
mov dword [esp + 4], 0x10000
mov dword [esp], 0
mov eax, dword [ebp - 0x368]
call eax
sub esp, 0x10
mov ebx, eax
mov eax, 0x897
mov edi, dword fs:[0x18]
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualAlloc_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp], ebx
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
call esi
sub esp, 0xc
mov dword [esp + 0xc], 4
mov dword [esp + 8], 0x200000
mov dword [esp + 4], 0x10000
mov dword [esp], 0
mov eax, dword [ebp - 0x368]
call eax
sub esp, 0x10
mov ebx, eax
mov eax, 0x89b
call fcn.0055a4a0
xor eax, eax
test ebx, ebx
mov dword [esp + 4], str.VirtualAlloc_succeeded_n
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x89c
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x202000
mov dword [esp + 4], 0x10000
mov dword [esp], 0
mov eax, dword [ebp - 0x368]
call eax
sub esp, 0x10
mov ebx, eax
mov eax, 0x8a1
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualAlloc_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp], ebx
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0x1000
mov dword [esp + 4], 0x10000
mov eax, dword [ebp - 0x368]
call eax
sub esp, 0x10
mov ebx, eax
mov eax, 0x8a3
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualAlloc_failed__lu_n
mov dword [esp + 8], eax
xor eax, eax
test ebx, ebx
setne al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x358], eax
mov eax, 0x8a7
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x8a8
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
test eax, eax
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x354]
mov dword [esp + 8], 4
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x348]
mov dword [esp], ebx
lea eax, [eax + eax*2]
add eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x36c]
call eax
sub esp, 0x10
mov dword [ebp - 0x358], eax
mov eax, 0x8ab
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualProtect_failed_error__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x8ac
call fcn.0055a4a0
mov eax, dword [ebp - 0x354]
mov dword [esp + 4], str.wrong_old_prot__lx_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
lea ecx, [ebp - 0x354]
lea eax, [eax + eax*4]
mov byte [ebx + eax + 0xc8], 3
mov dword [esp + 0xc], ecx
mov dword [esp + 8], 1
mov eax, dword [ebp - 0x348]
mov dword [esp], ebx
lea eax, [eax + eax*2]
add eax, eax
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x36c]
call eax
sub esp, 0x10
mov dword [ebp - 0x358], eax
mov eax, 0x8b1
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualProtect_failed_error__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
mov dword [esp], edx
call fcn.0055ab70
mov eax, 0x8b2
call fcn.0055a4a0
mov eax, dword [ebp - 0x354]
mov dword [esp + 4], str.wrong_old_prot__lx_n
cmp eax, 4
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x358], eax
mov eax, 0x8b6
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x8b7
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov dword [esp + 4], str.wrong_count__Iu_n
cmp eax, 1
mov dword [esp + 8], eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x8b8
call fcn.0055a4a0
mov edx, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x348]
lea eax, [eax + eax*4]
add eax, ebx
cmp edx, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
mov dword [esp + 8], 0x4000
mov dword [esp + 4], 0x10000
mov dword [esp], ebx
call esi
sub esp, 0xc
mov dword [ebp - 0x358], eax
mov eax, 0x8bb
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.VirtualFree_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
mov dword [esp], edx
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov dword [ebp - 0x358], eax
mov eax, 0x8bf
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], str.GetWriteWatch_failed__lu_n
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x358]
xor eax, eax
test edx, edx
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x8c0
call fcn.0055a4a0
mov eax, dword [ebp - 0x34c]
mov edx, 1
cmp eax, 1
je 0x563987
xor edx, edx
mov ecx, eax
or ecx, dword [0x8f0770]
sete dl
mov dword [esp + 8], eax
mov dword [esp + 4], str.wrong_count__Iu_n
mov dword [esp], edx
call fcn.0055ab70
mov eax, dword [ebp - 0x34c]
test eax, eax
jne 0x5639f0
mov dword [esp], ebx
mov dword [esp + 8], 0x8000
mov dword [esp + 4], 0
call esi
sub esp, 0xc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [esi + 4], 0x6f57206f
jne 0x563051
xor eax, eax
cmp dword [esi + 8], 0x646c72
jne 0x563051
jmp 0x563056
mov eax, 0x8c2
call fcn.0055a4a0
mov edx, dword [ebp - 0x314]
mov dword [esp + 4], str.wrong_result__p_n
mov dword [esp + 8], edx
mov eax, dword [ebp - 0x348]
lea eax, [eax + eax*4]
add eax, ebx
cmp edx, eax
sete al
movzx eax, al
mov dword [esp], eax
call fcn.0055ab70
jmp 0x5639a5
mov eax, 0x83d
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x83e
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x842
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x843
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x3e6
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x34c]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0x14], 0
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x848
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x849
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x3e6
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x84e
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x84f
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x3e6
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 4], esi
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0x10000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x854
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x855
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x10000
mov dword [esp], 0xdeadbeef
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x85a
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x85b
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x860
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x861
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
lea eax, [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [ebp - 0x34c], 0x40
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x34c]
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x314]
mov dword [esp + 4], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x20000
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x866
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x867
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
mov eax, dword [ebp - 0x348]
mov dword [edi + 0x34], 0xdeadbeef
lea ecx, [ebp - 0x348]
mov dword [ebp - 0x34c], 0x40
lea edx, [eax + 1]
mov dword [esp + 0x14], ecx
lea ecx, [ebp - 0x34c]
mov dword [esp + 8], edx
mov edx, esi
sub edx, eax
mov dword [esp + 0x10], ecx
lea ecx, [ebp - 0x314]
lea eax, [edx + 0x10000]
mov dword [esp + 0xc], ecx
mov dword [esp + 4], eax
mov dword [esp], 0
call dword [0x8e0660]
sub esp, 0x18
mov ebx, eax
mov eax, 0x86c
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.GetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x86d
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp], esi
mov dword [esp + 4], 0
call dword [0x8e065c]
sub esp, 8
mov ebx, eax
mov eax, 0x871
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.ResetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x872
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
mov ebx, dword [0x8e065c]
mov dword [edi + 0x34], 0xdeadbeef
mov dword [esp], 0
mov eax, dword [ebp - 0x374]
call eax
sub esp, 4
mov dword [esp + 4], 0x10000
mov dword [esp], eax
call ebx
sub esp, 8
mov ebx, eax
mov eax, 0x876
call fcn.0055a4a0
xor eax, eax
cmp ebx, 0xffffffff
mov dword [esp + 8], ebx
sete al
mov dword [esp + 4], str.ResetWriteWatch_succeeded__lu_n
mov dword [esp], eax
call fcn.0055ab70
mov eax, 0x877
call fcn.0055a4a0
mov eax, dword [edi + 0x34]
mov dword [esp + 4], 0x5fe805
mov dword [esp + 8], eax
xor eax, eax
cmp dword [edi + 0x34], 0x57
sete al
mov dword [esp], eax
call fcn.0055ab70
jmp 0x563454