Function at 0x4ef660
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x98
cmp dword [0x82a4b4], 0
push ebx
push esi
mov ebx, ecx
push edi
mov dword [ebp - 0x3c], ebx
jne 0x4ef67e
xor eax, eax
jmp 0x4ef694
lea eax, [ebp - 0x88]
push eax
push 6
push str.CWebSocketConnection::DispatchCurrentFrame
call fcn.00540320
add esp, 0xc
mov cl, byte [ebx + 0x128]
mov dword [ebp - 0x88], eax
movzx eax, cl
shr eax, 4
cmp eax, 0xa
ja case.0x4ef6b6.3
movzx eax, byte [eax + 0x4f017c]
jmp dword [eax*4 + 0x4f0164]
mov eax, dword [ebx + 0x160]
test eax, eax
je 0x4efa71
mov esi, dword [ebx + 0x138]
lea ecx, [ebx + 0x150]
cdq
add eax, esi
adc edx, dword [ebx + 0x13c]
test edx, edx
jne 0x4ef7e6
cmp eax, 0x1400060
ja 0x4ef7e6
push esi
push dword [ebx + 0x144]
call fcn.004ab4f0
test byte [ebx + 0x128], 1
je case.0x4ef6b6.10
call fcn.004ae070
mov edi, eax
call fcn.0053aa60
push 1
push 0
push 0x245
mov ecx, dword [eax]
push str.C:_buildworker_steam_rel_client_win32_build_srccommonwebsocket.cpp
push dword [ebx + 0x160]
mov edx, dword [ecx + 8]
mov ecx, eax
call edx
push dword [ebx + 0x160]
mov esi, eax
push dword [ebx + 0x150]
push esi
call fcn.00553b80
add esp, 0xc
mov ecx, edi
push 1
push esi
push dword [ebx + 0x160]
push esi
push dword [ebx + 0xc]
call fcn.004e4ea0
mov ecx, dword [ebx + 0x68]
push edi
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, edi
call fcn.004e50b0
cmp dword [ebx + 0x154], 0x200
mov byte [ebx + 0x14c], 0xff
jle 0x4ef7d6
cmp dword [ebx + 0x158], 0
lea esi, [ebx + 0x150]
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
mov byte [esi + 0x1a], 0
jl case.0x4ef6b6.10
cmp dword [esi], 0
je 0x4ef7ca
call fcn.0053aa60
push 0
push dword [esi]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov dword [esi], 0
mov dword [esi + 4], 0
jmp case.0x4ef6b6.10
lea ecx, [ebx + 0x150]
call fcn.0046de80
jmp case.0x4ef6b6.10
mov byte [ebx + 0x14c], 0xff
call fcn.0046de80
cmp dword [ebx + 0x10], 2
jne case.0x4ef6b6.10
cmp byte [ebx + 0x124], 0
jne case.0x4ef6b6.10
push 0x40
push 2
push 0
lea ecx, [ebp - 0x84]
call fcn.004aa520
push 0x3f1
lea ecx, [ebp - 0x84]
call fcn.004ac2d0
cmp dword [0x82a4b4], 0
mov edi, dword [ebp - 0x74]
mov esi, dword [ebp - 0x84]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], esi
jne 0x4ef846
xor eax, eax
jmp 0x4ef859
lea eax, [ebp - 0x10]
push eax
push 6
push str.CWebSocketConnection::BBuildAndAsyncSendFrame
call fcn.00540320
add esp, 0xc
cmp dword [ebx + 0x10], 2
mov dword [ebp - 0x10], eax
jne 0x4ef9dd
push 0x40
push 0xe
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0x38]
call fcn.004aa600
cmp byte [ebx + 0x126], 0
mov dword [ebp - 0xc], 0
mov byte [ebp - 1], 0
je 0x4ef89f
lea eax, [ebp - 0xc]
mov byte [ebp - 1], 0x80
push 4
push eax
call fcn.004fce20
add esp, 8
push 0x88
lea ecx, [ebp - 0x38]
call fcn.004abf90
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x38]
cmp eax, 0x7e
jl 0x4ef8f7
cmp eax, 0xffff
mov al, byte [ebp - 1]
jle 0x4ef8de
or al, 0x7f
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
mov eax, edi
cdq
push edx
push eax
call fcn.004ac080
jmp 0x4ef908
or al, 0x7e
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
push edi
call fcn.004ac2d0
jmp 0x4ef908
and al, 0x7f
or al, byte [ebp - 1]
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
cmp byte [ebp - 1], 0
je 0x4ef919
push dword [ebp - 0xc]
lea ecx, [ebp - 0x38]
call fcn.004ac1c0
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x60]
push 0
add eax, edi
push eax
push 0
call fcn.004aa520
push dword [ebp - 0x28]
lea ecx, [ebp - 0x60]
push dword [ebp - 0x38]
call fcn.004ab4f0
cmp byte [ebp - 1], 0
je 0x4ef96f
mov eax, dword [ebp - 0xc]
xor esi, esi
bswap eax
mov dword [ebp - 8], eax
test edi, edi
jle 0x4ef979
mov ebx, dword [ebp - 0x14]
mov eax, esi
lea ecx, [ebp - 0x60]
and eax, 3
mov al, byte [ebp + eax - 8]
xor al, byte [esi + ebx]
push eax
call fcn.004ab530
inc esi
cmp esi, edi
jl 0x4ef950
mov ebx, dword [ebp - 0x3c]
jmp 0x4ef979
push edi
push esi
lea ecx, [ebp - 0x60]
call fcn.004ab4f0
lea eax, [ebp - 0x60]
mov ecx, ebx
push eax
call fcn.004ee970
cmp dword [ebp - 0x58], 0
jl 0x4ef9af
cmp dword [ebp - 0x60], 0
je 0x4ef9a8
call fcn.0053aa60
push 0
push dword [ebp - 0x60]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov dword [ebp - 0x60], 0
mov dword [ebp - 0x5c], 0
cmp dword [ebp - 0x30], 0
jl 0x4ef9da
cmp dword [ebp - 0x38], 0
je 0x4ef9d3
call fcn.0053aa60
push 0
push dword [ebp - 0x38]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x4ef9ea
push eax
call fcn.005402e0
add esp, 4
cmp byte [ebx + 0x125], 0
lea ecx, [ebx + 0x190]
mov byte [ebx + 0x124], 1
jne 0x4efa35
push 0
push 0x4c4b40
call fcn.004b29b0
cmp dword [ebp - 0x7c], 0
jl case.0x4ef6b6.10
cmp dword [ebp - 0x84], 0
je case.0x4ef6b6.10
call fcn.0053aa60
push 0
push dword [ebp - 0x84]
jmp 0x4f00ee
call fcn.004b2460
mov ecx, ebx
mov dword [ebx + 0x10], 3
call fcn.004e58d0
cmp dword [ebp - 0x7c], 0
jl case.0x4ef6b6.10
cmp dword [ebp - 0x84], 0
je case.0x4ef6b6.10
call fcn.0053aa60
push 0
push dword [ebp - 0x84]
jmp 0x4f00ee
cmp dword [ebx + 0x10], 2
jne case.0x4ef6b6.10
cmp byte [ebx + 0x124], 0
jne case.0x4ef6b6.10
push 0x40
push 0x24
push 0
lea ecx, [ebp - 0x60]
call fcn.004aa520
push 0x3ef
lea ecx, [ebp - 0x60]
call fcn.004ac2d0
push ecx
mov eax, esp
lea ecx, [ebp - 0x60]
mov dword [eax], str.Out_of_sequence_continuation_frame
call fcn.004abcf0
cmp dword [0x82a4b4], 0
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x60]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], esi
jne 0x4efacd
xor eax, eax
jmp 0x4efae0
lea eax, [ebp - 0x10]
push eax
push 6
push str.CWebSocketConnection::BBuildAndAsyncSendFrame
call fcn.00540320
add esp, 0xc
cmp dword [ebx + 0x10], 2
mov dword [ebp - 0x10], eax
jne 0x4efc7f
push 0x40
push 0xe
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0x38]
call fcn.004aa600
cmp byte [ebx + 0x126], 0
mov dword [ebp - 0xc], 0
mov byte [ebp - 1], 0
je 0x4efb26
lea eax, [ebp - 0xc]
mov byte [ebp - 1], 0x80
push 4
push eax
call fcn.004fce20
add esp, 8
push 0x88
lea ecx, [ebp - 0x38]
call fcn.004abf90
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x38]
cmp eax, 0x7e
jl 0x4efb7e
cmp eax, 0xffff
mov al, byte [ebp - 1]
jle 0x4efb65
or al, 0x7f
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
mov eax, edi
cdq
push edx
push eax
call fcn.004ac080
jmp 0x4efb8f
or al, 0x7e
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
push edi
call fcn.004ac2d0
jmp 0x4efb8f
and al, 0x7f
or al, byte [ebp - 1]
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
cmp byte [ebp - 1], 0
je 0x4efba0
push dword [ebp - 0xc]
lea ecx, [ebp - 0x38]
call fcn.004ac1c0
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push 0
add eax, edi
push eax
push 0
call fcn.004aa520
push dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push dword [ebp - 0x38]
call fcn.004ab4f0
cmp byte [ebp - 1], 0
je 0x4efc02
mov eax, dword [ebp - 0xc]
xor esi, esi
bswap eax
mov dword [ebp - 8], eax
test edi, edi
jle 0x4efc0f
mov ebx, dword [ebp - 0x14]
lea ecx, [ecx]
mov eax, esi
lea ecx, [ebp - 0x84]
and eax, 3
mov al, byte [ebp + eax - 8]
xor al, byte [esi + ebx]
push eax
call fcn.004ab530
inc esi
cmp esi, edi
jl 0x4efbe0
mov ebx, dword [ebp - 0x3c]
jmp 0x4efc0f
push edi
push esi
lea ecx, [ebp - 0x84]
call fcn.004ab4f0
lea eax, [ebp - 0x84]
mov ecx, ebx
push eax
call fcn.004ee970
cmp dword [ebp - 0x7c], 0
jl 0x4efc51
cmp dword [ebp - 0x84], 0
je 0x4efc4a
call fcn.0053aa60
push 0
push dword [ebp - 0x84]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov dword [ebp - 0x84], 0
mov dword [ebp - 0x80], 0
cmp dword [ebp - 0x30], 0
jl 0x4efc7c
cmp dword [ebp - 0x38], 0
je 0x4efc75
call fcn.0053aa60
push 0
push dword [ebp - 0x38]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x4efc8c
push eax
call fcn.005402e0
add esp, 4
cmp byte [ebx + 0x125], 0
lea ecx, [ebx + 0x190]
mov byte [ebx + 0x124], 1
jne 0x4f00c5
push 0
push 0x4c4b40
call fcn.004b29b0
jmp 0x4f00d8
test cl, 1
jne 0x4efd09
lea esi, [ebx + 0x150]
mov ecx, esi
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 0
mov byte [esi + 0x1a], 0
mov dword [esi + 0x14], 0xffffffff
call fcn.004aa800
push dword [ebx + 0x138]
mov al, byte [ebx + 0x128]
mov ecx, esi
push dword [ebx + 0x144]
shr al, 4
mov byte [ebx + 0x14c], al
call fcn.004ab4f0
jmp case.0x4ef6b6.10
cmp dword [ebx + 0x144], 0
je 0x4efd55
cmp dword [ebx + 0x13c], 0
ja 0x4efd24
cmp dword [ebx + 0x138], 0
jbe 0x4efd55
call fcn.004ae070
mov ecx, dword [ebx + 0x144]
mov esi, eax
push 1
push ecx
push dword [ebx + 0x138]
push ecx
push dword [ebx + 0xc]
mov ecx, esi
call fcn.004e4ea0
mov ecx, dword [ebx + 0x68]
push esi
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, esi
call fcn.004e50b0
mov dword [ebx + 0x144], 0
jmp case.0x4ef6b6.10
lea ecx, [ebx + 0x190]
mov byte [ebx + 0x125], 1
call fcn.004b2460
cmp byte [ebx + 0x124], 0
mov eax, dword [ebx + 0x10]
jne 0x4eff05
cmp eax, 2
jne case.0x4ef6b6.10
push 0x40
push eax
push 0
lea ecx, [ebp - 0x60]
call fcn.004aa520
push 0x3e8
lea ecx, [ebp - 0x60]
call fcn.004ac2d0
cmp dword [0x82a4b4], 0
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x60]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], esi
jne 0x4efdc2
xor eax, eax
jmp 0x4efdd5
lea eax, [ebp - 0x10]
push eax
push 6
push str.CWebSocketConnection::BBuildAndAsyncSendFrame
call fcn.00540320
add esp, 0xc
cmp dword [ebx + 0x10], 2
mov dword [ebp - 0x10], eax
jne 0x4efc7f
push 0x40
push 0xe
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0x38]
call fcn.004aa600
cmp byte [ebx + 0x126], 0
mov dword [ebp - 0xc], 0
mov byte [ebp - 1], 0
je 0x4efe1b
lea eax, [ebp - 0xc]
mov byte [ebp - 1], 0x80
push 4
push eax
call fcn.004fce20
add esp, 8
push 0x88
lea ecx, [ebp - 0x38]
call fcn.004abf90
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x38]
cmp eax, 0x7e
jl 0x4efe73
cmp eax, 0xffff
mov al, byte [ebp - 1]
jle 0x4efe5a
or al, 0x7f
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
mov eax, edi
cdq
push edx
push eax
call fcn.004ac080
jmp 0x4efe84
or al, 0x7e
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
push edi
call fcn.004ac2d0
jmp 0x4efe84
and al, 0x7f
or al, byte [ebp - 1]
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
cmp byte [ebp - 1], 0
je 0x4efe95
push dword [ebp - 0xc]
lea ecx, [ebp - 0x38]
call fcn.004ac1c0
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push 0
add eax, edi
push eax
push 0
call fcn.004aa520
push dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push dword [ebp - 0x38]
call fcn.004ab4f0
cmp byte [ebp - 1], 0
je 0x4efc02
mov eax, dword [ebp - 0xc]
xor esi, esi
bswap eax
mov dword [ebp - 8], eax
test edi, edi
jle 0x4efc0f
mov ebx, dword [ebp - 0x14]
lea ebx, [ebx]
mov eax, esi
lea ecx, [ebp - 0x84]
and eax, 3
mov al, byte [ebp + eax - 8]
xor al, byte [esi + ebx]
push eax
call fcn.004ab530
inc esi
cmp esi, edi
jl 0x4efee0
mov ebx, dword [ebp - 0x3c]
jmp 0x4efc0f
cmp eax, 2
jne case.0x4ef6b6.10
mov ecx, ebx
mov dword [ebx + 0x10], 3
call fcn.004e58d0
jmp case.0x4ef6b6.10
push dword [ebx + 0x138]
mov ecx, ebx
push dword [ebx + 0x144]
push 0xa
call fcn.004ee730
jmp case.0x4ef6b6.10
cmp dword [ebx + 0x10], 2
jne case.0x4ef6b6.10
cmp byte [ebx + 0x124], 0
jne case.0x4ef6b6.10
push 0x40
push 2
push 0
lea ecx, [ebp - 0x60]
call fcn.004aa520
push 0x3eb
lea ecx, [ebp - 0x60]
call fcn.004ac2d0
cmp dword [0x82a4b4], 0
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0x60]
mov dword [ebp - 8], edi
mov dword [ebp - 0x14], esi
jne 0x4eff86
xor eax, eax
jmp 0x4eff99
lea eax, [ebp - 0x10]
push eax
push 6
push str.CWebSocketConnection::BBuildAndAsyncSendFrame
call fcn.00540320
add esp, 0xc
cmp dword [ebx + 0x10], 2
mov dword [ebp - 0x10], eax
jne 0x4efc7f
push 0x40
push 0xe
lea eax, [ebp - 0x98]
push eax
lea ecx, [ebp - 0x38]
call fcn.004aa600
cmp byte [ebx + 0x126], 0
mov dword [ebp - 0xc], 0
mov byte [ebp - 1], 0
je 0x4effdf
lea eax, [ebp - 0xc]
mov byte [ebp - 1], 0x80
push 4
push eax
call fcn.004fce20
add esp, 8
push 0x88
lea ecx, [ebp - 0x38]
call fcn.004abf90
mov eax, dword [ebp - 8]
lea ecx, [ebp - 0x38]
cmp eax, 0x7e
jl 0x4f0037
cmp eax, 0xffff
mov al, byte [ebp - 1]
jle 0x4f001e
or al, 0x7f
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
mov eax, edi
cdq
push edx
push eax
call fcn.004ac080
jmp 0x4f0048
or al, 0x7e
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
lea ecx, [ebp - 0x38]
push edi
call fcn.004ac2d0
jmp 0x4f0048
and al, 0x7f
or al, byte [ebp - 1]
movzx eax, al
push eax
call fcn.004abf90
mov edi, dword [ebp - 8]
cmp byte [ebp - 1], 0
je 0x4f0059
push dword [ebp - 0xc]
lea ecx, [ebp - 0x38]
call fcn.004ac1c0
mov eax, dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push 0
add eax, edi
push eax
push 0
call fcn.004aa520
push dword [ebp - 0x28]
lea ecx, [ebp - 0x84]
push dword [ebp - 0x38]
call fcn.004ab4f0
cmp byte [ebp - 1], 0
je 0x4efc02
mov eax, dword [ebp - 0xc]
xor esi, esi
bswap eax
mov dword [ebp - 8], eax
test edi, edi
jle 0x4efc0f
mov ebx, dword [ebp - 0x14]
mov edi, edi
mov eax, esi
lea ecx, [ebp - 0x84]
and eax, 3
mov al, byte [ebp + eax - 8]
xor al, byte [esi + ebx]
push eax
call fcn.004ab530
inc esi
cmp esi, edi
jl 0x4f00a0
mov ebx, dword [ebp - 0x3c]
jmp 0x4efc0f
call fcn.004b2460
mov ecx, ebx
mov dword [ebx + 0x10], 3
call fcn.004e58d0
cmp dword [ebp - 0x58], 0
jl case.0x4ef6b6.10
cmp dword [ebp - 0x60], 0
je case.0x4ef6b6.10
call fcn.0053aa60
push 0
push dword [ebp - 0x60]
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0x1c]
cmp dword [ebx + 0x144], 0
je 0x4f0112
call fcn.0053aa60
push 0
push dword [ebx + 0x144]
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x1c]
xor eax, eax
mov dword [ebx + 0x128], eax
mov dword [ebx + 0x12c], eax
mov dword [ebx + 0x130], eax
mov dword [ebx + 0x134], eax
mov dword [ebx + 0x138], eax
mov dword [ebx + 0x13c], eax
mov dword [ebx + 0x140], eax
mov dword [ebx + 0x144], eax
mov dword [ebx + 0x148], eax
mov eax, dword [ebp - 0x88]
test eax, eax
je 0x4f015d
push eax
call fcn.005402e0
add esp, 4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret