Function at 0x449f30
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
mov edx, dword [ebp + 8]
movups xmm0, xmmword [edx + 0x1e]
lea eax, [edx + 0xe]
movups xmm1, xmmword [eax]
push ebx
movzx ebx, word [edx + 0xa]
movups xmmword [ebp - 0x30], xmm0
add ebx, edx
mov dword [ebp - 0xc], eax
movq xmm0, qword [eax + 0x20]
movq qword [ebp - 0x20], xmm0
movaps xmm0, xmm1
psrldq xmm0, 4
movd eax, xmm0
movaps xmm0, xmm1
push esi
mov esi, ecx
psrldq xmm0, 8
movups xmmword [ebp - 0x40], xmm1
push edi
psrldq xmm1, 0xc
movd ecx, xmm1
mov dword [ebp - 4], ebx
mov dword [esi + 8], eax
shr ecx, 0x10
mov edi, ecx
movd dword [ebp - 0x10], xmm0
shr edi, 3
movd dword [esi + 0xc], xmm0
mov dword [ebp - 8], edi
mov dword [esi + 0x14], edi
test eax, eax
je 0x44a57a
cmp dword [ebp - 0x10], 0
je 0x44a57a
cmp edi, 4
ja case.default.0x449fb9
jmp dword [edi*4 + 0x44a588]
mov dword [esi + 4], 1
jmp 0x449fd7
mov dword [esi + 0x14], 4
mov dword [esi + 4], 2
mov eax, dword [ebp - 0x30]
sub eax, 0
je 0x44a028
sub eax, 1
je 0x44a028
sub eax, 2
je 0x44a001
push str.Dont_handle_this_kind_of_compressed_bitmap_yet
call fcn.004073b0
add esp, 4
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [edx + 0x42]
mov ecx, dword [edx + 0x3e]
mov edx, dword [edx + 0x3a]
mov edi, dword [ebp + 8]
push eax
push eax
push ecx
mov edi, dword [edi + 0x36]
push ecx
push edx
push edx
push edi
push edi
push str.Bitmap_mask:__u___04x____u___04x____u___04x____u___04x_
call fcn.004580c0
mov edi, dword [ebp - 8]
add esp, 0x24
mov edx, dword [esi + 8]
xor ecx, ecx
imul edx, dword [esi + 0x14]
mov dword [esi + 0x1c], 0
mov eax, edx
mov dword [esi + 0x18], edx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a04b
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x44a067
xor ecx, ecx
nop
inc ecx
lea eax, [ecx + edx]
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a062
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x44a050
mov dword [esi + 0x1c], ecx
mov eax, dword [esi + 0x14]
add ecx, edx
imul ecx, dword [esi + 0xc]
imul eax, ecx
mov dword [ebp - 0x10], ecx
push eax
call fcn.004020a0
add esp, 4
mov dword [ebp - 8], eax
mov dword [esi + 0x10], eax
test eax, eax
je 0x44a57a
mov ecx, dword [esi + 0xc]
test ecx, ecx
jns 0x44a0c7
push str.BMP_loader_does_not_support_top_down_bitmaps_yet
call fcn.004073b0
mov eax, dword [esi + 0x10]
add esp, 4
test eax, eax
je 0x44a57a
push eax
call fcn.004eecc3
add esp, 4
mov dword [esi + 0x10], 0
xor al, al
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
test edi, edi
jne 0x44a1cd
mov eax, dword [ebp - 0x20]
mov ecx, 2
test eax, eax
cmovne ecx, eax
mov eax, dword [ebp - 0x40]
add eax, dword [ebp - 0xc]
push ecx
push eax
mov ecx, esi
call fcn.0044acb0
mov eax, dword [esi + 0x10]
mov dword [ebp - 4], eax
mov eax, dword [esi + 8]
cdq
and edx, 7
lea edi, [edx + eax]
xor edx, edx
sar edi, 3
mov ecx, edi
and ecx, reloc.WSOCK32.dll_closesocket
jns 0x44a111
dec ecx
or ecx, 0xfffffffc
add ecx, 1
je 0x44a129
mov ecx, edi
inc ecx
inc edx
mov eax, ecx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a127
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x44a115
xor ecx, ecx
lea eax, [edx + edi]
mov dword [ebp - 8], eax
mov dword [ebp + 8], ecx
cmp dword [esi + 0xc], ecx
jle 0x44a1b8
lea edi, [ecx + 8]
nop dword [eax]
xor edx, edx
mov dword [ebp - 0xc], edx
cmp dword [esi + 8], edx
jle 0x44a1af
nop word [eax + eax]
mov eax, edx
cdq
idiv edi
mov edi, dword [esi + 0xc]
sub edi, ecx
mov ecx, edx
dec edi
imul edi, dword [ebp - 8]
add edi, eax
mov eax, 1
shl eax, cl
mov ecx, esi
test byte [edi + ebx], al
mov eax, 0
setne al
lea eax, [eax*4 + 0x28]
push dword [eax + esi]
lea eax, [ebp - 0x14]
push eax
call fcn.00449a80
mov ecx, dword [esi + 8]
imul ecx, dword [ebp + 8]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
mov eax, dword [eax]
add ecx, edx
inc edx
mov dword [ebp - 0xc], edx
mov dword [edi + ecx*4], eax
mov edi, 8
mov ecx, dword [ebp + 8]
cmp edx, dword [esi + 8]
jl 0x44a150
inc ecx
mov dword [ebp + 8], ecx
cmp ecx, dword [esi + 0xc]
jl 0x44a140
mov ecx, esi
call fcn.00410450
cmp eax, 2
jne 0x44a523
jmp 0x44a506
cmp edi, 1
jne 0x44a24e
cmp dword [ebp - 0x30], edi
mov edi, dword [ebp - 0x40]
jne 0x44a221
push edi
push dword [ebp - 0x10]
mov ecx, esi
push ebx
push eax
call fcn.0044af90
test al, al
jne 0x44a22e
push str.Error_decompressing_RLE_bitmap
call fcn.004073b0
mov eax, dword [esi + 0x10]
add esp, 4
test eax, eax
je 0x44a20f
push eax
call fcn.004eecc3
add esp, 4
mov dword [esi + 0x10], 0
pop edi
mov dword [esi + 4], 0
xor al, al
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
push dword [ebp - 0x10]
push ebx
push eax
call fcn.004efc50
add esp, 0xc
mov eax, dword [ebp - 0x20]
mov ecx, 0x100
test eax, eax
cmovne ecx, eax
mov eax, dword [ebp - 0xc]
push ecx
add eax, edi
mov ecx, esi
push eax
call fcn.0044acb0
jmp 0x44a523
cmp edi, 2
jne 0x44a315
mov ebx, dword [esi + 8]
xor edx, edx
imul ebx, edi
mov eax, ebx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a26f
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x44a287
mov ecx, ebx
inc ecx
inc edx
mov eax, ecx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a285
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x44a273
mov eax, dword [esi + 0xc]
lea ecx, [edx + ebx]
xor ebx, ebx
mov dword [ebp + 8], ecx
test eax, eax
jle 0x44a506
nop word [eax + eax]
xor edi, edi
cmp dword [esi + 8], edi
jle 0x44a30a
mov eax, dword [esi + 0xc]
sub eax, ebx
dec eax
imul eax, ecx
push 0xff
add eax, dword [ebp - 4]
movzx ecx, word [eax + edi*2]
mov al, cl
shl al, 3
movzx eax, al
push eax
mov eax, ecx
shr cx, 0xa
shr eax, 5
shl al, 3
movzx eax, al
shl cl, 3
push eax
movzx eax, cl
lea ecx, [ebp - 0x14]
push eax
call fcn.00449610
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0xc]
push eax
call fcn.00449a80
mov ecx, dword [esi + 8]
mov edx, dword [ebp - 8]
imul ecx, ebx
mov eax, dword [eax]
add ecx, edi
inc edi
mov dword [edx + ecx*4], eax
mov ecx, dword [ebp + 8]
cmp edi, dword [esi + 8]
jl 0x44a2a7
inc ebx
cmp ebx, dword [esi + 0xc]
jl 0x44a2a0
jmp 0x44a506
cmp edi, 3
jne 0x44a3d5
mov ebx, dword [esi + 8]
xor edx, edx
imul ebx, edi
mov eax, ebx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a336
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x44a357
mov ecx, ebx
nop word [eax + eax]
inc ecx
inc edx
mov eax, ecx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a352
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x44a340
mov ecx, dword [esi + 0xc]
add edx, ebx
xor ebx, ebx
mov dword [ebp - 0xc], edx
test ecx, ecx
jle 0x44a506
xor edi, edi
cmp dword [esi + 8], edi
jle 0x44a3ca
xor eax, eax
mov dword [ebp + 8], eax
mov ecx, dword [esi + 0xc]
sub ecx, ebx
dec ecx
imul ecx, edx
push 0xff
add ecx, eax
add ecx, dword [ebp - 4]
movzx eax, byte [ecx]
push eax
movzx eax, byte [ecx + 1]
push eax
movzx eax, byte [ecx + 2]
lea ecx, [ebp - 0x14]
push eax
call fcn.00449610
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x18]
push eax
call fcn.00449a80
mov ecx, dword [esi + 8]
mov edx, dword [ebp - 8]
imul ecx, ebx
mov eax, dword [eax]
add ecx, edi
inc edi
mov dword [edx + ecx*4], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0xc]
add eax, 3
mov dword [ebp + 8], eax
cmp edi, dword [esi + 8]
jl 0x44a372
inc ebx
cmp ebx, dword [esi + 0xc]
jl 0x44a366
jmp 0x44a506
cmp edi, 4
jne 0x44a523
mov ebx, dword [esi + 8]
xor edx, edx
imul ebx, edi
mov eax, ebx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a3f6
dec eax
or eax, 0xfffffffc
add eax, 1
je 0x44a414
mov ecx, ebx
nop word [eax + eax]
inc ecx
inc edx
mov eax, ecx
and eax, reloc.WSOCK32.dll_closesocket
jns 0x44a412
dec eax
or eax, 0xfffffffc
add eax, 1
jne 0x44a400
cmp dword [ebp - 0x30], 3
lea ecx, [edx + ebx]
mov dword [ebp - 0xc], ecx
jne 0x44a49f
mov eax, dword [ebp + 8]
cmp dword [eax + 0x36], 0xff000000
jne 0x44a49f
mov eax, dword [esi + 0xc]
xor ebx, ebx
test eax, eax
jle 0x44a506
nop dword [eax]
xor edi, edi
cmp dword [esi + 8], edi
jle 0x44a497
mov eax, dword [esi + 0xc]
sub eax, ebx
dec eax
imul eax, ecx
add eax, dword [ebp - 4]
lea ecx, [eax + edi*4]
movzx eax, byte [ecx]
push eax
movzx eax, byte [ecx + 1]
push eax
movzx eax, byte [ecx + 2]
push eax
movzx eax, byte [ecx + 3]
lea ecx, [ebp + 8]
push eax
call fcn.00449610
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x18]
push eax
call fcn.00449a80
mov ecx, dword [esi + 8]
mov edx, dword [ebp - 8]
imul ecx, ebx
mov eax, dword [eax]
add ecx, edi
inc edi
mov dword [edx + ecx*4], eax
mov ecx, dword [ebp - 0xc]
cmp edi, dword [esi + 8]
jl 0x44a447
inc ebx
cmp ebx, dword [esi + 0xc]
jl 0x44a440
jmp 0x44a506
mov eax, dword [esi + 0xc]
xor ebx, ebx
test eax, eax
jle 0x44a506
xor edi, edi
cmp dword [esi + 8], edi
jle 0x44a500
nop
mov eax, dword [esi + 0xc]
sub eax, ebx
dec eax
imul eax, ecx
add eax, dword [ebp - 4]
lea ecx, [eax + edi*4]
movzx eax, byte [ecx + 3]
push eax
movzx eax, byte [ecx]
push eax
movzx eax, byte [ecx + 1]
push eax
movzx eax, byte [ecx + 2]
lea ecx, [ebp + 8]
push eax
call fcn.00449610
mov ecx, esi
push dword [eax]
lea eax, [ebp - 0x18]
push eax
call fcn.00449a80
mov ecx, dword [esi + 8]
mov edx, dword [ebp - 8]
imul ecx, ebx
mov eax, dword [eax]
add ecx, edi
inc edi
mov dword [edx + ecx*4], eax
mov ecx, dword [ebp - 0xc]
cmp edi, dword [esi + 8]
jl 0x44a4b0
inc ebx
cmp ebx, dword [esi + 0xc]
jl 0x44a4a8
mov ecx, esi
call fcn.004499d0
test al, al
je 0x44a523
mov ecx, esi
call fcn.00449ad0
test al, al
jne 0x44a523
mov ecx, esi
call fcn.0044aee0
cmp dword [esi + 0x14], 4
jne 0x44a548
mov ecx, esi
call fcn.004499d0
test al, al
je 0x44a548
mov ecx, esi
call fcn.00449ad0
test al, al
jne 0x44a548
push 1
mov ecx, esi
call fcn.0044b150
mov ecx, esi
call fcn.00406d90
test eax, eax
je 0x44a557
mov byte [esi + 0x20], 1
push dword [ebp - 0x10]
mov ecx, esi
call fcn.00449b50
pop edi
pop esi
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4
push ecx
push str.Dont_handle__d_bit_bmps_yet
call fcn.004073b0
add esp, 8
pop edi
pop esi
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 4