Function at 0x40b460
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x858
push ebx
push esi
push edi
xor ebx, ebx
mov ecx, 0xb0
xor eax, eax
lea edi, [ebp - 0x457]
mov byte [ebp - 0x458], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x7f
xor eax, eax
lea edi, [ebp - 0x656]
mov word [ebp - 0x658], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x7f
xor eax, eax
lea edi, [ebp - 0x856]
mov word [ebp - 0x858], bx
rep stosd dword es:[edi], eax
push 0x89a250
mov dword [ebp - 0x4c], ebx
mov word [ebp - 0x3c], bx
mov word [ebp - 0x3a], bx
stosw word es:[edi], ax
mov dword [ebp - 0x198], 4
call fcn.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x458]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a2a4
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x308]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a2f8
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x42e]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a2a4
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.00841480
lea edx, [ebp - 0x2de]
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
push 0x89a34c
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x404]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a3f4
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x2b4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a3a0
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
lea edx, [ebp - 0x3da]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x89a3f4
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.00841480
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
add esp, 0x20
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [ebp - 0x28a]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
fld qword [0x893578]
fld qword [0x893578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x89a668]
fsub st(1)
fxch st(1)
fmul qword [0x89a660]
fadd qword [0x89a658]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x89a650]
fnstsw ax
test ah, 0x41
jne 0x40b68b
fld st(0)
fmul qword [0x89a648]
fsubp st(2)
fadd qword [0x89a4c0]
fcom qword [0x89a640]
fnstsw ax
test ah, 1
jne 0x40b652
fxch st(1)
fst qword [ebp - 0x48]
fxch st(1)
fstp st(0)
fcomp qword [0x893578]
fnstsw ax
test ah, 1
je 0x40b70a
inc esp
sub byte [ecx + 0x2b], al
dec ebx
sub byte [edi], bh
sub ecx, dword [ecx + 0x2e]
aas
and edi, dword [edi]
sub dword [edi], edi
and al, byte [edx + 0x29]
cmp eax, 0x48233f22
sub dword [esi], edi
das
inc ebp
sub edi, dword [0x46283e2e]
and byte [ebx + 0x29], al
inc ebx
and eax, 0x2a412d40
dec ebx
and byte [ebx + 0x2c], al
dec edx
and dword [0x45244b2c], edi
daa
cmp eax, 0x5671252d
sub bl, byte [esi + 0x47]
dec ecx
dec ecx
aas
dec edi
popal
pop esp
jns 0x40b72c
inc ebx
dec ebx
pop ebx
das
sub ecx, dword [ebp + edi + 0x4b]
jmp 0x40be51
mov dword [ebp - 0x24], 0x40b6b4
mov dword [ebp - 0x40], 0x40b6ec
xor eax, eax
mov byte [ebp + eax - 0x14c], al
inc eax
cmp eax, 0x100
jb 0x40b71a
fld qword [ebp - 0x48]
mov byte [ebp - 8], 0
xor edi, edi
mov esi, dword [ebp - 8]
mov dword [ebp - 4], 0xff
mov eax, dword [ebp - 4]
mov ebx, 1
cmp eax, ebx
mov dword [ebp - 0x34], 0
jbe 0x40b757
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40b74f
cmp edi, 3
ja case.default.0x40b75c
jmp dword [edi*4 + 0x40ca74]
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
jmp 0x40b7d8
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 8
jmp 0x40b7d8
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 0x10
jmp 0x40b7d8
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 0x18
jmp 0x40b7d8
mov ecx, dword [ebp - 0x40]
and esi, 0xff
mov cl, byte [ecx + edi - 4]
mov al, byte [ebp + esi - 0x14c]
add cl, al
inc edi
cmp edi, 0x1d
mov byte [ebp - 8], cl
jb 0x40b7eb
xor edi, edi
add cl, 0x1d
mov byte [ebp - 8], cl
mov esi, dword [ebp - 8]
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 0x40b80b
mov eax, edx
xor edx, edx
div dword [ebp - 4]
mov eax, dword [ebp - 4]
cmp eax, edx
jb 0x40b757
je 0x40b843
mov bl, byte [ebp + eax - 0x14c]
lea edx, [ebp + edx - 0x14c]
lea ecx, [ebp + eax - 0x14c]
mov al, byte [edx]
xor bl, al
mov byte [ecx], bl
mov al, bl
mov bl, byte [edx]
xor bl, al
mov byte [edx], bl
mov al, byte [ecx]
mov dl, bl
xor al, dl
mov byte [ecx], al
mov eax, dword [ebp - 4]
dec eax
mov dword [ebp - 4], eax
jne 0x40b73c
mov dl, byte [ebp - 0x145]
and esi, 0xff
mov byte [ebp - 8], dl
mov bl, byte [ebp - 0x149]
mov al, byte [ebp + esi - 0x14c]
mov esi, dword [ebp - 0x24]
mov byte [ebp - 0x2c], al
mov cl, byte [ebp - 0x147]
mov al, byte [esi]
mov dl, byte [esi + 1]
add al, 4
sub dl, 0x20
shl al, 4
or al, dl
mov byte [ebp - 9], al
mov eax, dword [ebp - 0x2c]
and eax, 0xff
fstp st(0)
mov dl, byte [ebp + eax - 0x14c]
lea edi, [ebp + eax - 0x14c]
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x14b]
mov eax, edx
and eax, 0xff
mov al, byte [ebp + eax - 0x14c]
add al, bl
inc dl
mov byte [ebp - 0x30], al
mov byte [ebp - 0x1c], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 8]
and ebx, 0xff
mov dword [ebp - 0x10], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 4], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 4]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x28], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x28]
mov dl, byte [ebp - 0x20]
mov byte [ebx], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov ebx, dword [ebp - 4]
mov byte [ebp - 0x18], cl
mov edx, dword [ebp - 0x18]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
mov edi, dword [ebp - 0x14]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x10]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x14c]
add edx, edi
and edx, 0xff
xor bl, byte [ebp + edx - 0x14c]
mov dl, byte [ebp - 9]
mov byte [ebp - 0x2c], dl
xor bl, dl
mov dl, byte [esi + 3]
mov byte [ebp - 8], bl
sub dl, 0x20
mov bl, byte [esi + 2]
add esi, 4
add bl, 4
shl bl, 4
or dl, bl
mov byte [ebp - 9], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
mov bl, byte [edx]
mov dl, byte [ebp - 0x1c]
add al, bl
inc dl
mov byte [ebp - 0x30], al
mov byte [ebp - 0x1c], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 8]
and ebx, 0xff
mov dword [ebp - 0x10], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 4], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 4]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x28], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x28]
mov dl, byte [ebp - 0x20]
mov byte [ebx], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov ebx, dword [ebp - 4]
mov byte [ebp - 0x18], cl
mov dword [ebp - 4], 2
mov edx, dword [ebp - 0x18]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x10]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x14]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 9]
mov byte [ebp - 0x2c], bl
xor dl, bl
mov byte [ebp - 8], dl
movsx dx, dl
mov word [ebp - 0x184], dx
mov bl, byte [esi]
mov dl, byte [esi + 1]
add bl, 4
sub dl, 0x20
shl bl, 4
or dl, bl
mov byte [ebp - 9], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
mov dword [ebp - 0x28], 0xc
mov bl, byte [edx]
add al, bl
mov bl, byte [ebp - 0x1c]
mov byte [ebp - 0x30], al
inc bl
mov edx, dword [ebp - 0x30]
mov byte [ebp - 0x1c], bl
and edx, 0xff
lea esi, [ebp + edx - 0x14c]
mov dword [ebp - 0x10], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [esi], bl
mov esi, dword [ebp - 0x1c]
and esi, 0xff
mov bl, byte [ebp + esi - 0x14c]
lea esi, [ebp + esi - 0x14c]
mov byte [edx], bl
mov bl, byte [ebp - 0x20]
mov byte [esi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dl, byte [edx]
mov dword [ebp - 0x14], ebx
add cl, byte [ebp + ebx - 0x14c]
mov byte [ebp - 0x18], cl
mov ebx, dword [ebp - 0x18]
and ebx, 0xff
mov bl, byte [ebp + ebx - 0x14c]
add ebx, edx
mov dl, byte [edi]
mov edi, dword [ebp - 0x10]
add ebx, edx
and ebx, 0xff
xor edx, edx
mov dl, byte [ebp + ebx - 0x14c]
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov dl, byte [ebp + edx - 0x14c]
add ebx, edi
and ebx, 0xff
lea edi, [ebp - 0x182]
mov dword [ebp - 0x38], edi
mov edi, dword [ebp - 4]
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 9]
mov byte [ebp - 0x2c], bl
xor dl, bl
mov byte [ebp - 8], dl
movsx dx, dl
mov word [ebp - 0x182], dx
mov edx, dword [ebp - 0x24]
add edx, 4
jmp 0x40bbb6
mov edx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x38]
add edx, 2
inc edi
mov dword [ebp - 0x34], edx
mov dl, byte [edx]
mov dword [ebp - 4], edi
mov edi, dword [ebp - 0x34]
add ebx, 2
mov dword [ebp - 0x38], ebx
add dl, 4
mov bl, byte [edi + 1]
shl dl, 4
sub bl, 0x20
or dl, bl
mov bl, byte [ebp - 0x1c]
mov byte [ebp - 9], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x20], dl
mov dl, byte [esi]
add al, dl
inc bl
mov byte [ebp - 0x30], al
mov byte [ebp - 0x1c], bl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea esi, [ebp + edx - 0x14c]
mov dword [ebp - 0x10], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [esi], bl
mov esi, dword [ebp - 0x1c]
and esi, 0xff
mov bl, byte [ebp + esi - 0x14c]
lea esi, [ebp + esi - 0x14c]
mov byte [edx], bl
mov bl, byte [ebp - 0x20]
mov byte [esi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dl, byte [edx]
mov dword [ebp - 0x14], ebx
add cl, byte [ebp + ebx - 0x14c]
mov byte [ebp - 0x18], cl
mov ebx, dword [ebp - 0x18]
and ebx, 0xff
mov bl, byte [ebp + ebx - 0x14c]
add ebx, edx
mov dl, byte [edi]
mov edi, dword [ebp - 0x10]
add ebx, edx
and ebx, 0xff
xor edx, edx
mov dl, byte [ebp + ebx - 0x14c]
mov bl, byte [edi]
mov edi, dword [ebp - 0x14]
mov dl, byte [ebp + edx - 0x14c]
add ebx, edi
mov edi, dword [ebp - 4]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 9]
mov byte [ebp - 0x2c], bl
xor dl, bl
test edi, edi
mov byte [ebp - 8], dl
jbe 0x40bccd
mov ebx, dword [ebp - 0x38]
movsx dx, dl
mov word [ebx], dx
mov edx, dword [ebp - 0x28]
dec edx
mov dword [ebp - 0x28], edx
jne 0x40bbb3
lea ebx, [edi + 1]
cmp ebx, 0x1d
jge 0x40be45
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x28], edx
mov edx, dword [ebp - 0x24]
lea esi, [edx + edi*2]
lea edx, [ebp + edi*2 - 0x186]
mov dword [ebp - 0x38], edx
mov edx, 0x1d
sub edx, ebx
mov dword [ebp - 0x34], edx
jmp 0x40bd18
mov esi, dword [ebp - 0x40]
mov edx, dword [ebp - 0x38]
mov bl, byte [esi + 2]
add esi, 2
add edx, 2
mov dword [ebp - 0x38], edx
add bl, 4
mov dl, byte [esi + 1]
mov dword [ebp - 0x40], esi
sub dl, 0x20
inc edi
shl bl, 4
or dl, bl
mov byte [ebp - 9], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea esi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
mov bl, byte [edx]
mov dl, byte [ebp - 0x1c]
add al, bl
inc dl
mov byte [ebp - 0x30], al
mov byte [ebp - 0x1c], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [esi], bl
mov ebx, dword [ebp - 8]
and ebx, 0xff
mov dword [ebp - 0x10], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 4], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x1c]
mov ebx, dword [ebp - 4]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x28], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x28]
mov dl, byte [ebp - 0x20]
mov byte [ebx], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov dword [ebp - 0x14], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov ebx, dword [ebp - 4]
mov byte [ebp - 0x18], cl
mov edx, dword [ebp - 0x18]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x10]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x14]
add ebx, edx
mov dl, byte [ebp + esi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 9]
mov byte [ebp - 0x2c], bl
xor dl, bl
test edi, edi
mov byte [ebp - 8], dl
jbe 0x40be38
mov esi, dword [ebp - 0x38]
movsx dx, dl
mov word [esi], dx
mov edx, dword [ebp - 0x34]
dec edx
mov dword [ebp - 0x34], edx
jne 0x40bd15
mov ebx, dword [ebp - 0x4c]
mov word [ebp - 0x14e], 0
lea eax, [ebp - 0x184]
lea ecx, [ebp - 0x658]
push eax
push ecx
call fcn.00841c69
fld qword [0x893578]
fld qword [0x893578]
add esp, 8
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x89a638]
fsub st(1)
fxch st(1)
fmul qword [0x89a630]
fadd qword [0x89a628]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x89a620]
fnstsw ax
test ah, 0x41
jne 0x40beac
fld st(0)
fmul qword [0x89a618]
fsubp st(2)
fadd qword [0x893548]
fcom qword [0x89a610]
fnstsw ax
test ah, 1
jne 0x40be73
fxch st(1)
fst qword [ebp - 0x48]
fxch st(1)
fstp st(0)
fcomp qword [0x893578]
fnstsw ax
test ah, 1
je 0x40bf38
push ecx
jno 0x40bf2b
jp 0x40bf2f
outsb dx, byte [esi]
push edi
outsb dx, byte [esi]
push ebx
jb 0x40bf32
jae 0x40bf32
outsd dx, dword [esi]
pop ebp
insd dword es:[edi], dx
pop ebx
insd dword es:[edi], dx
push ebx
jbe 0x40bf38
je 0x40bf3f
jnp 0x40bf48
jbe 0x40bf41
insb byte es:[edi], dx
pop edx
outsd dx, dword [esi]
pop ecx
ja 0x40bf4a
jno 0x40bf51
jb 0x40bf52
jne 0x40bf4b
ja 0x40bf55
insb byte es:[edi], dx
push edi
insb byte es:[edi], dx
pop ebp
je 0x40bf5c
jne 0x40bf5f
jp 0x40bf5c
outsb dx, byte [esi]
push eax
jb 0x40bf62
jp 0x40bf60
ja 0x40bf6b
jb 0x40bf68
jns 0x40bf6a
js 0x40bf6a
outsd dx, dword [esi]
push ecx
jbe 0x40bf6e
jne 0x40bf79
jp 0x40bf9a
inc esp
cmp byte [ebp + 0x23], dl
push edx
bound esp, qword [edx]
pushal
inc edi
dec edx
pop esp
cmp ebp, dword [ecx]
dec dx
insd dword es:[edi], dx
pop eax
je 0x40bf84
aaa
inc eax
jmp 0x40c9e1
mov dword [ebp - 0x38], 0x40bed5
mov dword [ebp - 0x40], 0x40bf1d
xor eax, eax
rcr byte [0x330040bf], 0xc0
mov byte [ebp + eax - 0x14c], al
add eax, 0xfffffeb4
mov ah, 0xfe
invalid
inc eax
cmp eax, 0x100
add byte [ecx], al
add byte [eax], al
add dword [eax], eax
add byte [edx - 0xf], dh
jb 0x40bf48
fld qword [ebp - 0x48]
mov byte [ebp - 4], 0
mov eax, 0xff
cld
add byte [eax + 0xff], bh
inc dword [eax]
add byte [eax], al
add byte [eax], al
add byte [ebx - 0xcc038b], cl
mov esi, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 8], eax
clc
mov ebx, 1
add byte [eax], al
mov dword [ebp - 0x34], 0
cmp eax, ebx
jbe 0x40bf83
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40bf7b
cmp edi, 3
inc dword [ebx]
ja case.default.0x40bf88
jmp dword [edi*4 + 0x40ca84]
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
jmp 0x40c004
inc ebx
add byte [edx - 0x14bca74], cl
invalid
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 8
jmp 0x40c004
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 0x10
jmp 0x40c004
fld st(0)
and esi, 0xff
call fcn.008416e4
mov cl, byte [ebp + esi - 0x14c]
shr eax, 0x18
jmp 0x40c004
mov edx, dword [ebp - 0x40]
and esi, 0xff
mov cl, byte [edx + edi - 4]
mov al, byte [ebp + esi - 0x14c]
add cl, al
inc edi
cmp edi, 0x1a
mov byte [ebp - 4], cl
jb 0x40c017
xor edi, edi
add cl, 0x1a
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 0x40c037
mov eax, edx
xor edx, edx
div dword [ebp - 8]
mov eax, dword [ebp - 8]
cmp eax, edx
jb 0x40bf83
je 0x40c06f
mov bl, byte [ebp + eax - 0x14c]
lea edx, [ebp + edx - 0x14c]
lea ecx, [ebp + eax - 0x14c]
mov al, byte [edx]
xor bl, al
mov byte [ecx], bl
mov al, bl
mov bl, byte [edx]
xor bl, al
mov byte [edx], bl
mov al, byte [ecx]
mov dl, bl
xor al, dl
mov byte [ecx], al
mov eax, dword [ebp - 8]
dec eax
mov dword [ebp - 8], eax
jne 0x40bf6b
mov dl, byte [ebp - 0x145]
mov edi, dword [ebp - 0x38]
and esi, 0xff
mov byte [ebp - 0x20], dl
xor edx, edx
mov bl, byte [ebp - 0x149]
mov al, byte [ebp + esi - 0x14c]
mov dl, byte [edi]
mov byte [ebp - 0x30], al
xor eax, eax
mov al, byte [edi + 1]
sub edx, 0x4e
sub eax, 0x6c
xor esi, esi
shl edx, 4
or eax, edx
mov cl, byte [ebp - 0x147]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x30]
and eax, 0xff
fstp st(0)
mov dl, byte [ebp + eax - 0x14c]
lea edi, [ebp + eax - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x14b]
mov eax, edx
and eax, 0xff
mov al, byte [ebp + eax - 0x14c]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
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 - 0x14c]
mov edx, dword [ebp - 0x1c]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x14c]
add edx, edi
and edx, 0xff
xor bl, byte [ebp + edx - 0x14c]
mov dl, byte [ebp - 0x40]
xor bl, dl
mov byte [ebp - 0x20], bl
mov edi, dword [ebp - 0x38]
mov byte [ebp - 0x30], dl
lea edx, [ebp - 0x194]
mov dword [ebp - 0x40], 0xf
sub edx, 2
jmp 0x40c1ce
mov edi, dword [ebp - 0x44]
mov bl, byte [edi + 3]
add edx, 2
add edi, 2
mov dword [ebp - 0x34], edx
sub bl, 0x6c
mov dword [ebp - 0x44], edi
mov dl, byte [edi]
inc esi
add dl, 2
shl dl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [edx]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x30], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c2ec
movsx di, dl
mov edx, dword [ebp - 0x34]
mov word [edx], di
jmp 0x40c2ef
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x40]
dec edi
mov dword [ebp - 0x40], edi
jne 0x40c1cb
mov edi, dword [ebp - 0x38]
inc esi
mov dl, byte [edi + esi*2]
mov bl, byte [edi + esi*2 + 1]
add dl, 2
sub bl, 0x6c
shl dl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x30], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c41e
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edx, dword [ebp - 0x38]
inc esi
xor ebx, ebx
mov bl, byte [edx + esi*2 + 1]
lea edi, [edx + esi*2]
sub ebx, 0x6c
mov dl, byte [edi]
add dl, 2
shl dl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [edx]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x30], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c539
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
lea ebx, [esi + 1]
cmp ebx, 0x22
jge 0x40c693
mov edx, dword [ebp - 0x38]
lea edi, [edx + esi*2]
lea edx, [ebp + esi*2 - 0x196]
mov dword [ebp - 0x34], edx
mov edx, 0x22
sub edx, ebx
mov dword [ebp - 0x40], edx
jmp 0x40c564
mov edi, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x34]
mov dl, byte [edi + 2]
add edi, 2
add ebx, 2
mov dword [ebp - 0x34], ebx
xor ebx, ebx
mov bl, byte [edi + 1]
add dl, 2
sub ebx, 0x6c
mov dword [ebp - 0x44], edi
shl dl, 4
or dl, bl
inc esi
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [edx]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x30], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c686
mov edi, dword [ebp - 0x34]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x40]
dec edx
mov dword [ebp - 0x40], edx
jne 0x40c561
mov edi, dword [ebp - 0x38]
inc esi
xor edx, edx
xor ebx, ebx
mov dl, byte [edi + esi*2]
mov bl, byte [edi + esi*2 + 1]
sub edx, 0x4e
sub ebx, 0x6c
shl edx, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x24]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x30], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c7b9
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edi, dword [ebp - 0x38]
inc esi
xor ebx, ebx
mov dl, byte [edi + esi*2]
mov bl, byte [edi + esi*2 + 1]
add dl, 2
sub ebx, 0x6c
shl dl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x30]
and edx, 0xff
lea edi, [ebp + edx - 0x14c]
mov dl, byte [ebp + edx - 0x14c]
mov byte [ebp - 0x14], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [edx]
mov dl, byte [ebp - 0x24]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x24], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
lea edx, [ebp + edx - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], edx
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and edx, 0xff
lea edx, [ebp + edx - 0x14c]
mov dword [ebp - 0x18], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x18]
mov dl, byte [ebp - 0x14]
mov byte [ebx], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov dword [ebp - 8], edx
mov bl, byte [ebp + edx - 0x14c]
add cl, bl
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x14c]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x14c]
mov edx, dword [ebp - 0x1c]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 8]
add ebx, edx
mov dl, byte [ebp + edi - 0x14c]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x14c]
mov bl, byte [ebp - 4]
xor dl, bl
test esi, esi
mov byte [ebp - 0x20], dl
jbe 0x40c8cf
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edi, dword [ebp - 0x38]
inc esi
xor ebx, ebx
xor edx, edx
mov bl, byte [edi + esi*2 + 1]
mov dl, byte [edi + esi*2]
mov edi, ebx
sub edx, 0x4e
sub edi, 0x6c
mov dword [ebp - 0x44], edi
mov edi, dword [ebp - 4]
and edi, 0xff
mov bl, byte [ebp + edi - 0x14c]
lea edi, [ebp + edi - 0x14c]
mov byte [ebp - 0x14], bl
mov ebx, dword [ebp - 0x18]
add al, byte [ebx]
mov byte [ebp - 0x28], al
mov al, byte [ebp - 0x24]
inc al
mov byte [ebp - 0x24], al
mov eax, dword [ebp - 0x28]
and eax, 0xff
mov bl, byte [ebp + eax - 0x14c]
lea eax, [ebp + eax - 0x14c]
mov byte [edi], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0x1c], eax
lea ebx, [ebp + ebx - 0x14c]
mov dword [ebp - 0x10], ebx
mov bl, byte [ebx]
mov byte [eax], bl
mov eax, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x10]
and eax, 0xff
test esi, esi
lea eax, [ebp + eax - 0x14c]
mov dword [ebp - 0x18], eax
mov al, byte [eax]
mov byte [ebx], al
mov ebx, dword [ebp - 0x18]
mov al, byte [ebp - 0x14]
mov byte [ebx], al
jbe 0x40c9d5
mov eax, dword [ebp - 0x14]
and eax, 0xff
shl dl, 4
mov bl, byte [ebp + eax - 0x14c]
add bl, cl
and ebx, 0xff
mov cl, byte [ebp + ebx - 0x14c]
mov bl, byte [edi]
mov edi, dword [ebp - 0x10]
add ecx, ebx
mov bl, byte [edi]
add ecx, ebx
xor ebx, ebx
and ecx, 0xff
mov bl, byte [ebp + ecx - 0x14c]
mov ecx, dword [ebp - 0x1c]
mov cl, byte [ecx]
add ecx, eax
mov al, byte [ebp + ebx - 0x14c]
and ecx, 0xff
mov bl, byte [ebp + ecx - 0x14c]
xor al, bl
mov bl, byte [ebp - 0x44]
or dl, bl
xor al, dl
movsx cx, al
mov word [ebp + esi*2 - 0x196], cx
mov ebx, dword [ebp - 0x4c]
mov word [ebp - 0x14e], 0
lea edx, [ebp - 0x194]
lea eax, [ebp - 0x858]
push edx
push eax
call fcn.00841c69
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0x458]
push ecx
push 2
push 0
push edx
lea eax, [ebp - 0x658]
push 0x100
push eax
push reloc.WS2_32.dll_bind
call fcn.0040b050
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0x458]
push ecx
push 1
push 0
push edx
lea eax, [ebp - 0x858]
push 0x100
push eax
push reloc.WS2_32.dll_bind
call fcn.0040b050
mov ecx, dword [ebp - 0x198]
add esp, 0x40
test ecx, ecx
jle 0x40ca61
lea eax, [ebp - 0x1b8]
cmp dword [eax], 0
je 0x40ca5b
mov ebx, 1
add eax, 4
dec ecx
jne 0x40ca51
mov eax, ebx
pop edi
neg eax
sbb eax, eax
pop esi
and eax, 0x10
pop ebx
mov esp, ebp
pop ebp
ret