Function at 0x422930
Capabilities:
Encrypt data using rc4 prga

Disassembly:
sub esp, 0x14
fld dword [0x17c2de8]
push ebx
fmul qword [0x444b30]
push ebp
push esi
call fcn.0043d9b0
fld dword [edi + 0x2b4]
mov dword [esp + 0x18], eax
call fcn.0043d9b0
fld dword [edi + 0x2b0]
mov esi, eax
call fcn.0043d9b0
fld dword [edi + 0x2ac]
mov ebx, eax
call fcn.0043d9b0
mov ecx, ebx
shl ecx, 9
add ecx, eax
mov ecx, dword [ecx*4 + 0x4ffb40]
movzx edx, byte [ecx + 1]
cmp esi, edx
jle 0x4229a2
mov dl, byte [ecx]
test dl, dl
je 0x4229ed
movzx edx, dl
lea ecx, [ecx + edx*4]
movzx edx, byte [ecx + 3]
cmp esi, edx
jl 0x4229ed
movzx edx, byte [ecx + 1]
cmp esi, edx
jg 0x422986
movzx ecx, byte [ecx + 1]
push eax
mov eax, ebx
call fcn.0041bc00
movzx eax, byte [eax + 3]
mov ecx, eax
shl ecx, 8
or ecx, eax
shl ecx, 8
or ecx, eax
mov dword [0x6904e8], ecx
mov edx, dword [edi + 0x2c4]
fld dword [edi + 0x2c8]
add esp, 4
xor edx, dword [edi + 0x2e0]
mov dword [esp + 0x1c], eax
js 0x4229f1
fchs
fstp dword [esp + 0xc]
fld dword [edi + 0x2c4]
jmp 0x4229fd
mov ecx, esi
jmp 0x4229a6
fstp dword [esp + 0xc]
fld dword [edi + 0x2c4]
fchs
cmp dword [edi + 0x318], 0
fstp dword [esp + 0x10]
je 0x423315
fld dword [edi + 0x2ac]
fstp dword [edi + 0x1f8]
fld dword [edi + 0x2b0]
fstp dword [edi + 0x1fc]
fld dword [edi + 0x2b4]
fld qword [0x444b28]
fadd st(1), st(0)
fxch st(1)
fstp dword [edi + 0x200]
mov eax, dword [edi + 0x1f8]
fld dword [edi + 0x2c4]
mov ecx, dword [edi + 0x1fc]
fld qword [0x444a10]
mov edx, dword [edi + 0x200]
fmul st(1), st(0)
mov dword [edi + 0xa8], eax
fld dword [edi + 0x2ac]
mov dword [edi + 0xfc], eax
mov dword [edi], eax
fsub st(2)
mov dword [edi + 0xac], ecx
mov dword [edi + 0x100], ecx
mov dword [edi + 4], ecx
fstp dword [esp + 0x14]
mov ecx, dword [edi + 0x304]
fld dword [esp + 0x14]
mov dword [edi + 0xb0], edx
fst dword [edi + 0x150]
mov dword [edi + 0x104], edx
fld dword [edi + 0x2ac]
mov dword [edi + 8], edx
faddp st(3)
fxch st(2)
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x1a4]
fld dword [edi + 0x2c8]
fmulp st(2)
fld dword [edi + 0x2b0]
fsub st(2)
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x154]
fld dword [edi + 0x2b0]
faddp st(3)
fxch st(2)
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x1a8]
fld dword [esp + 0xc]
fld dword [esp + 0x10]
test ecx, ecx
je 0x422b77
fstp st(0)
fld dword [edi + 0x2b4]
fadd qword [0x444b20]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x104]
fstp dword [edi + 8]
fld st(0)
fmul st(6)
fsub st(5), st(0)
fxch st(5)
fstp dword [edi + 0x150]
fxch st(2)
fsubrp st(4)
fxch st(3)
fstp dword [edi + 0x1a4]
fld dword [esp + 0x10]
fld st(0)
fmul st(5)
fsub st(3), st(0)
fxch st(3)
fstp dword [edi + 0x154]
fxch st(3)
fsubrp st(2)
fxch st(1)
fstp dword [edi + 0x1a8]
fld dword [edi + 0x2b4]
fadd qword [0x444b18]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x1ac]
fstp dword [edi + 0x158]
jmp 0x422bbe
fstp st(4)
fstp st(4)
fstp st(1)
fstp st(0)
fld dword [edi + 0x2b4]
fadd qword [0x4449a0]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x104]
fstp dword [edi + 8]
fld dword [edi + 0x2b4]
fadd qword [0x444b10]
fstp dword [esp + 0x14]
fld dword [esp + 0x14]
fst dword [edi + 0x1ac]
fstp dword [edi + 0x158]
fxch st(1)
fld dword [edi + 0x2c4]
lea esi, [edi + 0x15c]
fld qword [0x444b08]
fmul st(1), st(0)
fxch st(1)
fstp dword [edi + 0x204]
fmul dword [edi + 0x2c8]
fstp dword [edi + 0x208]
mov eax, dword [edi + 0x204]
mov edx, dword [edi + 0x208]
fld st(0)
mov dword [edi + 0xb4], eax
fld qword [0x444b00]
mov eax, dword [edi + 0x20c]
fmul st(1), st(0)
mov dword [edi + 0xb8], edx
mov edx, dword [edi + 0x204]
fxch st(1)
mov dword [edi + 0xbc], eax
mov eax, dword [edi + 0x208]
fstp dword [edi + 0xc0]
mov dword [edi + 0x108], edx
fld st(2)
mov edx, dword [edi + 0x20c]
fmul st(1)
mov dword [edi + 0x10c], eax
mov eax, dword [edi + 0x204]
fstp dword [edi + 0xc4]
mov dword [esi], eax
fld dword [edi + 0x2dc]
mov eax, dword [edi + 0x20c]
fmul st(1)
mov dword [edi + 0x110], edx
mov edx, dword [edi + 0x208]
mov dword [esi + 4], edx
mov edx, dword [edi + 0x204]
fstp dword [edi + 0x210]
fld dword [edi + 0x2e0]
mov dword [esi + 8], eax
mov eax, dword [edi + 0x208]
fmul st(1)
mov dword [edi + 0x1b0], edx
mov edx, dword [edi + 0x20c]
mov dword [edi + 0x1b4], eax
fstp dword [edi + 0x214]
mov eax, dword [edi + 0xc0]
fld dword [edi + 0x2e4]
mov dword [edi + 0x168], eax
fmul st(1)
mov eax, dword [edi + 0xc8]
mov dword [edi + 0x1b8], edx
mov edx, dword [edi + 0xc4]
fstp dword [edi + 0x218]
fld dword [edi + 0x2d0]
mov dword [edi + 0x16c], edx
mov edx, dword [edi + 0xc0]
fmul st(1)
mov dword [edi + 0x170], eax
mov eax, dword [edi + 0xc4]
mov dword [edi + 0x1bc], edx
mov edx, dword [edi + 0xc8]
mov dword [edi + 0x1c0], eax
mov eax, dword [edi + 0x210]
mov dword [edi + 0x114], eax
mov eax, dword [edi + 0x218]
mov dword [edi + 0x1c4], edx
mov edx, dword [edi + 0x214]
mov dword [edi + 0x118], edx
mov edx, dword [edi + 0xcc]
mov dword [edi + 0x11c], eax
mov eax, dword [edi + 0xd0]
mov dword [edi + 0x174], edx
mov edx, dword [edi + 0xd4]
mov dword [edi + 0x178], eax
mov eax, dword [edi + 0xcc]
mov dword [edi + 0x1c8], eax
mov eax, dword [edi + 0xd4]
mov dword [edi + 0x17c], edx
mov edx, dword [edi + 0xd0]
mov dword [edi + 0x1cc], edx
mov dword [edi + 0x1d0], eax
cmp dword [0x17c3118], 0
fstp dword [edi + 0x21c]
fld dword [edi + 0x2d4]
fmul st(1)
fstp dword [edi + 0x220]
fmul dword [edi + 0x2d8]
fstp dword [edi + 0x224]
mov edx, dword [edi + 0x21c]
mov eax, dword [edi + 0x220]
mov dword [edi + 0x120], edx
mov edx, dword [edi + 0x224]
mov dword [edi + 0x124], eax
mov dword [edi + 0x128], edx
jne 0x422e9c
xor eax, eax
cmp dword [edi + 0x2e8], eax
sete al
imul eax, eax, 0x34
mov edx, dword [eax + 0x17c2e24]
cmp edx, dword [edi + 0x37c]
jne 0x422e9c
fld dword [edi + 0x2ac]
lea eax, [edi + 0x24c]
fxch st(1)
fmul st(3)
fsubp st(1)
fstp dword [eax]
fmulp st(1)
fsubr dword [edi + 0x2b0]
fstp dword [edi + 0x250]
fld dword [edi + 0x2b4]
test ecx, ecx
je 0x422e13
fadd qword [0x4449a0]
jmp 0x422e19
fadd qword [0x444990]
mov ecx, dword [edi + 0x204]
fstp dword [edi + 0x254]
mov edx, dword [edi + 0x208]
mov dword [edi + 0x258], ecx
mov ecx, dword [edi + 0x20c]
mov dword [edi + 0x25c], edx
mov edx, dword [edi + 0xc0]
mov dword [edi + 0x264], edx
mov edx, dword [edi + 0xc8]
mov dword [edi + 0x260], ecx
mov ecx, dword [edi + 0xc4]
mov dword [edi + 0x268], ecx
mov ecx, dword [edi + 0xcc]
mov dword [edi + 0x26c], edx
mov edx, dword [edi + 0xd0]
mov dword [edi + 0x270], ecx
mov ecx, dword [edi + 0xd4]
mov dword [edi + 0x274], edx
mov edx, dword [esp + 0x24]
push 0
push edx
mov dword [edi + 0x278], ecx
call fcn.004204f0
add esp, 8
jmp 0x422ea2
fstp st(2)
fstp st(1)
fstp st(0)
fld dword [0x444afc]
fcom dword [edi + 0x2b8]
fnstsw ax
fldz
test ah, 5
jnp 0x422ef0
fld dword [0x444af8]
fcom dword [edi + 0x2b8]
fnstsw ax
test ah, 0x41
je 0x422eee
fxch st(2)
fcomp dword [edi + 0x2bc]
fnstsw ax
test ah, 5
jnp 0x422ef0
fxch st(1)
fcomp dword [edi + 0x2bc]
fnstsw ax
test ah, 0x41
jne 0x423001
jmp 0x422ef2
fstp st(2)
fstp st(1)
mov eax, dword [esp + 0x18]
mov ecx, eax
and ecx, 0x1ff
cmp dword [edi + 0x304], 0
mov dword [esp + 0x18], ecx
fild dword [esp + 0x18]
fsub qword [0x444af0]
fstp dword [esp + 0x10]
fld dword [edi + 0x2e0]
fmul dword [edi + 0x2bc]
fld dword [edi + 0x2b8]
fmul dword [edi + 0x2dc]
faddp st(1)
jne 0x422f3b
fld qword [0x444ae8]
jmp 0x422f41
fld qword [0x444ae0]
fmul st(1), st(0)
and eax, 0x3ff
fld dword [esp + 0x10]
sub esp, 0xc
fld st(0)
lea ecx, [edi + 0x174]
fmulp st(3)
lea edx, [edi + 0x168]
fxch st(2)
fstp dword [esp + 0x18]
fld dword [edi + 0x2c8]
fmul dword [edi + 0x2bc]
fld dword [edi + 0x2b8]
fmul dword [edi + 0x2c4]
faddp st(1)
fmulp st(1)
fmulp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
cmp eax, 0x1ff
jle 0x422fb8
fchs
fstp dword [esp + 8]
fld dword [esp + 0x18]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.004226c0
fld dword [esp + 0x1c]
fstp dword [esp + 8]
fld dword [esp + 0x18]
fchs
jmp 0x422fdc
fstp dword [esp + 8]
fld dword [esp + 0x18]
fchs
fstp dword [esp + 4]
fstp dword [esp]
call fcn.004226c0
fld dword [esp + 0x1c]
fchs
fstp dword [esp + 8]
fld dword [esp + 0x18]
fstp dword [esp + 4]
lea ecx, [edi + 0x1c8]
fldz
lea edx, [edi + 0x1bc]
lea esi, [edi + 0x1b0]
fstp dword [esp]
call fcn.004226c0
fldz
add esp, 0xc
mov ecx, dword [edi + 0x310]
test ecx, ecx
jne 0x423013
cmp dword [edi + 0x388], ecx
jne 0x42301c
cmp ecx, 3
je 0x42301c
xor eax, eax
jmp 0x423021
mov eax, 1
fld dword [0x17c2de8]
fsub dword [edi + eax*4 + 0x340]
fstp dword [esp + 0xc]
fld dword [esp + 0xc]
fcom st(1)
fnstsw ax
test ah, 5
jp case.default.0x42304c
cmp ecx, 3
ja case.default.0x42304c
jmp dword [ecx*4 + 0x42337c]
sub esp, 0xc
fxch st(1)
cmp dword [edi + 0x388], 0
fst dword [esp + 8]
lea ecx, [edi + 0x120]
fxch st(1)
lea edx, [edi + 0x114]
lea esi, [edi + 0x108]
je 0x42309d
fchs
fsub qword [0x444990]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.004226c0
add esp, 0xc
jmp 0x42312a
fmul qword [0x444a30]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fstp dword [esp + 4]
fstp dword [esp]
call fcn.004226c0
add esp, 0xc
jmp 0x42312a
fxch st(1)
sub esp, 0xc
fst dword [esp + 8]
fxch st(1)
fstp dword [esp + 4]
lea ecx, [edi + 0x120]
lea edx, [edi + 0x114]
lea esi, [edi + 0x108]
fstp dword [esp]
call fcn.004226c0
add esp, 0xc
jmp 0x42312a
fxch st(1)
sub esp, 0xc
fst dword [esp + 8]
fxch st(1)
fmul qword [0x444ad8]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
jmp 0x4230c7
fxch st(1)
sub esp, 0xc
fst dword [esp + 8]
fxch st(1)
fadd qword [0x444ad0]
fmul qword [0x4449a0]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
jmp 0x4230c7
fstp st(1)
fstp st(0)
mov edx, dword [edi + 0x108]
mov eax, dword [edi + 0x10c]
mov ecx, dword [edi + 0x110]
mov dword [edi + 0xc], edx
mov edx, dword [edi + 0x114]
mov dword [edi + 0x10], eax
mov eax, dword [edi + 0x118]
mov dword [edi + 0x14], ecx
fld dword [edi + 0xc]
fld qword [0x444ac8]
mov ecx, dword [edi + 0x11c]
fmul st(1), st(0)
mov dword [edi + 0x18], edx
mov edx, dword [edi + 0x120]
fxch st(1)
mov dword [edi + 0x1c], eax
fstp dword [edi + 0xc]
mov eax, dword [edi + 0x124]
fld dword [edi + 0x10]
mov dword [edi + 0x20], ecx
fmul st(1)
mov ecx, dword [edi + 0x128]
mov esi, dword [esp + 0x24]
mov dword [edi + 0x24], edx
fstp dword [edi + 0x10]
mov dword [edi + 0x28], eax
fld dword [edi + 0x14]
mov dword [edi + 0x2c], ecx
fmul st(1)
push 0
push esi
lea eax, [edi + 0x1f8]
fstp dword [edi + 0x14]
fld dword [edi + 0x18]
fmul st(1)
fstp dword [edi + 0x18]
fld dword [edi + 0x1c]
fmul st(1)
fstp dword [edi + 0x1c]
fld dword [edi + 0x20]
fmul st(1)
fstp dword [edi + 0x20]
fld dword [edi + 0x24]
fmul st(1)
fstp dword [edi + 0x24]
fld dword [edi + 0x28]
fmul st(1)
fstp dword [edi + 0x28]
fmul dword [edi + 0x2c]
fstp dword [edi + 0x2c]
call fcn.004204f0
push 0
push esi
lea eax, [edi + 0xa8]
call fcn.004204f0
push 0
push esi
lea eax, [edi + 0xfc]
call fcn.004204f0
push 0
push esi
lea eax, [edi + 0x150]
call fcn.004204f0
push 0
push esi
lea eax, [edi + 0x1a4]
call fcn.004204f0
add esp, 0x28
cmp dword [edi + 0x310], 1
jne 0x423301
fild dword [esp + 0x1c]
movzx edx, byte [edi + 0x314]
mov dword [esp + 0x1c], edx
push 0
fdiv qword [0x444ac0]
push esi
fstp dword [esp + 0x14]
fild dword [esp + 0x24]
fld dword [esp + 0x14]
fnstcw word [esp + 0x14]
fld st(0)
movzx eax, word [esp + 0x14]
fmulp st(2)
or eax, 0xc00
fxch st(1)
mov dword [esp + 0x24], eax
fldcw word [esp + 0x24]
fistp dword [esp + 0x24]
mov al, byte [esp + 0x24]
mov byte [0x6904e8], al
movzx ecx, byte [edi + 0x315]
fldcw word [esp + 0x14]
mov dword [esp + 0x24], ecx
fild dword [esp + 0x24]
fnstcw word [esp + 0x14]
fmul st(1)
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x24], eax
fldcw word [esp + 0x24]
fistp dword [esp + 0x24]
mov dl, byte [esp + 0x24]
mov byte [0x6904e9], dl
movzx eax, byte [edi + 0x316]
fldcw word [esp + 0x14]
mov dword [esp + 0x24], eax
fild dword [esp + 0x24]
fnstcw word [esp + 0x14]
fmulp st(1)
movzx eax, word [esp + 0x14]
or eax, 0xc00
mov dword [esp + 0x24], eax
mov eax, edi
fldcw word [esp + 0x24]
fistp dword [esp + 0x24]
mov cl, byte [esp + 0x24]
mov byte [0x6904ea], cl
fldcw word [esp + 0x14]
call fcn.004204f0
mov dword [0x6904e8], 0x7f7f7f
add esp, 8
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
push 0
push esi
mov eax, edi
call fcn.004204f0
add esp, 8
pop esi
pop ebp
pop ebx
add esp, 0x14
ret
fld dword [edi + 0x2c4]
mov edx, dword [edi + 0x2ac]
fld qword [0x444b08]
mov ecx, dword [edi + 0x2b0]
fmul st(1), st(0)
lea eax, [edi + 0x54]
fxch st(1)
mov dword [eax], edx
mov edx, dword [edi + 0x2b4]
fstp dword [edi + 0x60]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x24]
fmul dword [edi + 0x2c8]
push 0
push ecx
mov dword [eax + 8], edx
fstp dword [edi + 0x64]
fld dword [esp + 0x14]
fld qword [0x444b00]
fmul st(1), st(0)
fxch st(1)
fstp dword [edi + 0x6c]
fmul dword [esp + 0x18]
fstp dword [edi + 0x70]
call fcn.004204f0
add esp, 8
pop esi
pop ebp
pop ebx
add esp, 0x14
ret