Function at 0x409e87
Capabilities:
Encrypt data using rc4 ksa
Encrypt data using speck

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 [0x89a578]
fld qword [0x89a578]
stosw word es:[edi], ax
stosb byte es:[edi], al
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x8a15d0]
fsub st(1)
fxch st(1)
fmul qword [0x8a15c8]
fadd qword [0x8a15c0]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x8a15b8]
fnstsw ax
test ah, 0x41
jne 0x409d8a
fld st(0)
fmul qword [0x8a15b0]
fsubp st(2)
fadd qword [0x8a1448]
fcom qword [0x8a15a8]
fnstsw ax
test ah, 1
jne 0x409d51
fxch st(1)
fst qword [ebp - 0x44]
fxch st(1)
fstp st(0)
fcomp qword [0x89a578]
fnstsw ax
test ah, 1
je 0x409de3
push edx
and eax, 0x7e6f4741
and dword [esi], esi
jl 0x409df9
jnp 0x409e04
push esi
cmp eax, 0x29447d4f
pop eax
sub dword [edi + 0x4d], edx
ret 0xc54b
mov dword [ebp - 0x30], 0x409dc8
mov dword [ebp - 0x38], 0x409db3
xor eax, eax
mov byte [ebp + eax - 0x15c], al
inc eax
cmp eax, 0x100
inc dword [eax + 0x3d]
add byte [ecx], al
add byte [eax], al
jb 0x409df3
fld qword [ebp - 0x44]
mov byte [ebp - 8], 0
mov esp, 0xf845c6
mov eax, 0xff
mov esi, dword [ebp - 8]
xor edi, edi
mov dword [ebp - 0x18], eax
jmp 0x409e1b
mov eax, dword [ebp - 0x18]
mov ebx, 1
mov dword [ebp - 0x1c], 0
cmp eax, ebx
jbe 0x409e33
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x409e2b
cmp edi, 3
ja case.default.0x409e38
jmp dword [edi*4 + 0x40b090]
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
jmp 0x409eb4
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 8
jmp 0x409eb4
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x10
jmp 0x409eb4
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x18
jmp 0x409eb4
mov eax, dword [ebp - 0x38]
and esi, 0xff
mov cl, byte [eax + edi - 4]
mov al, byte [ebp + esi - 0x15c]
add cl, al
inc edi
cmp edi, 0x19
mov byte [ebp - 8], cl
jb 0x409ec7
xor edi, edi
add cl, 0x19
mov byte [ebp - 8], cl
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0x1c]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0x1c], eax
jbe 0x409ee7
mov eax, edx
xor edx, edx
div dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
cmp edx, eax
ja 0x409e33
mov ecx, eax
cmp ecx, edx
je 0x409f30
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 - 0x18], ecx
jne 0x409e18
mov dl, byte [ebp - 0x155]
and esi, 0xff
mov byte [ebp - 0x24], dl
mov bl, byte [ebp - 0x159]
mov al, byte [ebp + esi - 0x15c]
mov esi, dword [ebp - 0x30]
mov byte [ebp - 0x20], al
xor eax, eax
mov al, byte [esi]
mov dl, byte [esi + 1]
add al, 0xf
add dl, 0x43
shl al, 4
or al, dl
mov cl, byte [ebp - 0x157]
mov byte [ebp - 1], al
mov eax, dword [ebp - 0x20]
and eax, 0xff
fstp st(0)
mov dl, byte [ebp + eax - 0x15c]
lea edi, [ebp + eax - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x15b]
mov eax, edx
and eax, 0xff
mov al, byte [ebp + eax - 0x15c]
add al, bl
inc dl
mov byte [ebp - 0x34], al
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x34]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x24]
and ebx, 0xff
mov dword [ebp - 0x28], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 0x14], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x14]
and edx, 0xff
lea edx, [ebp + edx - 0x15c]
mov dword [ebp - 0x1c], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x1c]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
mov edi, dword [ebp - 8]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x28]
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 - 1]
mov byte [ebp - 0x20], dl
xor bl, dl
mov byte [ebp - 0x24], bl
xor ebx, ebx
mov dl, byte [esi + 2]
mov bl, byte [esi + 3]
add dl, 0xf
sub ebx, 0xbd
shl dl, 4
or dl, bl
add esi, 4
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov dword [ebp - 0x18], 2
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x1c]
mov bl, byte [edx]
mov dl, byte [ebp - 0xc]
add al, bl
inc dl
mov byte [ebp - 0x34], al
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x34]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x24]
and ebx, 0xff
mov dword [ebp - 0x28], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 0x14], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x14]
and edx, 0xff
lea edx, [ebp + edx - 0x15c]
mov dword [ebp - 0x1c], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x1c]
mov dl, byte [ebp - 0x10]
mov byte [ebx], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x20], bl
xor dl, bl
xor ebx, ebx
mov byte [ebp - 0x24], dl
movsx dx, dl
mov word [ebp - 0x5c], dx
mov bl, byte [esi + 1]
xor edx, edx
mov dl, byte [esi]
sub edx, 0x41
shl edx, 4
sub ebx, 0xbd
or dl, bl
mov dword [ebp - 0x38], 3
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x1c]
mov bl, byte [edx]
add al, bl
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x34], al
inc bl
mov edx, dword [ebp - 0x34]
mov byte [ebp - 0xc], bl
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], 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 - 0xc]
and esi, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x20], bl
xor dl, bl
mov byte [ebp - 0x24], dl
movsx dx, dl
mov word [ebp - 0x5a], dx
mov edx, dword [ebp - 0x30]
lea edi, [edx + 4]
lea edx, [ebp - 0x5a]
mov dword [ebp - 0x1c], edx
jmp 0x40a2ac
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x18]
mov bl, byte [edi + 2]
inc edx
add edi, 2
mov dword [ebp - 0x18], edx
mov edx, dword [ebp - 0x1c]
add edx, 2
add bl, 0xf
mov dword [ebp - 0x1c], edx
mov dl, byte [edi + 1]
add dl, 0x43
mov dword [ebp - 0x40], edi
shl bl, 4
or dl, bl
mov bl, byte [ebp - 0xc]
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov dl, byte [esi]
add al, dl
inc bl
mov byte [ebp - 0x34], al
mov byte [ebp - 0xc], bl
mov edx, dword [ebp - 0x34]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], 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 - 0xc]
and esi, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
mov edi, dword [ebp - 0x18]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x20], bl
xor dl, bl
test edi, edi
mov byte [ebp - 0x24], dl
jbe 0x40a3ce
mov ebx, dword [ebp - 0x1c]
movsx dx, dl
mov word [ebx], dx
mov edx, dword [ebp - 0x38]
dec edx
mov dword [ebp - 0x38], edx
jne 0x40a2a9
mov edx, dword [ebp - 0x30]
inc edi
mov dword [ebp - 0x18], edi
mov bl, byte [edx + edi*2]
lea esi, [edx + edi*2]
add bl, 0xf
mov dword [ebp - 0x40], esi
mov dl, byte [esi + 1]
add dl, 0x43
shl bl, 4
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0xc]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
add al, bl
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x34], al
inc bl
mov edx, dword [ebp - 0x34]
mov byte [ebp - 0xc], bl
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], 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 - 0xc]
and esi, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x20], bl
xor dl, bl
mov ebx, dword [ebp - 0x18]
test ebx, ebx
mov byte [ebp - 0x24], dl
jbe 0x40a501
movsx dx, dl
mov word [ebp + ebx*2 - 0x5e], dx
lea edx, [ebx + 1]
cmp edx, 0xc
mov dword [ebp - 0x38], edx
jge 0x40a655
mov edi, dword [ebp - 0x40]
lea edx, [ebp + ebx*2 - 0x5e]
mov dword [ebp - 0x30], edx
mov edx, 0xc
sub edx, dword [ebp - 0x38]
mov dword [ebp - 0x38], edx
jmp 0x40a52a
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x30]
add edi, 2
add edx, 2
inc ebx
mov dword [ebp - 0x30], edx
mov dl, byte [edi]
mov dword [ebp - 0x18], ebx
mov bl, byte [edi + 1]
add dl, 0xf
add bl, 0x43
shl dl, 4
or dl, bl
mov dword [ebp - 0x40], edi
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp - 0xc]
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x10], dl
mov dl, byte [esi]
add al, dl
inc bl
mov byte [ebp - 0x34], al
mov byte [ebp - 0xc], bl
mov edx, dword [ebp - 0x34]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], 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 - 0xc]
and esi, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x10]
mov byte [esi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x15c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x20], bl
xor dl, bl
mov ebx, dword [ebp - 0x18]
test ebx, ebx
mov byte [ebp - 0x24], dl
jbe 0x40a648
mov edi, dword [ebp - 0x30]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x38]
dec edx
mov dword [ebp - 0x38], edx
jne 0x40a527
mov word [ebp - 0x48], 0
fld qword [0x89a578]
fld qword [0x89a578]
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x8a15a0]
fsub st(1)
fxch st(1)
fmul qword [0x8a1598]
fadd qword [0x8a1590]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x8a1588]
fnstsw ax
test ah, 0x41
jne 0x40a6a0
fld st(0)
fmul qword [0x8a1580]
adc byte [0xeade008a], 0xdc
add eax, 0x8a1578
fsubp st(2)
fadd qword [0x8a1578]
add ah, bl
fcom qword [0x8a1570]
adc eax, 0x8a1570
mov al, byte [eax]
fnstsw ax
test ah, 1
jne 0x40a667
fxch st(1)
leave
fst qword [ebp - 0x3c]
fxch st(1)
fstp st(0)
invalid
fcomp st(4)
sbb eax, 0x89a578
fcomp qword [0x89a578]
add bh, bl
loopne 0x40a6bb
fnstsw ax
test ah, 1
les eax, [ecx]
je 0x40a73f
jbe 0x40a748
jle 0x40a69a
iretd
or esp, 0xd482d87d
int3
jge 0x40a6a7
adc ah, 0x78
retf
js 0x40a69e
ja 0x40a6a7
jbe 0x40a6a7
ja 0x40a6a5
je 0x40a6aa
jnp 0x40a6b4
adc edi, 0xcc7fd47f
js 0x40a6b7
rol byte [ecx - 0x7e318230], cl
iretd
adc eax, 0xcf81ce7d
jge 0x40a6bc
js 0x40a6c2
ja 0x40a6c4
jp 0x40a6cc
ja 0x40a6c8
jge 0x40a6c1
or edi, 0xffffff81
fnstcw word [ebx - 0x2c]
ja 0x40a6cd
jbe 0x40a6d5
jbe 0x40a6d1
jns 0x40a6d3
sbb ecx, 0xd577d07b
jge 0x40a6e4
or edx, 0xffffff81
rol byte [eax - 0x7f308031], cl
sar byte [ebp - 0x2c], 1
adc esi, 0xd183d676
or edx, 0x3763d977
aaa
dec ecx
inc eax
xor dword [eax + 0x3a], esp
xor eax, 0x24663523
insd dword es:[edi], dx
dec esp
cmp dword [ebp + 0x35], ebx
jl 0x40a764
sub ebp, dword [esi]
push ebx
ja 0x40a724
mov cs, word [eax]
add byte [eax], al
mov dword [ebp - 0x30], 0x40a6c9
mov dword [ebp - 0x40], 0x40a723
xor eax, eax
shl byte [ebx], 0xa7
inc eax
add byte [ebx], dh
ror byte [eax - 0x15bfa7c], 0xff
inc dword [eax + 0x3d]
add byte [ecx], al
add byte [eax], al
mov byte [ebp + eax - 0x15c], al
inc eax
cmp eax, 0x100
jb 0x40a74f
fld qword [ebp - 0x3c]
mov byte [ebp - 8], 0
mov eax, 0xff
add byte [eax + 0xff], bh
mov esi, dword [ebp - 8]
xor edi, edi
mov dword [ebp - 0x1c], eax
jmp 0x40a777
mov eax, dword [ebp - 0x1c]
mov ebx, 1
mov dword [ebp - 0x38], 0
cmp eax, ebx
jbe 0x40a78f
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40a787
cmp edi, 3
ja case.default.0x40a794
jmp dword [edi*4 + 0x40b0a0]
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
add cl, al
jmp 0x40a81a
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 8
add cl, al
jmp 0x40a81a
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x10
add cl, al
jmp 0x40a81a
fld st(0)
and esi, 0xff
call fcn.00848444
mov cl, byte [ebp + esi - 0x15c]
shr eax, 0x18
add cl, al
jmp 0x40a81a
mov eax, dword [ebp - 0x40]
and esi, 0xff
mov cl, byte [ebp + esi - 0x15c]
mov dl, byte [eax + edi - 4]
add cl, dl
inc edi
mov byte [ebp - 8], cl
cmp edi, 0x1b
jb 0x40a82b
xor edi, edi
add cl, 0x1b
mov byte [ebp - 8], cl
mov esi, dword [ebp - 8]
mov eax, dword [ebp - 0x38]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0x38], eax
jbe 0x40a84b
mov eax, edx
xor edx, edx
div dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp edx, eax
ja 0x40a78f
mov ecx, eax
cmp ecx, edx
je 0x40a894
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 - 0x1c], ecx
jne 0x40a774
mov cl, byte [ebp - 0x157]
mov dl, byte [ebp - 0x155]
and esi, 0xff
mov byte [ebp - 0xc], cl
xor ecx, ecx
mov byte [ebp - 0x20], dl
mov al, byte [ebp + esi - 0x15c]
mov esi, dword [ebp - 0x30]
xor edx, edx
mov byte [ebp - 0x24], al
mov cl, byte [esi]
mov dl, byte [esi + 1]
add cl, 0xc
add dl, 0x36
shl cl, 4
or cl, dl
mov bl, byte [ebp - 0x159]
mov byte [ebp - 1], cl
mov ecx, dword [ebp - 0x24]
and ecx, 0xff
xor eax, eax
fstp st(0)
mov dl, byte [ebp + ecx - 0x15c]
lea edi, [ebp + ecx - 0x15c]
mov byte [ebp - 0x14], 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 - 8], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 8]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x14]
mov bl, byte [ebp - 0xc]
mov byte [esi], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
and edx, 0xff
mov dl, byte [ebp + edx - 0x15c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
mov edi, dword [ebp - 0x2c]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x15c]
mov edx, dword [ebp - 0x28]
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 - 1]
mov byte [ebp - 0x24], dl
xor bl, dl
mov byte [ebp - 0x20], bl
mov edi, dword [ebp - 0x30]
lea edx, [ebp - 0x1b8]
sub edx, 2
mov dword [ebp - 0x1c], 0x14
jmp 0x40a9f4
mov edi, dword [ebp - 0x40]
mov bl, byte [edi + 3]
add edx, 2
add edi, 2
mov dword [ebp - 0x38], edx
add bl, 0x36
mov dword [ebp - 0x40], edi
mov dl, byte [edi]
inc eax
add dl, 0xc
shl dl, 4
or dl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x14], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 8], cl
mov byte [ebp - 0x10], bl
mov edx, dword [ebp - 8]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x14]
mov bl, byte [ebp - 0xc]
mov byte [esi], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x2c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x20], dl
jbe 0x40ab0e
movsx di, dl
mov edx, dword [ebp - 0x38]
mov word [edx], di
jmp 0x40ab11
mov edx, dword [ebp - 0x38]
mov edi, dword [ebp - 0x1c]
dec edi
mov dword [ebp - 0x1c], edi
jne 0x40a9f1
mov esi, dword [ebp - 0x30]
inc eax
mov bl, byte [esi + eax*2]
mov dl, byte [esi + eax*2 + 1]
add bl, 0xc
add dl, 0x36
shl bl, 4
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
mov dl, byte [ebp - 0x10]
add cl, bl
inc dl
mov byte [ebp - 8], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x28], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 0x18], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x18]
and edx, 0xff
lea edx, [ebp + edx - 0x15c]
mov dword [ebp - 0x1c], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x1c]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [ebp - 0xc]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x2c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x20], dl
jbe 0x40ac43
movsx dx, dl
mov word [ebp + eax*2 - 0x1ba], dx
mov bl, byte [esi + eax*2 + 2]
mov dl, byte [esi + eax*2 + 3]
inc eax
add bl, 0xc
add dl, 0x36
shl bl, 4
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x1c]
mov bl, byte [edx]
mov dl, byte [ebp - 0x10]
add cl, bl
inc dl
mov byte [ebp - 8], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x28], edx
lea ebx, [ebp + ebx - 0x15c]
mov dword [ebp - 0x18], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x18]
and edx, 0xff
lea edx, [ebp + edx - 0x15c]
mov dword [ebp - 0x1c], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x1c]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [ebp - 0xc]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x2c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x20], dl
jbe 0x40ad5b
movsx dx, dl
mov word [ebp + eax*2 - 0x1ba], dx
inc eax
mov bl, byte [esi + eax*2]
mov dl, byte [esi + eax*2 + 1]
lea esi, [esi + eax*2]
add bl, 0xc
add dl, 0x36
mov dword [ebp - 0x40], esi
shl bl, 4
or dl, bl
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x1c]
mov bl, byte [edx]
add cl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 8], cl
inc bl
mov edx, dword [ebp - 8]
mov byte [ebp - 0x10], bl
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x14]
mov bl, byte [ebp - 0xc]
mov byte [esi], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x2c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x20], dl
jbe 0x40ae74
movsx dx, dl
mov word [ebp + eax*2 - 0x1ba], dx
lea ebx, [eax + 1]
cmp ebx, 0x2e
jge 0x40afc4
mov edi, dword [ebp - 0x40]
lea edx, [ebp + eax*2 - 0x1ba]
mov dword [ebp - 0x30], edx
mov edx, 0x2e
sub edx, ebx
mov dword [ebp - 0x38], edx
jmp 0x40ae9c
mov edi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x30]
mov bl, byte [edi + 3]
add edx, 2
add edi, 2
mov dword [ebp - 0x30], edx
add bl, 0x36
mov dl, byte [edi]
mov dword [ebp - 0x40], edi
add dl, 0xc
inc eax
shl dl, 4
or dl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 1], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
lea edi, [ebp + edx - 0x15c]
mov dl, byte [ebp + edx - 0x15c]
mov byte [ebp - 0x14], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 8], cl
mov byte [ebp - 0x10], bl
mov edx, dword [ebp - 8]
and edx, 0xff
lea esi, [ebp + edx - 0x15c]
mov dword [ebp - 0x28], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x15c]
lea edx, [ebp + edx - 0x15c]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x18], edx
mov bl, byte [ebp + esi - 0x15c]
lea esi, [ebp + esi - 0x15c]
mov byte [edx], bl
mov dl, byte [ebp - 0x14]
mov bl, byte [ebp - 0xc]
mov byte [esi], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 0x2c], edx
mov dl, byte [ebp + edx - 0x15c]
add bl, dl
mov byte [ebp - 0xc], bl
mov bl, byte [edi]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x18]
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 - 0x28]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x2c]
add ebx, edx
mov dl, byte [ebp + edi - 0x15c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x15c]
mov bl, byte [ebp - 1]
mov byte [ebp - 0x24], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x20], dl
jbe 0x40afb7
mov edi, dword [ebp - 0x30]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x38]
dec edx
mov dword [ebp - 0x38], edx
jne 0x40ae99
mov word [ebp - 0x160], 0
push 0x8a1164
mov dword [ebp - 0x1bc], 1
call fcn.008481e0
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 0x8a11b8
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.008481e0
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.0040b0b0
mov edx, dword [ebp - 0x1bc]
add esp, 0x24
xor eax, eax
test edx, edx
jle 0x40b07f
lea ecx, [ebp - 0x1dc]
cmp dword [ecx], 0
je 0x40b079
mov eax, 1
add ecx, 4
dec edx
jne 0x40b06f
neg eax
sbb eax, eax
pop edi
pop esi
and eax, 8
pop ebx
mov esp, ebp
pop ebp
ret