Function at 0x492966
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x4ff074]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [0xa92808]
push esi
mov esi, ecx
xor cl, cl
push edi
lea eax, [eax + eax*2]
mov dword [ebp - 0xc8], esi
mov byte [ebp - 0xbd], cl
mov word [0x90a894], ax
cmp byte [0x7ea98b], cl
je 0x491f1e
mov ecx, str.IN_Net_ServerReadMultiplayerData
call fcn.004bfb10
mov cl, byte [ebp - 0xbd]
cmp word [esi], 0x23
mov edi, 1
je 0x491f38
inc word [0x8f7d3c]
mov cl, 1
mov byte [ebp - 0xbd], cl
cmp word [esi + 2], 0
je 0x492ad5
mov edx, 0xefff
test cl, cl
jne 0x492ad5
movzx eax, word [esi + edi*2]
inc edi
sub eax, 0x45
cmp eax, 0x13
ja case.0x491f68.70
movzx eax, byte [eax + 0x492b2c]
jmp dword [eax*4 + 0x492b14]
movzx eax, word [esi + edi*2]
inc edi
sub eax, 0x30
je 0x491f8e
sub eax, 1
jne case.default.0x4926cd
mov byte [0x90a893], 1
jmp case.default.0x4926cd
mov byte [0x90a893], 0
jmp case.default.0x4926cd
movzx eax, word [esi + edi*2]
inc edi
sub eax, 0x30
mov dword [ebp - 0xc4], edi
cmp eax, 6
ja case.default.0x4926cd
jmp dword [eax*4 + 0x492b40]
cmp word [0x9f41d0], 0
jne case.default.0x4926cd
mov al, byte [0x9eabaa]
inc al
mov byte [0x90aa2e], al
jmp case.default.0x4926cd
cmp word [0x9f41d0], 0
jne case.default.0x4926cd
mov al, byte [0x90aa2e]
cmp al, 0x10
jae case.default.0x4926cd
movzx eax, al
imul ecx, eax, 0x70
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x9c]
inc byte [0x90aa2e]
push eax
lea eax, [ebp - 0xa0]
push eax
lea eax, [ebp - 0xa4]
add ecx, 0x9f05b0
push eax
lea eax, [ebp - 0xa8]
mov dword [ebp - 0xc4], ecx
push eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xb4]
push eax
push 0x10
push ecx
push 0x10
lea eax, [ecx + 0x40]
push eax
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0xbc]
push eax
lea eax, [ecx + 0x34]
push eax
lea eax, [esi + edi*2]
push str._d__d__d__s__s__d__d__d__d__d__d__d__d
push eax
call fcn.00491790
mov ecx, dword [ebp - 0xc4]
add esp, 0x44
call fcn.00449890
mov eax, dword [ebp - 0xbc]
xor ecx, ecx
cdq
mov esi, eax
mov eax, dword [ebp - 0xb8]
cdq
or ecx, eax
or esi, edx
mov edx, dword [ebp - 0xc4]
mov al, byte [ebp - 0xb4]
and al, 1
mov dword [edx + 0x38], ecx
mov ecx, dword [ebp - 0xb0]
mov dword [edx + 0x3c], esi
mov byte [edx + 0x66], al
mov dword [edx + 0x60], ecx
call fcn.00490ad0
mov byte [edx + 0x65], al
mov al, byte [ebp - 0xac]
mov byte [edx + 0x67], al
mov al, byte [ebp - 0xa8]
mov byte [edx + 0x68], al
mov al, byte [ebp - 0xa4]
mov byte [edx + 0x69], al
mov al, byte [ebp - 0xa0]
mov byte [edx + 0x6a], al
mov al, byte [ebp - 0x9c]
mov byte [edx + 0x6b], al
mov al, byte [ebp - 0x98]
mov byte [edx + 0x6c], al
mov byte [edx + 0x6e], 0
mov byte [edx + 0x64], 0xff
add edx, 0x20
call fcn.00490b20
mov eax, dword [ebp - 0xc4]
mov esi, dword [eax + 0x38]
mov edx, dword [eax + 0x3c]
mov eax, esi
or eax, edx
je 0x492147
xor cl, cl
movzx eax, cl
shl eax, 4
cmp esi, dword [eax + 0x9f04b0]
jne 0x492127
cmp edx, dword [eax + 0x9f04b4]
je 0x49213e
inc cl
cmp cl, 0x10
jb 0x492111
call fcn.00420ec0
mov esi, dword [ebp - 0xc8]
jmp case.default.0x4926cd
mov eax, dword [ebp - 0xc4]
mov byte [eax + 0x64], cl
call fcn.00420ec0
mov esi, dword [ebp - 0xc8]
jmp case.default.0x4926cd
mov dl, byte [0x90aa03]
cmp dl, 0x64
jae case.default.0x4926cd
jne 0x49216c
mov dl, 0x63
jmp 0x492170
test dl, dl
je 0x49219d
movzx eax, dl
mov ecx, 0x22
imul eax, eax, 0x88
lea edi, [eax + 0x9f41e0]
lea esi, [edi - 0x88]
rep movsd dword es:[edi], dword [esi]
add dl, 0xff
jne 0x492170
mov edi, dword [ebp - 0xc4]
mov esi, dword [ebp - 0xc8]
lea eax, [ebp - 0x8c]
push eax
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x94]
push eax
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x9c]
push eax
lea eax, [ebp - 0xa0]
push eax
lea eax, [ebp - 0xa4]
push eax
lea eax, [ebp - 0xa8]
push eax
lea eax, [ebp - 0xac]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0xb8]
push eax
lea eax, [ebp - 0xbc]
push eax
push 0x9f41e0
push 0x9f4224
lea eax, [esi + edi*2]
push str._d__d__d__d__d__d__d__d__d__d__d__d__d__d__d
push eax
call fcn.00491790
mov al, byte [ebp - 0xbc]
add esp, 0x44
mov byte [0x9f4250], al
mov al, byte [ebp - 0xb8]
mov byte [0x9f4251], al
mov al, byte [ebp - 0xb4]
mov byte [0x9f4252], al
mov ax, word [ebp - 0xb0]
mov word [0x9f4254], ax
mov al, byte [ebp - 0xac]
mov ecx, dword [0x9f4224]
mov byte [0x9f4256], al
mov al, byte [ebp - 0xa8]
mov byte [0x9f4257], al
mov al, byte [ebp - 0xa4]
mov byte [0x9f4258], al
mov al, byte [ebp - 0xa0]
mov byte [0x9f4259], al
mov al, byte [ebp - 0x9c]
mov byte [0x9f425a], al
mov al, byte [ebp - 0x98]
mov byte [0x9f425b], al
mov al, byte [ebp - 0x94]
mov byte [0x9f425c], al
mov al, byte [ebp - 0x90]
mov byte [0x9f425d], al
mov al, byte [ebp - 0x8c]
mov byte [0x9f425e], al
call fcn.0048f770
mov dword [ebp - 0xc4], eax
cmp eax, 0xffffffff
je case.default.0x4926cd
movzx ecx, word [0xa90f7c]
xor edx, edx
imul eax, ecx, 0x5a
lea ecx, [ecx + ecx*4]
add ecx, ecx
div ecx
imul edx, dword [ebp - 0xc4], 0x70
mov byte [0x9f425f], al
mov al, byte [edx + 0x9f0614]
mov byte [0x9f4248], al
mov eax, dword [edx + 0x9f05e8]
mov dword [0x9f4230], eax
mov eax, dword [edx + 0x9f05ec]
mov ecx, dword [edx + 0x9f0610]
mov dword [0x9f4234], eax
mov al, byte [0x9f0614]
mov byte [0x9f4249], al
mov eax, dword [0x9f05e8]
mov dword [0x9f4238], eax
mov eax, dword [0x9f05ec]
mov dword [0x9f423c], eax
mov eax, dword [0x9f05e4]
mov dword [0x9f4228], eax
mov al, byte [edx + 0x9f061e]
mov byte [0x9f424e], al
mov al, byte [0x9f061e]
mov byte [0x9f424f], al
mov al, byte [edx + 0x9f0616]
mov byte [0x9f424c], al
mov al, byte [0x9f0616]
mov byte [0x9f424d], al
mov eax, dword [0x9f0610]
mov dword [0x9f4240], ecx
mov dword [0x9f4244], eax
call fcn.00490ad0
mov byte [0x9f424a], al
mov al, byte [0x9f0615]
mov byte [0x9f424b], al
lea eax, [edx + 0x9f05b0]
push eax
push 0x10
push 0x9f41e4
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
add esp, 0xc
push 0x9f05b0
push 0x10
push 0x9f4204
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
movzx eax, byte [0x9f4250]
xor cl, cl
add esp, 0xc
mov byte [0x9f4260], cl
movzx eax, byte [eax + 0x4ea168]
cmp eax, 0xa
ja case.0x4923cc.2
movzx eax, byte [eax + 0x492b74]
jmp dword [eax*4 + 0x492b5c]
mov ax, word [0x7ea926]
cmp ax, word [0x9f4254]
je case.0x4923cc.2
mov byte [0x9f4260], 1
jmp case.0x4923cc.2
mov ax, word [0x7ea928]
cmp ax, word [0x9f4254]
je case.0x4923cc.2
mov byte [0x9f4260], 1
jmp case.0x4923cc.2
movzx eax, byte [0x7ea937]
cmp ax, word [0x9f4254]
je case.0x4923cc.2
mov byte [0x9f4260], 1
jmp case.0x4923cc.2
movzx eax, byte [0x7ea935]
cmp ax, word [0x9f4254]
je case.0x4923cc.2
mov byte [0x9f4260], 1
jmp case.0x4923cc.2
movzx eax, byte [0x7ea936]
cmp ax, word [0x9f4254]
mov eax, 1
movzx ecx, cl
cmovne ecx, eax
mov byte [0x9f4260], cl
inc byte [0x90aa03]
cmp byte [0x9f425e], 1
jne 0x49247e
mov ecx, dword [0x9f41e0]
call fcn.0048f7a0
cmp eax, 0xffffffff
jne 0x49247e
xor cl, cl
call fcn.004901e0
call fcn.00420ec0
jmp case.default.0x4926cd
lea eax, [ebp - 0xbc]
push eax
lea eax, [esi + edi*2]
push 0x4fb1e8
push eax
call fcn.00491790
mov dl, byte [0x90aa07]
add esp, 0xc
mov esi, dword [ebp - 0xbc]
xor cl, cl
test dl, dl
je 0x4924de
nop dword [eax]
nop word [eax + eax]
movzx eax, cl
imul eax, eax, 0x88
cmp dword [eax + 0x9f0cb0], esi
je 0x4924d9
inc cl
cmp cl, dl
jb 0x4924c0
jmp 0x4924de
call fcn.00490180
xor cl, cl
cmp byte [0x90aa03], cl
jbe 0x49214c
nop dword [eax]
movzx eax, cl
imul eax, eax, 0x88
cmp dword [eax + 0x9f41e0], esi
je 0x492516
inc cl
cmp cl, byte [0x90aa03]
jb 0x4924f0
mov esi, dword [ebp - 0xc8]
jmp case.default.0x4926cd
call fcn.004901e0
mov esi, dword [ebp - 0xc8]
jmp case.default.0x4926cd
cmp byte [0x7ea914], 0
je case.default.0x4926cd
mov dl, byte [0x90a9f3]
cmp dl, 0x64
jne 0x492542
mov dl, 0x63
jmp 0x492550
test dl, dl
je 0x49257d
nop word [eax + eax]
movzx eax, dl
mov ecx, 0x3c
imul eax, eax, 0xf0
lea edi, [eax + 0x9f7700]
lea esi, [edi - 0xf0]
rep movsd dword es:[edi], dword [esi]
add dl, 0xff
jne 0x492550
mov edi, dword [ebp - 0xc4]
mov esi, dword [ebp - 0xc8]
push 0x40
push 0x9f7700
push 0x9f77c0
lea eax, [esi + edi*2]
push str._d__s
push eax
call fcn.00491790
add esp, 0x14
mov ecx, 0x9f7700
call fcn.00449890
mov ecx, dword [0x9f77c0]
call fcn.0048f770
cmp eax, 0xffffffff
je case.default.0x4926cd
imul edx, eax, 0x70
mov al, byte [edx + 0x9f0614]
mov byte [0x9f77e0], al
mov eax, dword [edx + 0x9f05e8]
mov dword [0x9f77c8], eax
mov eax, dword [edx + 0x9f05ec]
mov ecx, dword [edx + 0x9f0610]
mov dword [0x9f77cc], eax
mov al, byte [0x9f0614]
mov byte [0x9f77e1], al
mov eax, dword [0x9f05e8]
mov dword [0x9f77d0], eax
mov eax, dword [0x9f05ec]
mov dword [0x9f77d4], eax
mov eax, dword [0x9f05e4]
mov dword [0x9f77c4], eax
mov al, byte [0x9f061e]
mov byte [0x9f77e6], al
mov al, byte [edx + 0x9f061e]
mov byte [0x9f77e7], al
mov al, byte [edx + 0x9f0616]
mov byte [0x9f77e4], al
mov al, byte [0x9f0616]
mov byte [0x9f77e5], al
mov eax, dword [0x9f0610]
mov dword [0x9f77d8], ecx
mov dword [0x9f77dc], eax
call fcn.00490ad0
mov byte [0x9f77e2], al
mov al, byte [0x9f0615]
mov byte [0x9f77e3], al
lea eax, [edx + 0x9f05b0]
push eax
push 0x10
push 0x9f7780
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
add esp, 0xc
push 0x9f05b0
push 0x10
push 0x9f77a0
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll_wcscpy_s]
add esp, 0xc
mov word [0x9f77e8], 0x100
cmp byte [0x90a9f3], 0x64
jae case.default.0x4926cd
inc byte [0x90a9f3]
inc byte [0x90a94e]
call fcn.00420ec0
jmp case.default.0x4926cd
mov byte [0x90a897], 0
jmp case.default.0x4926cd
movzx eax, word [esi + edi*2]
inc edi
sub eax, 0x30
cmp eax, 6
ja case.default.0x4926cd
jmp dword [eax*4 + 0x492b80]
cmp byte [0x7d05f2], 0
jne case.default.0x4926cd
movups xmm0, xmmword [0xa033b0]
mov al, byte [0x9eabe7]
mov byte [0x7e8028], al
sub al, 8
movups xmmword [0x7ea7f0], xmm0
cmp al, 3
mov al, byte [0x9eabe3]
movups xmm0, xmmword [0xa033c0]
mov byte [0x7ea9b8], al
mov ax, word [0x9fd5e8]
setbe byte [0x7e8120]
movups xmmword [0x7ea800], xmm0
mov byte [0x7d05f2], 1
movups xmm0, xmmword [0xa033d0]
mov byte [0x8d2672], 0
mov word [0x7ea9bc], ax
movups xmmword [0x7ea810], xmm0
mov byte [0x7e8029], 0
movups xmm0, xmmword [0xa033e0]
mov byte [0x90aa03], 0
movups xmmword [0x7ea820], xmm0
call fcn.0048fa80
mov edx, 0x490a20
mov cl, 4
call fcn.00436670
jmp case.default.0x4926cd
lea eax, [ebp - 0xd4]
push eax
lea eax, [esi + edi*2]
push 0x4fb1e8
push eax
call fcn.00491790
mov ecx, dword [ebp - 0xd4]
add esp, 0xc
call fcn.00486c00
jmp case.default.0x4926cd
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp - 0x20]
push eax
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x28]
push eax
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x34]
push eax
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x40]
push eax
lea eax, [ebp - 0x3c]
push eax
lea eax, [ebp - 0x44]
push eax
lea eax, [ebp - 0xdc]
push eax
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0xe0]
push eax
lea eax, [ebp - 0xd0]
push eax
lea eax, [ebp - 0xcc]
push eax
lea eax, [esi + edi*2]
push str._d__d__d__d__d__d__d__d__d__d__d__d__d__d__d__d__d__d__d__d
push eax
call fcn.00491790
mov eax, dword [ebp - 0x10]
add esp, 0x58
xor eax, dword [ebp - 0x14]
xor eax, dword [ebp - 0x18]
xor eax, dword [ebp - 0x1c]
xor eax, dword [ebp - 0x20]
xor eax, dword [ebp - 0x24]
xor eax, dword [ebp - 0x2c]
xor eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0xd8]
xor eax, dword [ebp - 0x30]
xor eax, dword [ebp - 0x34]
xor eax, dword [ebp - 0x38]
xor eax, dword [ebp - 0x40]
xor eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0xdc]
xor eax, dword [ebp - 0x44]
xor eax, dword [ebp - 0xcc]
xor eax, dword [ebp - 0xd0]
xor eax, dword [ebp - 0xe0]
movd xmm0, edx
xor eax, edx
cvtdq2ps xmm0, xmm0
xor eax, ecx
mulss xmm0, dword [0x4fbf48]
movss dword [ebp - 0x4c], xmm0
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [0x4fbf48]
movss dword [ebp - 0x48], xmm0
cmp eax, dword [ebp - 0xc]
je 0x492894
test byte [0xa9292c], 0x10
je case.default.0x4926cd
mov eax, dword [ebp - 0xcc]
cmp eax, dword [0x9eaf18]
jne case.default.0x4926cd
mov cx, word [0x9eaeac]
movzx eax, cx
cmp dword [ebp - 0xd0], eax
jne case.default.0x4926cd
movups xmm0, xmmword [ebp - 0x50]
inc cx
mov byte [0x8d2672], 1
mov eax, 0xefff
mov word [0x9eaeac], cx
and word [0x7e8064], ax
movups xmmword [0x9eaeb0], xmm0
movups xmm0, xmmword [ebp - 0x40]
movups xmmword [0x9eaec0], xmm0
movups xmm0, xmmword [ebp - 0x30]
movups xmmword [0x9eaed0], xmm0
movups xmm0, xmmword [ebp - 0x20]
movups xmmword [0x9eaee0], xmm0
movq xmm0, qword [ebp - 0x10]
movq qword [0x9eaef0], xmm0
call fcn.0049df20
call fcn.00486e90
jmp case.default.0x4926cd
cmp byte [0x7ea914], 0
je case.default.0x4926cd
push 0x40
lea eax, [ebp - 0x88]
push eax
lea eax, [esi + edi*2]
push 0x4fb0dc
push eax
call fcn.00491790
lea ecx, [ebp - 0x88]
call fcn.00449890
push 1
mov dl, 1
lea ecx, [ebp - 0x88]
call fcn.004130c0
add esp, 0x14
jmp case.default.0x4926cd
cmp byte [0x7eaacf], 0
je case.default.0x4926cd
and word [0x7e8064], dx
xor al, al
push 0x7ea7f0
push 0xb09e10
push 0x50
push 0x504f00
mov byte [ebp - 0xbe], al
mov byte [0x7e803b], 1
call fcn.0042cda0
add esp, 0x10
cmp byte [0x7e8120], 1
jne 0x4929cf
cmp byte [0x7ea81f], 0
je 0x4929cf
mov al, byte [0x7ea9b8]
mov cl, byte [0x7ea9b4]
shr al, 1
cmp cl, al
ja 0x4929d5
inc cl
mov byte [0x7ea9b4], cl
jmp 0x4929d5
mov cl, byte [0x7ea9b4]
test cl, cl
je 0x492a05
xor cl, cl
call fcn.00487ce0
movzx ecx, al
push ecx
push 0x7ea7b0
push 0xb08d00
push 0x50
push 0x504e20
mov byte [ebp - 0xbe], al
call fcn.0042cda0
add esp, 0x14
jmp 0x492a0d
xor eax, eax
mov word [0x504e20], ax
mov ecx, 0x521280
call fcn.0044a660
mov cl, byte [ebp - 0xbe]
add cl, 0xa
jmp 0x492a45
cmp byte [0x7eaacf], 0
je case.default.0x4926cd
and word [0x7e8064], dx
mov ecx, 0x5210c0
mov byte [0x7e803b], 1
call fcn.0044a660
mov cl, 0xa
call fcn.00487bc0
mov cl, 1
call fcn.00486080
lea ecx, [esi + edi*2]
xor esi, esi
cmp word [ecx], si
je 0x492a73
movzx eax, word [ecx]
nop
cmp ax, 0x23
je 0x492a73
inc esi
movzx eax, si
movzx eax, word [ecx + eax*2]
test ax, ax
jne 0x492a60
lea eax, [esi + 1]
movzx ecx, si
movzx edx, ax
movzx eax, si
mov dword [ebp - 0xc4], eax
mov eax, dword [ebp - 0xc8]
lea esi, [eax + edi*2]
cmp word [esi + ecx*2], 0
mov esi, dword [ebp - 0xc8]
cmove edx, dword [ebp - 0xc4]
mov cl, byte [ebp - 0xbd]
movzx eax, dx
mov edx, 0xefff
add edi, eax
jmp 0x492aca
inc word [0x90a890]
jmp case.0x491f68.69
inc word [0x8f7d3c]
mov cl, 1
mov byte [ebp - 0xbd], cl
cmp word [esi + edi*2], 0
jne 0x491f48
call fcn.004906f0
call fcn.00490760
cmp byte [0x7e8118], 3
jne 0x492aed
call fcn.00420ec0
cmp byte [0x7ea98b], 0
je 0x492b00
mov ecx, str.OUT_Net_ServerReadMultiplayerData
call fcn.004bfb10
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop esi
call fcn.004d66b5
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret