Function at 0x409b00
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x47c
push ebx
push esi
push edi
mov ecx, 0xb0
xor eax, eax
lea edi, [ebp - 0x47b]
mov byte [ebp - 0x47c], 0
rep stosd dword es:[edi], eax
fld qword [0x882578]
fld qword [0x882578]
stosw word es:[edi], ax
stosb byte es:[edi], al
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x889620]
fsub st(1)
fxch st(1)
fmul qword [0x889618]
fadd qword [0x889610]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x889608]
fnstsw ax
test ah, 0x41
jne 0x409b6a
fld st(0)
fmul qword [0x889600]
fsubp st(2)
fadd qword [0x8895f8]
fcom qword [0x8895f0]
fnstsw ax
test ah, 1
jne 0x409b31
fxch st(1)
fst qword [ebp - 0x44]
fxch st(1)
fstp st(0)
fcomp qword [0x882578]
fnstsw ax
test ah, 1
je 0x409bc5
jb 0x409bcb
insd dword es:[edi], dx
pop edx
inc ebp
dec ebx
pushal
and eax, 0x36666156
dec ecx
xor dword [si + 0x32], edi
insd dword es:[edi], dx
and al, 0x6d
xor eax, 0x80192a76
push ss
xchg dword [ebx], edx
mov word [esi], ss
xchg dword [ebx], edx
invalid
mov dword [ebp - 0x18], 0x409baa
mov dword [ebp - 0x34], 0x409b93
xor eax, eax
add bh, al
inc ebp
int3
mov byte [ebp + eax - 0x15c], al
inc eax
cmp eax, 0x100
jb 0x409bd5
fld qword [ebp - 0x44]
mov byte [ebp - 4], 0
mov eax, 0xff
mov esi, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 0xc], eax
jmp 0x409bfd
mov eax, dword [ebp - 0xc]
mov ebx, 1
mov dword [ebp - 0x2c], 0
cmp eax, ebx
jbe 0x409c15
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x409c0d
cmp edi, 3
ja case.default.0x409c1a
jmp dword [edi*4 + 0x40ab40]
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
jmp 0x409c96
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 8
jmp 0x409c96
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x10
jmp 0x409c96
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x18
jmp 0x409c96
mov eax, dword [ebp - 0x34]
and esi, 0xff
mov cl, byte [eax + edi - 4]
mov al, byte [ebp + esi - 0x15c]
add cl, al
inc edi
cmp edi, 0x1b
mov byte [ebp - 4], cl
jb 0x409ca9
xor edi, edi
add cl, 0x1b
mov byte [ebp - 4], cl
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0x2c]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0x2c], eax
jbe 0x409cc9
mov eax, edx
xor edx, edx
div dword [ebp - 0xc]
mov eax, dword [ebp - 0xc]
cmp edx, eax
ja 0x409c15
mov ecx, eax
cmp ecx, edx
je 0x409d12
mov al, byte [ebp + edx - 0x15c]
mov bl, byte [ebp + ecx - 0x15c]
lea edx, [ebp + edx - 0x15c]
xor bl, al
mov byte [ebp + ecx - 0x15c], bl
mov al, bl
mov bl, byte [edx]
xor bl, al
mov byte [edx], bl
mov al, byte [ebp + ecx - 0x15c]
mov dl, bl
xor al, dl
mov byte [ebp + ecx - 0x15c], al
dec ecx
mov dword [ebp - 0xc], ecx
jne 0x409bfa
mov cl, byte [ebp - 0x157]
mov dl, byte [ebp - 0x155]
and esi, 0xff
mov byte [ebp - 0x20], cl
mov ecx, dword [ebp - 0x18]
mov byte [ebp - 0x24], dl
mov al, byte [ebp + esi - 0x15c]
mov bl, byte [ebp - 0x159]
mov byte [ebp - 0x28], al
mov al, byte [ecx]
mov cl, byte [ecx + 1]
mov edx, dword [ebp - 0x28]
add al, 2
add cl, 0x80
shl al, 4
or al, cl
and edx, 0xff
mov byte [ebp - 0x39], al
xor edi, edi
mov cl, byte [ebp + edx - 0x15c]
lea eax, [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x15b]
mov byte [ebp - 0x1c], cl
mov ecx, edx
and ecx, 0xff
fstp st(0)
mov cl, byte [ebp + ecx - 0x15c]
add cl, bl
inc dl
mov byte [ebp - 0x30], cl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x14], esi
mov dl, byte [esi]
mov byte [eax], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 4]
and esi, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x1c]
mov bl, byte [ebp - 0x20]
mov byte [esi], dl
mov edx, dword [ebp - 0x1c]
mov al, byte [eax]
and edx, 0xff
mov dword [ebp - 0x10], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x20], bl
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov ebx, dword [ebp - 0x10]
add edx, eax
xor eax, eax
and edx, 0xff
mov al, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x14]
mov dl, byte [edx]
add edx, ebx
mov bl, byte [ebp + eax - 0x15c]
and edx, 0xff
mov al, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x18]
xor bl, al
mov al, byte [ebp - 0x39]
xor bl, al
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], bl
lea eax, [ebp - 0x5c]
mov dword [ebp - 0x34], 5
sub eax, 2
jmp 0x409e6c
mov edx, dword [ebp - 0x40]
add edx, 2
add eax, 2
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x40], edx
mov al, byte [edx + 1]
mov dl, byte [edx]
add dl, 2
add al, 0x80
shl dl, 4
or al, dl
mov edx, dword [ebp - 0x28]
inc edi
and edx, 0xff
mov dword [ebp - 0xc], edi
mov bl, byte [ebp - 4]
lea edi, [ebp + edx - 0x15c]
mov byte [ebp - 0x28], al
mov dl, byte [edi]
mov byte [ebp - 0x1c], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 0x30], cl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov byte [ebp - 4], bl
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x14], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 4]
and esi, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x1c]
mov bl, byte [ebp - 0x20]
mov byte [esi], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
mov dword [ebp - 0x10], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x20], bl
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x14]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x10]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
mov edi, dword [ebp - 0xc]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
xor dl, al
test edi, edi
mov byte [ebp - 0x24], dl
jbe 0x409f80
mov eax, dword [ebp - 0x2c]
movsx dx, dl
mov word [eax], dx
jmp 0x409f83
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x34]
dec edx
mov dword [ebp - 0x34], edx
jne 0x409e69
lea ebx, [edi + 1]
cmp ebx, 0xc
jge 0x40a0eb
mov eax, dword [ebp - 4]
and eax, 0xff
lea edx, [ebp + eax - 0x15c]
mov eax, dword [ebp - 0x18]
lea esi, [eax + edi*2]
lea eax, [ebp + edi*2 - 0x5e]
mov dword [ebp - 0xc], eax
mov eax, 0xc
sub eax, ebx
mov dword [ebp - 0x2c], eax
jmp 0x409fca
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 0xc]
mov bl, byte [esi + 2]
add esi, 2
add eax, 2
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x40], esi
mov al, byte [esi + 1]
mov esi, dword [ebp - 0x28]
and esi, 0xff
add bl, 2
add al, 0x80
inc edi
shl bl, 4
lea esi, [ebp + esi - 0x15c]
or al, bl
mov byte [ebp - 0x28], al
mov bl, byte [esi]
mov byte [ebp - 0x1c], bl
mov bl, byte [edx]
mov dl, byte [ebp - 4]
add cl, bl
inc dl
mov byte [ebp - 0x30], cl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov ebx, dword [ebp - 0x24]
and ebx, 0xff
mov dword [ebp - 0x14], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 8], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 4]
mov ebx, dword [ebp - 8]
and edx, 0xff
lea edx, [ebp + edx - 0x15c]
mov dword [ebp - 0x34], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x34]
mov dl, byte [ebp - 0x1c]
mov byte [ebx], dl
mov edx, dword [ebp - 0x1c]
mov bl, byte [ebp - 0x20]
and edx, 0xff
mov dword [ebp - 0x10], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x20], bl
mov ebx, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x14]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x10]
add ebx, edx
mov dl, byte [ebp + esi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
xor dl, al
test edi, edi
mov byte [ebp - 0x24], dl
jbe 0x40a0de
movsx ax, dl
mov edx, dword [ebp - 0xc]
mov word [edx], ax
mov eax, dword [ebp - 0x2c]
dec eax
mov dword [ebp - 0x2c], eax
jne 0x409fc4
mov word [ebp - 0x48], 0
fld qword [0x882578]
fld qword [0x882578]
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x8895e8]
fsub st(1)
fxch st(1)
fmul qword [0x8895e0]
fadd qword [0x8895d8]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x8895d0]
fnstsw ax
test ah, 0x41
jne 0x40a136
fld st(0)
fmul qword [0x8895c8]
fsubp st(2)
fadd qword [0x8895f8]
fcom qword [0x8895c0]
fnstsw ax
test ah, 1
jne 0x40a0fd
fxch st(1)
fst qword [ebp - 0x38]
fxch st(1)
fstp st(0)
fcomp qword [0x882578]
fnstsw ax
test ah, 1
je 0x40a1da
cdq
movsd dword es:[edi], dword [esi]
mov byte [0x97a897ae], al
stosb byte es:[edi], al
cdq
lodsd eax, dword [esi]
mov byte [0x94a599b0], al
mov bl, 0x93
movsd dword es:[edi], dword [esi]
lcall 0xa0a7, 0x9daa9bad
cmpsb byte [esi], byte es:[edi]
cdq
mov bl, 0x9d
cmpsd dword [esi], dword es:[edi]
wait
stosd dword es:[edi], eax
cwde
mov al, 0x98
stosd dword es:[edi], eax
sahf
scasd eax, dword es:[edi]
xchg ebx, eax
test eax, 0xae9eb495
mov al, byte [0x94a898ae]
test eax, 0xac9caba2
xchg ebx, eax
mov al, 0x9b
test al, 0x9e
stosd dword es:[edi], eax
xchg edi, eax
stosb byte es:[edi], al
cwde
scasd eax, dword es:[edi]
lahf
stosb byte es:[edi], al
lcall 0xa0ab, 0x93b19caf
mov al, 0xa2
stosd dword es:[edi], eax
wait
scasd eax, dword es:[edi]
cwde
scasb al, byte es:[edi]
lcall 0x99a6, 0x95ac9ab3
test eax, 0x6b76ac96
and eax, dword [ecx + 0x6e]
jno 0x40a1e3
push eax
jae 0x40a20b
jb 0x40a1f7
inc edi
pop eax
jne 0x40a23e
xor eax, 0x6e712728
pop ecx
insd dword es:[edi], dx
dec eax
jno 0x40a208
jmp 0x40aa7f
mov dword [ebp - 0x30], 0x40a15f
mov dword [ebp - 0x40], 0x40a1b9
xor eax, eax
sar byte [ecx + 0x330040a1], 0xc0
mov byte [ebp + eax - 0x15c], al
inc eax
cmp eax, 0x100
jb 0x40a1ea
fld qword [ebp - 0x38]
mov byte [ebp - 4], 0
mov eax, 0xff
mov esi, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 8], eax
inc ebp
clc
jmp 0x40a212
mov eax, dword [ebp - 8]
mov ebx, 1
mov dword [ebp - 0x34], 0
cmp eax, ebx
jbe 0x40a22a
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40a222
cmp edi, 3
ja case.default.0x40a22f
jmp dword [edi*4 + 0x40ab50]
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
jmp 0x40a2ab
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 8
jmp 0x40a2ab
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x10
jmp 0x40a2ab
fld st(0)
and esi, 0xff
call fcn.0082fed4
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x18
jmp 0x40a2ab
mov eax, dword [ebp - 0x40]
and esi, 0xff
mov cl, byte [eax + edi - 4]
mov al, byte [ebp + esi - 0x15c]
add cl, al
inc edi
cmp edi, 0x20
mov byte [ebp - 4], cl
jb 0x40a2be
xor edi, edi
add cl, 0x20
mov byte [ebp - 4], cl
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0x34]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0x34], eax
jbe 0x40a2de
mov eax, edx
xor edx, edx
div dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp edx, eax
ja 0x40a22a
mov ecx, eax
cmp ecx, edx
je 0x40a327
mov al, byte [ebp + edx - 0x15c]
mov bl, byte [ebp + ecx - 0x15c]
lea edx, [ebp + edx - 0x15c]
xor bl, al
mov byte [ebp + ecx - 0x15c], bl
mov al, bl
mov bl, byte [edx]
xor bl, al
mov byte [edx], bl
mov al, byte [ebp + ecx - 0x15c]
mov dl, bl
xor al, dl
mov byte [ebp + ecx - 0x15c], al
dec ecx
mov dword [ebp - 8], ecx
jne 0x40a20f
mov cl, byte [ebp - 0x157]
mov dl, byte [ebp - 0x155]
mov byte [ebp - 0x14], cl
mov ecx, dword [ebp - 0x30]
mov byte [ebp - 0x24], dl
and esi, 0xff
xor edx, edx
mov bl, byte [ebp - 0x159]
mov dl, byte [ecx + 1]
mov al, byte [ebp + esi - 0x15c]
mov esi, edx
xor edx, edx
mov dl, byte [ecx]
add esi, 0xffffff5b
mov ecx, edx
mov byte [ebp - 4], al
sub ecx, 0x93
xor eax, eax
shl ecx, 4
or ecx, esi
mov dword [ebp - 0x20], ecx
mov ecx, dword [ebp - 4]
and ecx, 0xff
fstp st(0)
mov dl, byte [ebp + ecx - 0x15c]
lea edi, [ebp + ecx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x15b]
mov ecx, edx
and ecx, 0xff
mov cl, byte [ebp + ecx - 0x15c]
add cl, bl
inc dl
mov byte [ebp - 0x28], cl
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x18]
and esi, 0xff
mov dword [ebp - 0xc], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov bl, byte [ebp - 0x14]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 0x1c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
mov edi, dword [ebp - 0x1c]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 8]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x15c]
add edx, edi
and edx, 0xff
xor bl, byte [ebp + edx - 0x15c]
mov dl, byte [ebp - 0x20]
xor bl, dl
mov edi, dword [ebp - 0x30]
mov byte [ebp - 4], dl
lea edx, [ebp - 0x1b8]
mov byte [ebp - 0x24], bl
sub edx, 2
mov dword [ebp - 0x2c], 0x14
jmp 0x40a491
mov edi, dword [ebp - 0x40]
add edx, 2
add edi, 2
mov dword [ebp - 0x34], edx
xor edx, edx
mov dl, byte [edi]
xor ebx, ebx
mov bl, byte [edi + 1]
sub edx, 0x93
shl edx, 4
add ebx, 0xffffff5b
mov dword [ebp - 0x40], edi
or edx, ebx
mov bl, byte [ebp - 0x18]
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 4]
and edx, 0xff
inc eax
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 0x28], cl
mov byte [ebp - 0x18], bl
mov edx, dword [ebp - 0x28]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x18]
and esi, 0xff
mov dword [ebp - 0xc], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov bl, byte [ebp - 0x14]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 0x1c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x1c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 0x20]
mov byte [ebp - 4], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x24], dl
jbe 0x40a5b5
movsx di, dl
mov edx, dword [ebp - 0x34]
mov word [edx], di
jmp 0x40a5b8
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x2c]
dec edi
mov dword [ebp - 0x2c], edi
jne 0x40a48e
mov edx, dword [ebp - 0x30]
inc eax
lea esi, [edx + eax*2]
xor edx, edx
mov dl, byte [esi]
mov edi, edx
xor edx, edx
mov dl, byte [esi + 1]
mov esi, edx
lea edx, [edi - 0x93]
shl edx, 4
add esi, 0xffffff5b
or edx, esi
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 4]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [ebp - 0x18]
mov byte [ebp - 0x28], cl
inc bl
mov edx, dword [ebp - 0x28]
mov byte [ebp - 0x18], bl
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x18]
and esi, 0xff
mov dword [ebp - 0xc], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov bl, byte [ebp - 0x14]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 0x1c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x1c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 0x20]
mov byte [ebp - 4], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x24], dl
jbe 0x40a6f5
movsx dx, dl
mov word [ebp + eax*2 - 0x1ba], dx
lea ebx, [eax + 1]
cmp ebx, 0x2c
jge 0x40a84f
mov edx, dword [ebp - 0x30]
lea edi, [ebp + eax*2 - 0x1ba]
mov dword [ebp - 0x2c], edi
mov edi, 0x2c
sub edi, ebx
lea edx, [edx + eax*2]
mov dword [ebp - 0x34], edi
jmp 0x40a720
mov edx, dword [ebp - 0x40]
mov edi, dword [ebp - 0x2c]
add edx, 2
xor ebx, ebx
add edi, 2
mov bl, byte [edx + 1]
mov dword [ebp - 0x2c], edi
mov edi, ebx
xor ebx, ebx
mov bl, byte [edx]
mov dword [ebp - 0x40], edx
mov edx, dword [ebp - 4]
sub ebx, 0x93
sub edi, 0xa5
and edx, 0xff
shl ebx, 4
or edi, ebx
mov bl, byte [ebp - 0x18]
mov dword [ebp - 0x20], edi
lea edi, [ebp + edx - 0x15c]
inc eax
mov dl, byte [edi]
mov byte [ebp - 0x10], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 0x28], cl
mov byte [ebp - 0x18], bl
mov edx, dword [ebp - 0x28]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x18]
and esi, 0xff
mov dword [ebp - 0xc], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov bl, byte [ebp - 0x14]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 0x1c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x1c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 0x20]
mov byte [ebp - 4], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x24], dl
jbe 0x40a842
mov edi, dword [ebp - 0x2c]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x34]
dec edx
mov dword [ebp - 0x34], edx
jne 0x40a71d
mov edi, dword [ebp - 0x30]
inc eax
xor edx, edx
mov dl, byte [edi + eax*2 + 1]
mov esi, edx
xor edx, edx
mov dl, byte [edi + eax*2]
sub esi, 0xa5
sub edx, 0x93
shl edx, 4
or esi, edx
mov edx, dword [ebp - 4]
and edx, 0xff
mov dword [ebp - 0x20], esi
lea esi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [ebp - 0x18]
mov byte [ebp - 0x28], cl
inc bl
mov edx, dword [ebp - 0x28]
mov byte [ebp - 0x18], bl
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [esi], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x18]
and ebx, 0xff
mov dword [ebp - 0xc], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 8], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov ebx, dword [ebp - 8]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
mov bl, byte [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 0x1c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0xc]
mov edx, dword [ebp - 0x14]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
mov esi, dword [ebp - 0x1c]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x15c]
mov edx, ebx
mov bl, byte [edi]
add ebx, esi
mov dl, byte [ebp + edx - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 0x20]
xor dl, bl
test eax, eax
mov byte [ebp - 0x24], dl
jbe 0x40a979
movsx dx, dl
mov word [ebp + eax*2 - 0x1ba], dx
mov esi, dword [ebp - 0x30]
inc eax
mov edi, dword [ebp - 8]
mov dl, byte [esi + eax*2 + 1]
mov bl, byte [esi + eax*2]
mov esi, dword [ebp - 0x20]
add bl, 0xd
and esi, 0xff
add dl, 0x5b
shl bl, 4
lea esi, [ebp + esi - 0x15c]
or dl, bl
mov bl, byte [esi]
mov byte [ebp - 0x10], bl
mov bl, byte [edi]
add cl, bl
mov bl, byte [ebp - 0x18]
mov byte [ebp - 0x28], cl
inc bl
mov ecx, dword [ebp - 0x28]
mov byte [ebp - 0x18], bl
and ecx, 0xff
lea edi, [ebp + ecx - 0x15c]
mov cl, byte [ebp + ecx - 0x15c]
mov byte [esi], cl
mov ecx, dword [ebp - 0x24]
and ecx, 0xff
mov bl, byte [ebp + ecx - 0x15c]
lea ecx, [ebp + ecx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x18]
and ebx, 0xff
mov dword [ebp - 0xc], ecx
test eax, eax
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 8], ebx
mov bl, byte [ebx]
mov byte [ecx], bl
mov ebx, dword [ebp - 8]
mov cl, byte [ebp - 0x10]
mov byte [ebx], cl
jbe 0x40aa76
mov ecx, dword [ebp - 0x10]
mov bl, byte [ebp - 0x14]
and ecx, 0xff
mov dword [ebp - 0x1c], ecx
mov cl, byte [ebp + ecx - 0x15c]
add cl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0xc]
and ecx, 0xff
mov cl, byte [ebp + ecx - 0x15c]
add ecx, ebx
mov bl, byte [esi]
mov esi, dword [ebp - 0x1c]
add ecx, ebx
and ecx, 0xff
xor ebx, ebx
mov bl, byte [ebp + ecx - 0x15c]
mov cl, byte [edi]
add ecx, esi
mov bl, byte [ebp + ebx - 0x15c]
and ecx, 0xff
xor bl, byte [ebp + ecx - 0x15c]
xor bl, dl
movsx dx, bl
mov word [ebp + eax*2 - 0x1ba], dx
mov word [ebp - 0x160], 0
push 0x8891c0
mov dword [ebp - 0x1bc], 1
call fcn.0082fc70
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x47c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x889214
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
call fcn.0082fc70
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x32c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [ebp - 0x47c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
lea eax, [ebp - 0x1b8]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebp - 0x5c]
push ecx
push 0
push 0
push edx
push 0x100
push eax
push reloc.WS2_32.dll_bind
call fcn.0040ab60
mov edx, dword [ebp - 0x1bc]
add esp, 0x24
xor eax, eax
test edx, edx
jle 0x40ab31
lea ecx, [ebp - 0x1dc]
cmp dword [ecx], 0
je 0x40ab2b
mov eax, 1
add ecx, 4
dec edx
jne 0x40ab21
neg eax
sbb eax, eax
pop edi
pop esi
and eax, 8
pop ebx
mov esp, ebp
pop ebp
ret