Function at 0x4c4990
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
mov eax, dword [esp + 8]
sub esp, 0x20
mov ecx, dword [esp + 0x30]
push ebx
push ebp
push esi
push edi
cmp eax, ecx
jne 0x4c4a50
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x18], 0
mov dword [esp + 0x1c], 1
mov dword [esp + 0x20], 2
mov dword [esp + 0x24], 3
mov dword [esp + 0x28], 4
mov dword [esp + 0x2c], 4
mov ecx, dword [esp + eax*4 + 0x18]
mov eax, dword [esp + 0x48]
mul ecx
mov edi, eax
mov eax, dword [esp + 0x44]
mul ecx
mov ebx, eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x40], eax
add edi, edx
jne 0x4c4a03
test ebx, ebx
je case.default.0x4c4a6d
mov dword [esp + 0x38], edi
mov esi, ebx
test edi, edi
jne 0x4c4a12
cmp ebx, 0xffffffff
jbe 0x4c4a1d
or esi, 0xffffffff
mov dword [esp + 0x38], 0
push esi
push ebp
push eax
call fcn.004adc20
mov eax, dword [esp + 0x4c]
add esp, 0xc
sub ebx, esi
sbb edi, dword [esp + 0x38]
add eax, esi
add ebp, esi
mov dword [esp + 0x40], eax
test edi, edi
ja 0x4c4a03
jb case.default.0x4c4a6d
test ebx, ebx
jne 0x4c4a03
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
dec ecx
cmp ecx, 4
ja case.default.0x4c4a6d
jmp dword [ecx*4 + 0x4c594c]
add eax, 0xfffffffe
cmp eax, 3
ja case.default.0x4c4a6d
jmp dword [eax*4 + 0x4c5960]
mov ebx, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebx, ebx
jb case.default.0x4c4a6d
mov edi, dword [esp + 0x44]
ja 0x4c4a97
test edi, edi
je case.default.0x4c4a6d
mov ebp, dword [esp + 0x3c]
mov eax, 0x80
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
nop dword [eax + eax]
movzx ecx, byte [edx + ebp]
sub cx, ax
mov eax, 0x100
cwde
movsx ecx, cx
imul ecx, eax
mov eax, dword [esp + 0x34]
mov word [eax + edx*2], cx
add edx, 1
mov eax, 0x80
adc esi, 0
cmp esi, ebx
jb 0x4c4ab0
ja case.default.0x4c4a6d
cmp edx, edi
jb 0x4c4ab0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebx, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebx, ebx
jb case.default.0x4c4a6d
mov edi, dword [esp + 0x44]
ja 0x4c4b0f
test edi, edi
je case.default.0x4c4a6d
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [esp + 0x34]
mov cl, byte [edx + ebp]
add cl, 0x80
lea eax, [eax + edx*2]
mov word [edx + eax], 0
mov byte [edx + eax + 2], cl
add edx, 1
adc esi, 0
cmp esi, ebx
jb 0x4c4b20
ja case.default.0x4c4a6d
cmp edx, edi
jb 0x4c4b20
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov edi, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c4b76
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + ebx]
add eax, 0xffffff80
shl eax, 0x18
mov dword [ebp + ecx*4], eax
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c4b86
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c4b86
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov edi, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c4bd3
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
movss xmm1, dword [0x555f30]
movss xmm2, dword [0x5530c8]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
movzx eax, byte [ecx + ebx]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
subss xmm0, xmm2
movss dword [ebp + ecx*4], xmm0
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c4bf3
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c4bf3
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
dec eax
cmp eax, 4
ja case.default.0x4c4a6d
jmp dword [eax*4 + 0x4c5970]
mov eax, dword [esp + 0x4c]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test eax, eax
jne 0x4c4c99
mov edi, dword [esp + 0x48]
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c4c64
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov al, byte [ebx + ecx*2 + 1]
sub al, 0x80
mov byte [ecx + ebp], al
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c4c74
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c4c74
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
cmp dword [esp + 0x48], 0
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c4cb2
test ebx, ebx
je case.default.0x4c4a6d
mov ebp, closesocket
cmp eax, 2
jne 0x4c4d66
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x38], eax
nop dword [eax]
mov eax, dword [esp + 0x3c]
movzx edi, word [eax + ebx*2]
imul eax, dword [0xd91394], 0xbc8f
mov dword [esp + 0x40], edi
cdq
idiv ebp
mov esi, edx
imul eax, esi, 0xbc8f
cdq
idiv ebp
mov eax, 0x1ffff8f
mov ecx, edx
mul esi
mov dword [0xd91394], ecx
sub esi, edx
shr ecx, 0x19
shr esi, 1
add ecx, 0xffffff80
add esi, edx
movsx eax, di
shr esi, 0x18
add ecx, esi
add eax, ecx
cmp eax, 0x7fff
jg 0x4c4d29
mov eax, edi
add eax, ecx
movzx eax, ax
jmp 0x4c4d2e
mov eax, 0x7fff
mov ecx, dword [esp + 0x34]
sar eax, 8
sub al, 0x80
mov byte [ebx + ecx], al
add ebx, 1
mov eax, dword [esp + 0x38]
adc eax, 0
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x48]
jb 0x4c4cd0
ja case.default.0x4c4a6d
cmp ebx, dword [esp + 0x44]
jb 0x4c4cd0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movlpd qword [esp + 0x10], xmm0
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x3c]
movzx edi, word [edx + ecx*2]
cmp eax, 1
jne 0x4c4d9c
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov dword [0xd91394], edx
shr edx, 0x18
add edx, 0xffffff80
jmp 0x4c4d9e
xor edx, edx
movsx eax, di
add eax, edx
cmp eax, 0x7fff
jg 0x4c4db2
lea eax, [edx + edi]
movzx eax, ax
jmp 0x4c4db7
mov eax, 0x7fff
mov edx, dword [esp + 0x34]
sar eax, 8
sub al, 0x80
mov byte [ecx + edx], al
add ecx, 1
mov eax, dword [esp + 0x4c]
adc esi, 0
cmp esi, dword [esp + 0x48]
jb 0x4c4d74
ja case.default.0x4c4a6d
cmp ecx, ebx
jb 0x4c4d74
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebp, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebp, ebp
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c4e08
test ebx, ebx
je case.default.0x4c4a6d
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x34]
lea ecx, [eax + edx*2]
mov byte [edx + ecx], 0
movzx eax, byte [edi + edx*2]
mov byte [edx + ecx + 1], al
movzx eax, byte [edi + edx*2 + 1]
mov byte [edx + ecx + 2], al
add edx, 1
adc esi, 0
cmp esi, ebp
jb 0x4c4e14
ja case.default.0x4c4a6d
cmp edx, ebx
jb 0x4c4e14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov edi, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c4e6f
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
nop
movsx eax, word [ebx + ecx*2]
shl eax, 0x10
mov dword [ebp + ecx*4], eax
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c4e80
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c4e80
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov edi, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c4eca
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
movss xmm1, dword [0x555f24]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
movsx eax, word [ebx + ecx*2]
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [ebp + ecx*4], xmm0
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c4ee2
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c4ee2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
dec eax
cmp eax, 4
ja case.default.0x4c4a6d
jmp dword [eax*4 + 0x4c5984]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.004c3800
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.004c3a20
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebp, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebp, ebp
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c4f8f
test ebx, ebx
je case.default.0x4c4a6d
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
nop word [eax + eax]
mov eax, dword [esp + 0x3c]
lea ecx, [eax + esi*2]
movzx edx, byte [esi + ecx + 2]
movzx eax, byte [esi + ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [esi + ecx]
shl edx, 8
or edx, eax
mov eax, dword [esp + 0x34]
shl edx, 8
mov dword [eax + esi*4], edx
add esi, 1
adc edi, 0
cmp edi, ebp
jb 0x4c4fa0
ja case.default.0x4c4a6d
cmp esi, ebx
jb 0x4c4fa0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebp, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebp, ebp
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c5008
test ebx, ebx
je case.default.0x4c4a6d
movss xmm1, dword [0x555f20]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [esp + 0x3c]
lea ecx, [eax + esi*2]
movzx edx, byte [esi + ecx + 2]
movzx eax, byte [esi + ecx + 1]
shl edx, 8
or edx, eax
movzx eax, byte [esi + ecx]
shl edx, 8
or edx, eax
mov eax, dword [esp + 0x34]
shl edx, 8
sar edx, 8
movd xmm0, edx
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
movss dword [eax + esi*4], xmm0
add esi, 1
adc edi, 0
cmp edi, ebp
jb 0x4c5020
ja case.default.0x4c4a6d
cmp esi, ebx
jb 0x4c5020
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
dec eax
cmp eax, 4
ja case.default.0x4c4a6d
jmp dword [eax*4 + 0x4c5998]
mov ecx, dword [esp + 0x4c]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ecx, ecx
jne 0x4c50e6
mov edi, dword [esp + 0x48]
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c50b1
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov al, byte [ebx + ecx*4 + 3]
sub al, 0x80
mov byte [ecx + ebp], al
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c50c1
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c50c1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
cmp dword [esp + 0x48], 0
jb case.default.0x4c4a6d
ja 0x4c50fe
cmp dword [esp + 0x44], 0
jbe case.default.0x4c4a6d
mov ebp, closesocket
cmp ecx, 2
jne 0x4c51b4
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + esi*4]
mov dword [esp + 0x40], eax
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov ecx, edx
imul eax, ecx, 0xbc8f
shr ecx, 9
cdq
idiv ebp
mov eax, dword [esp + 0x40]
mov edi, edx
cdq
mov dword [0xd91394], edi
shr edi, 9
add edi, ecx
xor ecx, ecx
mov dword [esp + 0x38], edi
add dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
adc ecx, edx
sub eax, 0x800000
sbb ecx, 0
test ecx, ecx
jg 0x4c517e
jl 0x4c5171
cmp eax, 0x7fffffff
ja 0x4c517e
mov eax, dword [esp + 0x40]
add eax, 0xff800000
add eax, edi
jmp 0x4c5180
mov eax, ebp
mov ecx, dword [esp + 0x34]
sar eax, 0x18
sub al, 0x80
mov byte [esi + ecx], al
add esi, 1
adc ebx, 0
cmp ebx, dword [esp + 0x48]
jb 0x4c5114
ja case.default.0x4c4a6d
cmp esi, dword [esp + 0x44]
jb 0x4c5114
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movlpd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x40], eax
nop word [eax + eax]
mov eax, dword [esp + 0x3c]
mov eax, dword [eax + edi*4]
mov dword [esp + 0x38], eax
cmp ecx, 1
jne 0x4c5200
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov esi, edx
mov dword [0xd91394], esi
shr esi, 8
sub esi, 0x800000
jmp 0x4c5202
xor esi, esi
mov eax, esi
cdq
mov ebx, eax
mov ecx, edx
mov eax, dword [esp + 0x38]
cdq
add ebx, eax
adc ecx, edx
test ecx, ecx
jg 0x4c5224
jl 0x4c521c
cmp ebx, ebp
ja 0x4c5224
mov eax, dword [esp + 0x38]
add eax, esi
jmp 0x4c5226
mov eax, ebp
mov ecx, dword [esp + 0x34]
sar eax, 0x18
sub al, 0x80
mov byte [edi + ecx], al
add edi, 1
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
adc eax, 0
mov dword [esp + 0x40], eax
cmp eax, dword [esp + 0x48]
jb 0x4c51d0
ja case.default.0x4c4a6d
cmp edi, dword [esp + 0x44]
jb 0x4c51d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ecx, dword [esp + 0x4c]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ecx, ecx
jne 0x4c52c6
mov edi, dword [esp + 0x48]
test edi, edi
jb case.default.0x4c4a6d
mov esi, dword [esp + 0x44]
ja 0x4c528d
test esi, esi
je case.default.0x4c4a6d
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
nop dword [eax]
mov ax, word [ebx + ecx*4 + 2]
mov word [ebp + ecx*2], ax
add ecx, 1
adc edx, 0
cmp edx, edi
jb 0x4c52a0
ja case.default.0x4c4a6d
cmp ecx, esi
jb 0x4c52a0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
cmp dword [esp + 0x48], 0
jb case.default.0x4c4a6d
ja 0x4c52de
cmp dword [esp + 0x44], 0
jbe case.default.0x4c4a6d
mov ebp, closesocket
cmp ecx, 2
jne 0x4c5397
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x3c]
mov edi, dword [eax + ebx*4]
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov esi, edx
imul eax, esi, 0xbc8f
cdq
idiv ebp
mov eax, 0x18003
mov ecx, edx
mul esi
mov dword [0xd91394], ecx
sub esi, edx
shr ecx, 0x11
shr esi, 1
add esi, edx
shr esi, 0x10
lea eax, [ecx - 0x8000]
add eax, esi
mov dword [esp + 0x40], eax
cdq
mov esi, eax
mov ecx, edx
mov eax, edi
cdq
add esi, eax
adc ecx, edx
test ecx, ecx
jg 0x4c535a
jl 0x4c5354
cmp esi, ebp
ja 0x4c535a
add edi, dword [esp + 0x40]
jmp 0x4c535c
mov edi, ebp
mov eax, dword [esp + 0x34]
sar edi, 0x10
mov word [eax + ebx*2], di
add ebx, 1
mov eax, dword [esp + 0x38]
adc eax, 0
mov dword [esp + 0x38], eax
cmp eax, dword [esp + 0x48]
jb 0x4c52f8
ja case.default.0x4c4a6d
cmp ebx, dword [esp + 0x44]
jb 0x4c52f8
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movlpd qword [esp + 0x10], xmm0
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x40], eax
nop dword [eax]
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + ebx*4]
cmp ecx, 1
jne 0x4c53dc
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov edi, edx
mov dword [0xd91394], edi
shr edi, 0x10
sub edi, 0x8000
jmp 0x4c53de
xor edi, edi
mov eax, edi
cdq
mov dword [esp + 0x38], eax
mov ecx, edx
mov eax, esi
cdq
add dword [esp + 0x38], eax
adc ecx, edx
test ecx, ecx
jg 0x4c5400
jl 0x4c53fc
cmp dword [esp + 0x38], ebp
ja 0x4c5400
add esi, edi
jmp 0x4c5402
mov esi, ebp
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x4c]
sar esi, 0x10
mov word [eax + ebx*2], si
add ebx, 1
mov eax, dword [esp + 0x40]
adc eax, 0
mov dword [esp + 0x40], eax
cmp eax, dword [esp + 0x48]
jb 0x4c53b0
ja case.default.0x4c4a6d
cmp ebx, dword [esp + 0x44]
jb 0x4c53b0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebp, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebp, ebp
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c5460
test ebx, ebx
je case.default.0x4c4a6d
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [esp + 0x3c]
mov edx, dword [eax + esi*4]
mov eax, dword [esp + 0x34]
lea ecx, [eax + esi*2]
mov eax, edx
shr eax, 8
mov byte [esi + ecx], al
mov eax, edx
shr eax, 0x10
shr edx, 0x18
mov byte [esi + ecx + 1], al
mov byte [esi + ecx + 2], dl
add esi, 1
adc edi, 0
cmp edi, ebp
jb 0x4c5470
ja case.default.0x4c4a6d
cmp esi, ebx
jb 0x4c5470
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov esi, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test esi, esi
jb case.default.0x4c4a6d
mov edx, dword [esp + 0x44]
ja 0x4c54d5
test edx, edx
je case.default.0x4c4a6d
mov edi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x34]
movsd xmm1, qword [0x555f38]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x10]
nop dword [eax]
movd xmm0, dword [edi + eax*4]
cvtdq2pd xmm0, xmm0
mulsd xmm0, xmm1
cvtpd2ps xmm0, xmm0
movss dword [ebx + eax*4], xmm0
add eax, 1
adc ecx, 0
cmp ecx, esi
jb 0x4c54f0
ja case.default.0x4c4a6d
cmp eax, edx
jb 0x4c54f0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
dec eax
cmp eax, 3
ja case.default.0x4c4a6d
jmp dword [eax*4 + 0x4c59ac]
mov edi, dword [esp + 0x4c]
xorps xmm4, xmm4
xorps xmm6, xmm6
xorps xmm7, xmm7
test edi, edi
je 0x4c5554
movss xmm6, dword [0x555fc0]
movss xmm7, dword [0x555f34]
mov edx, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test edx, edx
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c5577
test ebx, ebx
je case.default.0x4c4a6d
movss xmm3, dword [0x5530c8]
mov ebp, closesocket
movss xmm5, dword [0x555fc4]
cmp edi, 2
jne 0x4c5665
mov edi, dword [esp + 0x14]
subss xmm0, xmm6
mov esi, dword [esp + 0x10]
subss xmm7, xmm4
movss dword [esp + 0x38], xmm0
nop dword [eax + eax]
mov eax, dword [esp + 0x3c]
xorps xmm0, xmm0
movss xmm1, dword [eax + esi*4]
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov ecx, edx
imul eax, ecx, 0xbc8f
cvtsi2sd xmm0, ecx
cdq
idiv ebp
divsd xmm0, qword [0x555270]
mov dword [0xd91394], edx
cvtpd2ps xmm2, xmm0
xorps xmm0, xmm0
cvtsi2sd xmm0, edx
mulss xmm2, dword [esp + 0x38]
divsd xmm0, qword [0x555270]
addss xmm2, xmm6
cvtpd2ps xmm0, xmm0
mulss xmm0, xmm7
addss xmm0, xmm4
addss xmm2, xmm0
addss xmm2, xmm1
comiss xmm5, xmm2
jbe 0x4c5621
movaps xmm0, xmm5
jmp 0x4c5628
movaps xmm0, xmm3
minss xmm0, xmm2
mov ecx, dword [esp + 0x34]
addss xmm0, xmm3
mulss xmm0, dword [0x555f94]
cvttss2si eax, xmm0
mov byte [esi + ecx], al
add esi, 1
adc edi, 0
cmp edi, dword [esp + 0x48]
jb 0x4c55b0
ja case.default.0x4c4a6d
cmp esi, ebx
jb 0x4c55b0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
movlpd qword [esp + 0x10], xmm0
mov esi, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
movss xmm2, dword [eax + ecx*4]
cmp edi, 1
jne 0x4c56bd
imul eax, dword [0xd91394], 0xbc8f
cdq
idiv ebp
mov dword [0xd91394], edx
movd xmm0, edx
cvtdq2pd xmm0, xmm0
mov edx, dword [esp + 0x48]
divsd xmm0, qword [0x555270]
cvtpd2ps xmm1, xmm0
movaps xmm0, xmm7
subss xmm0, xmm6
mulss xmm1, xmm0
addss xmm1, xmm6
jmp 0x4c56c0
movaps xmm1, xmm4
addss xmm1, xmm2
comiss xmm5, xmm1
jbe 0x4c56ce
movaps xmm0, xmm5
jmp 0x4c56d5
movaps xmm0, xmm3
minss xmm0, xmm1
mov ebx, dword [esp + 0x34]
addss xmm0, xmm3
mulss xmm0, dword [0x555f94]
cvttss2si eax, xmm0
mov byte [ecx + ebx], al
add ecx, 1
mov ebx, dword [esp + 0x44]
adc esi, 0
cmp esi, edx
jb 0x4c5673
ja case.default.0x4c4a6d
cmp ecx, ebx
jb 0x4c5673
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x48]
push dword [esp + 0x44]
call fcn.004c3c60
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebp, dword [esp + 0x48]
xorps xmm0, xmm0
movlpd qword [esp + 0x10], xmm0
test ebp, ebp
jb case.default.0x4c4a6d
mov ebx, dword [esp + 0x44]
ja 0x4c575b
test ebx, ebx
je case.default.0x4c4a6d
movss xmm3, dword [0x5530c8]
movss xmm2, dword [0x555fc4]
movss xmm4, dword [0x555fb4]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [esp + 0x3c]
movss xmm1, dword [eax + esi*4]
comiss xmm2, xmm1
jbe 0x4c5793
movaps xmm0, xmm2
jmp 0x4c579a
movaps xmm0, xmm3
minss xmm0, xmm1
mov eax, dword [esp + 0x34]
mulss xmm0, xmm4
lea ecx, [eax + esi*2]
cvttss2si edx, xmm0
mov byte [esi + ecx], dl
mov eax, edx
sar eax, 8
sar edx, 0x10
mov byte [esi + ecx + 1], al
mov byte [esi + ecx + 2], dl
add esi, 1
adc edi, 0
cmp edi, ebp
jb 0x4c5780
ja case.default.0x4c4a6d
cmp esi, ebx
jb 0x4c5780
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
mov ebx, dword [esp + 0x48]
xor ecx, ecx
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x44]
test ebx, ebx
jb 0x4c58d9
ja 0x4c5809
test edi, edi
je 0x4c58d9
test ebx, ebx
jne 0x4c5809
cmp edi, 4
jb 0x4c58d9
lea eax, [edi - 1]
xor ecx, ecx
lea edx, [edi*4 - 4]
lea eax, [esi + eax*4]
add edx, ebp
cmp ebp, eax
ja 0x4c5826
cmp edx, esi
jae 0x4c58d9
movaps xmm4, xmmword [0x556050]
lea eax, [ebp + 8]
movaps xmm5, xmmword [0x555ff0]
mov edx, edi
movaps xmm6, xmmword [0x556000]
mov edi, esi
and edx, 0xfffffffc
sub edi, ebp
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x38]
nop dword [eax]
nop word [eax + eax]
cvtps2pd xmm1, qword [esi + ecx*4]
mov dword [esp + 0x38], 0
add ecx, 4
lea eax, [eax + 0x10]
movaps xmm0, xmm5
movaps xmm3, xmm1
cmpltpd xmm3, xmm4
minpd xmm0, xmm1
movaps xmm2, xmm3
andps xmm3, xmm4
andnpd xmm2, xmm0
orps xmm2, xmm3
cvtps2pd xmm1, qword [eax + ebp - 0x10]
mulpd xmm2, xmm6
movaps xmm3, xmm1
cvttpd2dq xmm0, xmm2
cmpltpd xmm3, xmm4
movq qword [eax - 0x18], xmm0
movaps xmm0, xmm5
movaps xmm2, xmm3
andps xmm3, xmm4
minpd xmm0, xmm1
andnpd xmm2, xmm0
orps xmm2, xmm3
mulpd xmm2, xmm6
cvttpd2dq xmm0, xmm2
movq qword [eax - 0x10], xmm0
cmp dword [esp + 0x38], ebx
jb 0x4c5860
ja 0x4c58d5
cmp ecx, edx
jb 0x4c5860
mov ebp, dword [esp + 0x34]
xor eax, eax
cmp eax, ebx
ja case.default.0x4c4a6d
jb 0x4c58e5
cmp ecx, edi
jae case.default.0x4c4a6d
movsd xmm4, qword [0x555270]
lea edx, [ecx*4]
movsd xmm2, qword [0x553078]
add edx, ebp
movsd xmm3, qword [0x5530b0]
sub esi, ebp
nop dword [eax + eax]
movss xmm1, dword [edx + esi]
cvtps2pd xmm1, xmm1
comisd xmm2, xmm1
jbe 0x4c5923
movaps xmm0, xmm2
jmp 0x4c592a
movaps xmm0, xmm3
minsd xmm0, xmm1
mulsd xmm0, xmm4
inc ecx
cvttsd2si eax, xmm0
mov dword [edx], eax
xor eax, eax
add edx, 4
cmp eax, ebx
jb 0x4c5910
ja case.default.0x4c4a6d
cmp ecx, edi
jb 0x4c5910
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret