Function at 0x40b7b0
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 - 0x856]
mov word [ebp - 0x858], bx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x7f
xor eax, eax
lea edi, [ebp - 0x656]
mov word [ebp - 0x658], bx
rep stosd dword es:[edi], eax
push 0x896234
mov dword [ebp - 0x14c], ebx
mov word [ebp - 0x38], bx
mov word [ebp - 0x36], bx
stosw word es:[edi], ax
mov dword [ebp - 0x198], 4
call fcn.0083da80
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 0x896288
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.0083da80
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 0x8962dc
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.0083da80
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 0x896288
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.0083da80
lea edx, [ebp - 0x2de]
mov edi, eax
or ecx, 0xffffffff
xor eax, eax
push 0x896330
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.0083da80
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 0x8963d8
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.0083da80
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 0x896384
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.0083da80
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 0x8963d8
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.0083da80
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 [0x88f578]
fld qword [0x88f578]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x896658]
fsub st(1)
fxch st(1)
fmul qword [0x896650]
fadd qword [0x896648]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x896640]
fnstsw ax
test ah, 0x41
jne 0x40b9de
fld st(0)
fmul qword [0x896638]
fsubp st(2)
fadd qword [0x88f548]
fcom qword [0x896630]
fnstsw ax
test ah, 1
jne 0x40b9a5
fxch st(1)
fst qword [ebp - 0x48]
fxch st(1)
fstp st(0)
fcomp qword [0x88f578]
fnstsw ax
test ah, 1
je 0x40ba5f
xchg bl, bl
and ebx, 0xffffff87
xlatb
mov ah, ah
xchg esp, ebx
xchg edx, esp
mov ebx, ebp
mov ds, ebx
test esp, esp
invalid
mov dword [ebp - 0x20], 0x40ba07
mov dword [ebp - 0x3c], 0x40ba3f
xor eax, eax
mov byte [ebp + eax - 0x148], al
inc eax
cmp eax, 0x100
jb 0x40ba6f
fld qword [ebp - 0x48]
mov byte [ebp - 0x30], 0
mov esi, dword [ebp - 0x30]
xor edi, edi
mov dword [ebp - 4], 0xff
mov eax, dword [ebp - 4]
mov ebx, 1
cmp eax, ebx
mov dword [ebp - 0x34], 0
jbe 0x40baac
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40baa4
cmp edi, 3
ja case.default.0x40bab1
jmp dword [edi*4 + 0x40d450]
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
jmp 0x40bb2d
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 8
jmp 0x40bb2d
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 0x10
jmp 0x40bb2d
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 0x18
jmp 0x40bb2d
mov ecx, dword [ebp - 0x3c]
and esi, 0xff
mov cl, byte [ecx + edi - 4]
mov al, byte [ebp + esi - 0x148]
add cl, al
inc edi
cmp edi, 0x1f
mov byte [ebp - 0x30], cl
jb 0x40bb40
xor edi, edi
add cl, 0x1f
mov byte [ebp - 0x30], cl
mov esi, dword [ebp - 0x30]
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 0x40bb60
mov eax, edx
xor edx, edx
div dword [ebp - 4]
mov eax, dword [ebp - 4]
cmp eax, edx
jb 0x40baac
je 0x40bb98
mov bl, byte [ebp + eax - 0x148]
lea edx, [ebp + edx - 0x148]
lea ecx, [ebp + eax - 0x148]
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 0x40ba91
mov dl, byte [ebp - 0x141]
mov cl, byte [ebp - 0x143]
and esi, 0xff
mov byte [ebp - 0x28], dl
xor edx, edx
mov byte [ebp - 4], cl
mov al, byte [ebp + esi - 0x148]
mov esi, dword [ebp - 0x20]
xor ecx, ecx
mov byte [ebp - 0x14], al
mov dl, byte [esi]
mov cl, byte [esi + 1]
sub edx, 0x80
sub ecx, 0xd6
shl edx, 4
or cl, dl
mov bl, byte [ebp - 0x145]
mov byte [ebp - 0xc], cl
mov ecx, dword [ebp - 0x14]
and ecx, 0xff
xor eax, eax
fstp st(0)
mov dl, byte [ebp + ecx - 0x148]
lea edi, [ebp + ecx - 0x148]
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x147]
mov ecx, edx
and ecx, 0xff
mov cl, byte [ebp + ecx - 0x148]
add cl, bl
inc dl
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x1c], edx
mov bl, byte [ebp + esi - 0x148]
lea esi, [ebp + esi - 0x148]
mov byte [edx], bl
mov dl, byte [ebp - 0x18]
mov bl, byte [ebp - 4]
mov byte [esi], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
mov edi, dword [ebp - 0x24]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x148]
add edx, edi
and edx, 0xff
xor bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp - 0xc]
mov byte [ebp - 0x14], dl
xor bl, dl
mov byte [ebp - 0x28], bl
mov edi, dword [ebp - 0x20]
lea edx, [ebp - 0x184]
sub edx, 2
mov dword [ebp - 0x30], 0xb
jmp 0x40bd01
mov edi, dword [ebp - 0x3c]
mov bl, byte [edi + 2]
add edi, 2
add edx, 2
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x34], edx
mov dl, byte [edi + 1]
add dl, 0x2a
inc eax
shl bl, 4
or dl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x10], bl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x1c], edx
mov bl, byte [ebp + esi - 0x148]
lea esi, [ebp + esi - 0x148]
mov byte [edx], bl
mov dl, byte [ebp - 0x18]
mov bl, byte [ebp - 4]
mov byte [esi], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x14], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x28], dl
jbe 0x40be19
movsx di, dl
mov edx, dword [ebp - 0x34]
mov word [edx], di
jmp 0x40be1c
mov edx, dword [ebp - 0x34]
mov edi, dword [ebp - 0x30]
dec edi
mov dword [ebp - 0x30], edi
jne 0x40bcfe
mov edi, dword [ebp - 0x20]
inc eax
mov dl, byte [edi + eax*2 + 1]
mov bl, byte [edi + eax*2]
add dl, 0x2a
shl bl, 4
or dl, bl
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp - 0x10]
add cl, bl
inc dl
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov ebx, dword [ebp - 0x28]
and ebx, 0xff
mov dword [ebp - 8], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0x1c], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x30], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x30]
mov dl, byte [ebp - 0x18]
mov byte [ebx], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [ebp - 4]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + esi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x14], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x28], dl
jbe 0x40bf4b
movsx dx, dl
mov word [ebp + eax*2 - 0x186], dx
mov bl, byte [edi + eax*2 + 3]
inc eax
xor edx, edx
add bl, 0x2a
mov dl, byte [edi + eax*2]
sub edx, 0x80
shl edx, 4
or bl, dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
mov byte [ebp - 0xc], bl
lea esi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x30]
mov bl, byte [edx]
mov dl, byte [ebp - 0x10]
add cl, bl
inc dl
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x10], dl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov ebx, dword [ebp - 0x28]
and ebx, 0xff
mov dword [ebp - 8], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0x1c], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x30], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x30]
mov dl, byte [ebp - 0x18]
mov byte [ebx], dl
mov edx, dword [ebp - 0x18]
mov bl, byte [ebp - 4]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + esi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x14], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x28], dl
jbe 0x40c067
movsx dx, dl
mov word [ebp + eax*2 - 0x186], dx
inc eax
xor edx, edx
xor ebx, ebx
mov dl, byte [edi + eax*2]
mov bl, byte [edi + eax*2 + 1]
lea esi, [edi + eax*2]
sub edx, 0x80
sub ebx, 0xd6
shl edx, 4
or dl, bl
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x30]
mov bl, byte [edx]
add cl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 0x2c], cl
inc bl
mov edx, dword [ebp - 0x2c]
mov byte [ebp - 0x10], bl
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x1c], edx
mov bl, byte [ebp + esi - 0x148]
lea esi, [ebp + esi - 0x148]
mov byte [edx], bl
mov dl, byte [ebp - 0x18]
mov bl, byte [ebp - 4]
mov byte [esi], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x14], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x28], dl
jbe 0x40c187
movsx dx, dl
mov word [ebp + eax*2 - 0x186], dx
lea ebx, [eax + 1]
cmp ebx, 0x1c
jge 0x40c2db
mov edx, dword [ebp - 0x20]
lea edi, [edx + eax*2]
lea edx, [ebp + eax*2 - 0x186]
mov dword [ebp - 0x30], edx
mov edx, 0x1c
sub edx, ebx
mov dword [ebp - 0x40], edx
jmp 0x40c1b2
mov edi, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x30]
add edi, 2
add ebx, 2
xor edx, edx
mov dl, byte [edi]
mov dword [ebp - 0x30], ebx
xor ebx, ebx
mov dword [ebp - 0x34], edi
mov bl, byte [edi + 1]
inc eax
shl dl, 4
add bl, 0x2a
or dl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 0xc], dl
mov edx, dword [ebp - 0x14]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov dl, byte [esi]
add cl, dl
inc bl
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x10], bl
mov edx, dword [ebp - 0x2c]
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dword [ebp - 8], esi
mov dl, byte [esi]
mov byte [edi], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov esi, dword [ebp - 0x10]
and esi, 0xff
mov dword [ebp - 0x1c], edx
mov bl, byte [ebp + esi - 0x148]
lea esi, [ebp + esi - 0x148]
mov byte [edx], bl
mov dl, byte [ebp - 0x18]
mov bl, byte [ebp - 4]
mov byte [esi], dl
mov edx, dword [ebp - 0x18]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
add bl, dl
mov byte [ebp - 4], bl
mov ebx, dword [ebp - 0x1c]
mov edx, dword [ebp - 4]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 8]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0xc]
mov byte [ebp - 0x14], bl
xor dl, bl
test eax, eax
mov byte [ebp - 0x28], dl
jbe 0x40c2ce
mov edi, dword [ebp - 0x30]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x40]
dec edx
mov dword [ebp - 0x40], edx
jne 0x40c1af
mov edx, dword [ebp - 0xc]
inc eax
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 0x18], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov bl, byte [ebp - 0x10]
mov byte [ebp - 0x2c], cl
inc bl
mov ecx, dword [ebp - 0x2c]
mov byte [ebp - 0x10], bl
and ecx, 0xff
mov dl, byte [ebp + ecx - 0x148]
lea edi, [ebp + ecx - 0x148]
mov ecx, dword [ebp - 0x28]
mov byte [esi], dl
and ecx, 0xff
lea edx, [ebp + ecx - 0x148]
mov dword [ebp - 0x1c], edx
mov cl, byte [edx]
mov byte [edi], cl
mov ecx, dword [ebp - 0x10]
and ecx, 0xff
mov bl, byte [ebp + ecx - 0x148]
lea ecx, [ebp + ecx - 0x148]
mov byte [edx], bl
mov dl, byte [ebp - 0x18]
mov ebx, dword [ebp - 0x20]
mov byte [ecx], dl
mov edx, dword [ebp - 0x18]
mov cl, byte [ebx + eax*2 + 1]
mov bl, byte [ebx + eax*2]
and edx, 0xff
add cl, 0x2a
shl bl, 4
mov dword [ebp - 0x24], edx
mov dl, byte [ebp + edx - 0x148]
or cl, bl
mov bl, byte [ebp - 4]
add dl, bl
mov bl, byte [esi]
mov esi, dword [ebp - 0x1c]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp + ebx - 0x148]
xor cl, dl
mov dl, byte [edi]
add edx, dword [ebp - 0x24]
and edx, 0xff
xor cl, byte [ebp + edx - 0x148]
test eax, eax
jbe 0x40c3dd
movsx cx, cl
mov word [ebp + eax*2 - 0x186], cx
mov ebx, dword [ebp - 0x14c]
mov word [ebp - 0x14e], 0
lea edx, [ebp - 0x184]
lea eax, [ebp - 0x858]
push edx
push eax
call fcn.0083e269
fld qword [0x88f578]
fld qword [0x88f578]
add esp, 8
fld st(0)
fmul st(1)
fld st(0)
fmul qword [0x896628]
fsub st(1)
fxch st(1)
fmul qword [0x896620]
fadd qword [0x896618]
fdivp st(1)
faddp st(2)
fld st(1)
fcomp qword [0x896610]
fnstsw ax
test ah, 0x41
jne 0x40c447
fld st(0)
fmul qword [0x896608]
fsubp st(2)
fadd qword [0x896600]
fcom qword [0x8965f8]
fnstsw ax
test ah, 1
jne 0x40c40e
fxch st(1)
fst qword [ebp - 0x48]
fxch st(1)
fstp st(0)
fcomp qword [0x88f578]
fnstsw ax
test ah, 1
je 0x40c4d8
cmp dl, byte [ebp + 0x31]
sub esi, dword [esi*2 + 0x57567625]
xor al, 0x73
cmp dword [esi + 0x7a], esi
popal
dec ecx
dec esp
dec edx
push esp
aas
sub dword [ecx + 0x7b], edx
and al, 0x4b
bound eax, qword [edi + 0x65]
dec eax
insb byte es:[edi], dx
inc edx
dec esp
dec ecx
push 0x4e
bound eax, qword [edx + 0x68]
inc eax
inc edi
imul ecx, dword [ebp + 0x68], 0x44
bound eax, qword [ecx + 0x5f]
dec esi
pop edi
inc ecx
inc edx
pushal
inc ebp
bound eax, qword [ebx + 0x65]
aas
imul eax, dword [eax + 0x5f], 0x60446d48
inc ecx
imul edi, dword [edi], 0x68
inc ebp
insd dword es:[edi], dx
inc esi
bound eax, qword [edi + 0x63]
dec esp
popal
inc ecx
imul eax, dword [ecx + 0x66], 0x603f6348
dec edx
pop esi
dec edx
bound ecx, qword [ebx + 0x66]
inc edi
arpl word [ebp - 0x17], cx
in eax, 0xe
add byte [eax], al
mov dword [ebp - 0x30], 0x40c48b
mov dword [ebp - 0x3c], 0x40c470
xor eax, eax
mov byte [ebp + eax - 0x148], al
inc eax
cmp eax, 0x100
jb 0x40c4e8
fld qword [ebp - 0x48]
mov byte [ebp - 4], 0
mov eax, 0xff
mov esi, dword [ebp - 4]
xor edi, edi
mov dword [ebp - 0x1c], eax
mov ebx, 1
mov dword [ebp - 0x40], 0
cmp eax, ebx
jbe 0x40c523
lea ebx, [ebx + ebx + 1]
cmp ebx, eax
jb 0x40c51b
cmp edi, 3
ja case.default.0x40c528
jmp dword [edi*4 + 0x40d460]
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
jmp 0x40c5a4
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 8
jmp 0x40c5a4
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 0x10
jmp 0x40c5a4
fld st(0)
and esi, 0xff
call fcn.0083dce4
mov cl, byte [ebp + esi - 0x148]
shr eax, 0x18
jmp 0x40c5a4
mov edx, dword [ebp - 0x3c]
and esi, 0xff
mov cl, byte [ebp + esi - 0x148]
mov al, byte [edx + edi - 4]
add cl, al
inc edi
cmp edi, 0x1f
mov byte [ebp - 4], cl
jb 0x40c5b7
xor edi, edi
add cl, 0x1f
mov byte [ebp - 4], cl
mov esi, dword [ebp - 4]
mov eax, dword [ebp - 0x40]
mov edx, esi
and edx, 0xff
and edx, ebx
inc eax
cmp eax, 0xb
mov dword [ebp - 0x40], eax
jbe 0x40c5d7
mov eax, edx
xor edx, edx
div dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp eax, edx
jb 0x40c523
je 0x40c60f
mov bl, byte [ebp + eax - 0x148]
lea edx, [ebp + edx - 0x148]
lea ecx, [ebp + eax - 0x148]
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 - 0x1c]
dec eax
mov dword [ebp - 0x1c], eax
jne 0x40c50b
mov dl, byte [ebp - 0x141]
mov edi, dword [ebp - 0x30]
and esi, 0xff
mov byte [ebp - 0x10], dl
mov dl, byte [edi]
mov bl, byte [ebp - 0x145]
mov al, byte [ebp + esi - 0x148]
add dl, 2
mov byte [ebp - 0x1c], al
mov al, byte [edi + 1]
sub al, 0x3f
mov cl, byte [ebp - 0x143]
shl dl, 4
or al, dl
mov byte [ebp - 4], al
mov eax, dword [ebp - 0x1c]
and eax, 0xff
fstp st(0)
mov dl, byte [ebp + eax - 0x148]
lea esi, [ebp + eax - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x147]
mov eax, edx
and eax, 0xff
mov al, byte [ebp + eax - 0x148]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
mov esi, dword [ebp - 0x24]
and edx, 0xff
xor ebx, ebx
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov dl, byte [edx]
mov bl, byte [ebp + ebx - 0x148]
add edx, esi
and edx, 0xff
xor bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp - 4]
mov byte [ebp - 0x1c], dl
xor bl, dl
mov dl, byte [edi + 3]
mov byte [ebp - 0x10], bl
sub dl, 0x3f
mov bl, byte [edi + 2]
add edi, 4
add bl, 2
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea esi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [esi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [esi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov esi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + esi - 0x148]
and ebx, 0xff
mov esi, 2
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
mov byte [ebp - 0x10], dl
movsx dx, dl
mov word [ebp - 0x194], dx
mov bl, byte [edi]
mov dl, byte [edi + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dword [ebp - 0x40], 0xd
mov dl, byte [edi]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
mov byte [ebp - 0x10], dl
movsx dx, dl
mov word [ebp - 0x192], dx
mov edx, dword [ebp - 0x30]
lea edi, [edx + 4]
lea edx, [ebp - 0x192]
mov dword [ebp - 0x34], edx
jmp 0x40c986
mov edi, dword [ebp - 0x44]
mov edx, dword [ebp - 0x34]
add edi, 2
add edx, 2
xor ebx, ebx
mov bl, byte [edi]
mov dword [ebp - 0x34], edx
xor edx, edx
sub ebx, 0x5e
mov dl, byte [edi + 1]
mov dword [ebp - 0x44], edi
sub edx, 0x3f
inc esi
shl ebx, 4
or edx, ebx
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 0x3c]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40caa9
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 0x40c983
mov edi, dword [ebp - 0x30]
inc esi
mov bl, byte [edi + esi*2]
mov dl, byte [edi + esi*2 + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x3c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40cbd8
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edi, dword [ebp - 0x30]
inc esi
mov bl, byte [edi + esi*2]
mov dl, byte [edi + esi*2 + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40ccef
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edx, dword [ebp - 0x30]
inc esi
mov bl, byte [edx + esi*2]
lea edi, [edx + esi*2]
add bl, 2
mov dl, byte [edi + 1]
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40ce08
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
lea ebx, [esi + 1]
cmp ebx, 0x21
jge 0x40cf5f
mov edx, dword [ebp - 0x30]
lea edi, [edx + esi*2]
lea edx, [ebp + esi*2 - 0x196]
mov dword [ebp - 0x34], edx
mov edx, 0x21
sub edx, ebx
mov dword [ebp - 0x3c], edx
jmp 0x40ce33
mov edi, dword [ebp - 0x44]
mov edx, dword [ebp - 0x34]
mov bl, byte [edi + 3]
add edx, 2
add edi, 2
mov dword [ebp - 0x34], edx
sub bl, 0x3f
mov dl, byte [edi]
mov dword [ebp - 0x44], edi
add dl, 2
inc esi
shl dl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40cf52
mov edi, dword [ebp - 0x34]
movsx dx, dl
mov word [edi], dx
mov edx, dword [ebp - 0x3c]
dec edx
mov dword [ebp - 0x3c], edx
jne 0x40ce30
mov edi, dword [ebp - 0x30]
inc esi
mov bl, byte [edi + esi*2]
mov dl, byte [edi + esi*2 + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x20]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40d081
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edi, dword [ebp - 0x30]
inc esi
mov bl, byte [edi + esi*2]
mov dl, byte [edi + esi*2 + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
mov byte [ebp - 0x1c], bl
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40d198
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edi, dword [ebp - 0x30]
inc esi
mov bl, byte [edi + esi*2]
mov dl, byte [edi + esi*2 + 1]
add bl, 2
sub dl, 0x3f
shl bl, 4
or dl, bl
mov byte [ebp - 4], dl
mov edx, dword [ebp - 0x1c]
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
mov dl, byte [ebp - 0x20]
add al, bl
inc dl
mov byte [ebp - 0x28], al
mov byte [ebp - 0x20], dl
mov edx, dword [ebp - 0x28]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [edi], bl
mov ebx, dword [ebp - 0x10]
and ebx, 0xff
mov dword [ebp - 0x18], edx
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0xc], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov edx, dword [ebp - 0x20]
mov ebx, dword [ebp - 0xc]
and edx, 0xff
lea edx, [ebp + edx - 0x148]
mov dword [ebp - 0x14], edx
mov dl, byte [edx]
mov byte [ebx], dl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
mov edx, dword [ebp - 8]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov bl, byte [ebp + edx - 0x148]
add cl, bl
mov ebx, dword [ebp - 0xc]
mov byte [ebp - 0x2c], cl
mov edx, dword [ebp - 0x2c]
mov bl, byte [ebx]
and edx, 0xff
mov dl, byte [ebp + edx - 0x148]
add edx, ebx
mov bl, byte [edi]
add edx, ebx
xor ebx, ebx
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0x18]
mov edi, ebx
mov bl, byte [edx]
mov edx, dword [ebp - 0x24]
add ebx, edx
mov dl, byte [ebp + edi - 0x148]
and ebx, 0xff
xor dl, byte [ebp + ebx - 0x148]
mov bl, byte [ebp - 4]
xor dl, bl
test esi, esi
mov byte [ebp - 0x10], dl
jbe 0x40d2ac
movsx dx, dl
mov word [ebp + esi*2 - 0x196], dx
mov edx, dword [ebp - 4]
inc esi
and edx, 0xff
lea edi, [ebp + edx - 0x148]
mov dl, byte [ebp + edx - 0x148]
mov byte [ebp - 8], dl
mov edx, dword [ebp - 0x14]
mov bl, byte [edx]
add al, bl
mov bl, byte [ebp - 0x20]
mov byte [ebp - 0x28], al
inc bl
mov eax, dword [ebp - 0x28]
mov byte [ebp - 0x20], bl
and eax, 0xff
mov dl, byte [ebp + eax - 0x148]
lea eax, [ebp + eax - 0x148]
mov byte [edi], dl
mov edx, dword [ebp - 0x10]
and edx, 0xff
mov bl, byte [ebp + edx - 0x148]
lea edx, [ebp + edx - 0x148]
mov byte [eax], bl
mov ebx, dword [ebp - 0x20]
and ebx, 0xff
mov dword [ebp - 0xc], edx
test esi, esi
lea ebx, [ebp + ebx - 0x148]
mov dword [ebp - 0x14], ebx
mov bl, byte [ebx]
mov byte [edx], bl
mov ebx, dword [ebp - 0x14]
mov dl, byte [ebp - 8]
mov byte [ebx], dl
jbe 0x40d3ae
mov edx, dword [ebp - 8]
mov al, byte [eax]
and edx, 0xff
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0x30]
mov bl, byte [edx + esi*2 + 1]
mov dl, byte [edx + esi*2]
add dl, 2
sub bl, 0x3f
shl dl, 4
or bl, dl
mov edx, dword [ebp - 0x24]
mov dl, byte [ebp + edx - 0x148]
add dl, cl
and edx, 0xff
mov cl, byte [ebp + edx - 0x148]
mov edx, dword [ebp - 0xc]
mov dl, byte [edx]
add ecx, edx
mov dl, byte [edi]
mov edi, dword [ebp - 0x24]
add ecx, edx
and ecx, 0xff
xor edx, edx
add eax, edi
mov dl, byte [ebp + ecx - 0x148]
and eax, 0xff
mov cl, byte [ebp + edx - 0x148]
xor bl, cl
mov cl, byte [ebp + eax - 0x148]
xor bl, cl
movsx cx, bl
mov word [ebp + esi*2 - 0x196], cx
mov ebx, dword [ebp - 0x14c]
mov word [ebp - 0x14e], 0
lea edx, [ebp - 0x194]
lea eax, [ebp - 0x658]
push edx
push eax
call fcn.0083e269
lea ecx, [ebp - 0x38]
lea edx, [ebp - 0x458]
push ecx
push 2
push 0
push edx
lea eax, [ebp - 0x858]
push 0x100
push eax
push reloc.WS2_32.dll_bind
call fcn.0040b3a0
lea ecx, [ebp - 0x38]
lea edx, [ebp - 0x458]
push ecx
push 1
push 0
push edx
lea eax, [ebp - 0x658]
push 0x100
push eax
push reloc.WS2_32.dll_bind
call fcn.0040b3a0
mov ecx, dword [ebp - 0x198]
add esp, 0x40
test ecx, ecx
jle 0x40d43d
lea eax, [ebp - 0x1b8]
cmp dword [eax], 0
je 0x40d437
mov ebx, 1
add eax, 4
dec ecx
jne 0x40d42d
mov eax, ebx
pop edi
neg eax
sbb eax, eax
pop esi
and eax, 0x10
pop ebx
mov esp, ebp
pop ebp
ret