Function at 0x40ff0c
Capabilities:
Encode data using xor
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1a0
mov ecx, dword [ebp + 8]
lea esi, [ebp - 0x18]
mov dword [esi - 4], esp
mov dword [esi + 8], 0xffffffff
mov dword [esi + 4], 0x411cd0
mov eax, dword fs:[0]
mov dword [esi], eax
mov dword fs:[0], esi
push dword [ecx + 0x20]
push dword [ecx + 0x24]
call fcn.005ffb20
add esp, 8
push 4
call fcn.005db3dd
add esp, 4
mov dword [esi + 8], 0
mov dword [ebp - 0x148], eax
mov ecx, eax
call fcn.004381ec
mov edi, dword [ebp + 8]
mov eax, dword [edi + 0x1c]
mov edx, dword [edi + 0x30]
mov dword [ebp - 0x10], 0xffffffff
mov esi, dword [ebp - 0x148]
mov ecx, esi
push edx
push eax
call fcn.00438d1a
push 1
push edi
push dword [edi + 0x2c]
call fcn.004114cc
add esp, 0xc
mov bl, byte [edi + 0x10]
test bl, bl
je 0x410024
mov ecx, esi
call fcn.0040fd9c
push 1
push eax
push dword [edi + 0x28]
push dword [edi + 0x24]
push dword [edi + 0x2c]
call fcn.0040b891
add esp, 0x14
test al, al
jne 0x4113c8
push 0
push edi
push dword [edi + 0x2c]
call fcn.004114cc
add esp, 0xc
mov ecx, esi
call fcn.0040fd9c
push 1
push eax
push dword [edi + 0x28]
push dword [edi + 0x24]
push dword [edi + 0x2c]
call fcn.0040b891
add esp, 0x14
test al, al
jne 0x4113c8
push 0
push edi
push dword [edi + 0x2c]
call fcn.004114cc
add esp, 0xc
mov ecx, esi
call fcn.0040fd9c
push 1
push eax
push dword [edi + 0x28]
push dword [edi + 0x24]
push dword [edi + 0x2c]
call fcn.0040b891
add esp, 0x14
jmp 0x4113c8
xorpd xmm0, xmm0
movupd xmmword [ebp - 0x1a8], xmm0
xor eax, eax
mov dword [ebp - 0x174], eax
mov dword [ebp - 0x178], eax
movupd xmmword [ebp - 0x188], xmm0
movupd xmmword [ebp - 0x198], xmm0
mov dword [ebp - 0x1ac], 0x3c
mov dword [ebp - 0x1a0], str.open
push dword [edi + 0x28]
push dword [edi + 0x2c]
call fcn.005ffb20
add esp, 8
mov dword [ebp - 0x19c], eax
mov dword [ebp - 0x198], 0x6800be
mov dword [ebp - 0x190], 1
xorpd xmm0, xmm0
movsd xmm4, qword [0x612658]
movsd xmm5, qword [0x612660]
movsd xmm6, qword [0x612408]
movsd xmm7, qword [0x612668]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [0x612648]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612268]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612650]
divsd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm2, xmm3
mulsd xmm2, xmm4
addsd xmm2, xmm1
movapd xmm0, xmm5
cmpltsd xmm0, xmm1
andpd xmm2, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm2
addsd xmm3, xmm6
ucomisd xmm7, xmm3
ja 0x4100b2
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
mov byte [ebp - 0x3d], bl
jbe 0x410160
pop esp
inc esp
bound edi, qword [edi]
xor eax, 0x703c6c4c
and byte [ebp + 0x2f], bl
inc ecx
pop ecx
xor dword cs:[esi + 0x45], esp
push esp
imul esp, dword [ebp + 0x6b], 0x464b592f
inc ecx
mov eax, 0xbcaab7a9
movsd dword es:[edi], dword [esi]
mov ecx, 0xbba7af9e
stosb byte es:[edi], al
mov cl, 0xa5
mov esp, 0xb2a2baac
lahf
mov bh, 0xa5
mov dh, 0x9e
jmp 0x410a0a
lea edx, [0x410143]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [ebp + eax - 0x144], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x410178
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x410126]
mov dword [ebp - 0x30], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], ecx
shr ecx, 0x10
mov dword [ebp - 0x24], ecx
mov esi, 0xff
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
inc edx
cmp esi, 2
jb 0x4101eb
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, esi
jb 0x4101e4
mov dword [ebp - 0x20], esi
mov esi, 0xc
cmp ecx, 3
ja case.default.0x4101f8
jmp dword [ecx*4 + 0x6126b8]
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x28]
jmp 0x41022a
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x24]
jmp 0x41022a
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x2c]
jmp 0x41024f
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x28]
mov bl, bh
jmp 0x41024f
movzx eax, bl
mov bl, byte [ebp + eax - 0x144]
mov eax, dword [ebp - 0x30]
add eax, ecx
add eax, 0xfffffffc
add bl, byte [eax]
inc ecx
movzx eax, bl
add bl, 0x21
cmp ecx, 0x20
movzx ebx, bl
cmovbe ebx, eax
mov eax, 0
cmova ecx, eax
movzx edi, bl
mov eax, edx
and eax, edi
dec esi
je 0x41027e
cmp eax, dword [ebp - 0x20]
ja 0x4101f3
jmp 0x410285
xor edx, edx
div dword [ebp - 0x20]
mov eax, edx
mov esi, dword [ebp - 0x20]
cmp esi, eax
mov edx, dword [ebp - 0x38]
je 0x4102bc
mov dl, byte [ebp + esi - 0x144]
xor dl, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], dl
xor dl, byte [ebp + eax - 0x144]
mov byte [ebp + eax - 0x144], dl
xor byte [ebp + esi - 0x144], dl
mov edx, dword [ebp - 0x38]
dec esi
jne 0x4101d9
mov bl, byte [ebp - 0x143]
mov al, byte [ebp - 0x13f]
mov byte [ebp - 0x20], al
mov esi, edx
movzx edx, bl
movzx eax, byte [ebp + edi - 0x144]
mov ch, byte [esi]
mov dword [ebp - 0x3c], edx
mov cl, byte [ebp + edx - 0x144]
add cl, byte [ebp - 0x141]
mov dl, byte [esi + 1]
mov byte [ebp - 0x30], dl
mov byte [ebp - 0x28], cl
movzx esi, cl
mov bh, byte [ebp + esi - 0x144]
mov dword [ebp - 0x2c], esi
movzx edi, byte [ebp - 0x13d]
movzx edx, byte [ebp + eax - 0x144]
mov byte [ebp + eax - 0x144], bh
mov bh, byte [ebp + edi - 0x144]
mov byte [ebp + esi - 0x144], bh
inc bl
mov byte [ebp - 0x24], bl
movzx esi, bl
mov bh, byte [ebp + esi - 0x144]
mov byte [ebp + edi - 0x144], bh
mov byte [ebp + esi - 0x144], dl
movzx esi, byte [ebp + edi - 0x144]
movzx edi, byte [ebp + eax - 0x144]
add edi, esi
mov al, byte [ebp - 0x20]
add al, byte [ebp + edx - 0x144]
mov byte [ebp - 0x20], al
movzx esi, al
movzx esi, byte [ebp + esi - 0x144]
add esi, edi
mov al, byte [ebp - 0x30]
add al, 0x63
shl ch, 4
add ch, 0x30
or ch, al
mov eax, dword [ebp - 0x2c]
movzx ebx, byte [ebp + eax - 0x144]
add ebx, edx
mov eax, 0xff
and ebx, eax
mov bl, byte [ebp + ebx - 0x144]
xor bl, ch
and esi, eax
movzx esi, byte [ebp + esi - 0x144]
xor bl, byte [ebp + esi - 0x144]
xor esi, esi
mov dword [ebp - 0x30], esi
mov al, byte [ebp - 0x28]
add al, dl
movzx edi, ch
mov edx, dword [ebp - 0x38]
mov ch, byte [edx + esi*2 + 2]
mov cl, byte [edx + esi*2 + 3]
mov byte [ebp - 0x2c], cl
mov byte [ebp - 0x28], al
movzx esi, al
mov cl, byte [ebp + esi - 0x144]
movzx eax, byte [ebp + edi - 0x144]
mov dword [ebp - 0x34], eax
mov byte [ebp + edi - 0x144], cl
movzx edx, bl
mov cl, byte [ebp + edx - 0x144]
mov byte [ebp + esi - 0x144], cl
mov al, byte [ebp - 0x24]
mov byte [ebp - 0x44], al
inc al
mov byte [ebp - 0x24], al
movzx eax, al
mov cl, byte [ebp + eax - 0x144]
mov byte [ebp + edx - 0x144], cl
mov ebx, dword [ebp - 0x34]
mov byte [ebp + eax - 0x144], bl
movzx eax, byte [ebp + edx - 0x144]
movzx edx, byte [ebp + edi - 0x144]
add edx, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], al
movzx eax, al
movzx eax, byte [ebp + eax - 0x144]
add eax, edx
mov cl, byte [ebp - 0x2c]
add cl, 0x63
shl ch, 4
add ch, 0x30
or ch, cl
movzx edx, byte [ebp + esi - 0x144]
add edx, ebx
mov edi, ebx
mov esi, 0xff
and edx, esi
mov bl, byte [ebp + edx - 0x144]
mov edx, edi
xor bl, ch
and eax, esi
movzx eax, byte [ebp + eax - 0x144]
xor bl, byte [ebp + eax - 0x144]
movsx eax, bl
mov esi, dword [ebp - 0x30]
mov word [ebp + esi*2 - 0x170], ax
inc esi
cmp esi, 2
jne 0x4103b1
mov edi, dword [ebp - 0x38]
mov al, byte [edi + 6]
mov byte [ebp - 0x24], al
mov al, byte [edi + 7]
movzx ecx, ch
mov dword [ebp - 0x30], ecx
mov ah, byte [ebp - 0x28]
add ah, dl
movzx edi, ah
mov bh, byte [ebp + edi - 0x144]
mov edx, dword [ebp - 0x30]
movzx ecx, byte [ebp + edx - 0x144]
mov dword [ebp - 0x28], ecx
mov byte [ebp + edx - 0x144], bh
movzx edx, bl
mov bl, byte [ebp + edx - 0x144]
mov byte [ebp + edi - 0x144], bl
mov bl, byte [ebp - 0x44]
add bl, 2
movzx ecx, bl
mov bl, byte [ebp + ecx - 0x144]
mov byte [ebp + edx - 0x144], bl
mov ebx, dword [ebp - 0x28]
mov byte [ebp + ecx - 0x144], bl
mov ecx, eax
add cl, 0x63
mov al, byte [ebp - 0x24]
shl al, 4
add al, 0x30
or al, cl
movzx ecx, byte [ebp + edi - 0x144]
add ecx, ebx
mov edi, 0xff
and ecx, edi
movzx edi, al
xor al, byte [ebp + ecx - 0x144]
mov byte [ebp - 0x24], al
movzx ecx, byte [ebp + edx - 0x144]
mov edx, dword [ebp - 0x30]
movzx edx, byte [ebp + edx - 0x144]
add edx, ecx
mov al, byte [ebp - 0x20]
add al, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], al
movzx ecx, al
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, edx
mov edx, 0xff
and ecx, edx
movzx ecx, byte [ebp + ecx - 0x144]
mov dl, byte [ebp - 0x24]
xor dl, byte [ebp + ecx - 0x144]
movsx ecx, dl
mov word [ebp - 0x16c], cx
add ah, bl
mov ecx, dword [ebp - 0x38]
mov bl, byte [ecx + 8]
mov cl, byte [ecx + 9]
mov byte [ebp - 0x30], cl
mov byte [ebp - 0x28], ah
movzx ecx, ah
mov dh, byte [ebp + ecx - 0x144]
mov dword [ebp - 0x2c], ecx
movzx eax, byte [ebp + edi - 0x144]
mov dword [ebp - 0x24], eax
mov byte [ebp + edi - 0x144], dh
movzx eax, dl
mov dl, byte [ebp + eax - 0x144]
mov byte [ebp + ecx - 0x144], dl
mov dl, byte [ebp - 0x44]
add dl, 3
movzx edx, dl
mov bh, byte [ebp + edx - 0x144]
mov byte [ebp + eax - 0x144], bh
mov ecx, dword [ebp - 0x24]
mov byte [ebp + edx - 0x144], cl
movzx edx, byte [ebp + eax - 0x144]
movzx eax, byte [ebp + edi - 0x144]
add eax, edx
mov dword [ebp - 0x34], eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + ecx - 0x144]
mov byte [ebp - 0x20], al
movzx edx, al
mov eax, ecx
movzx edi, byte [ebp + edx - 0x144]
add edi, dword [ebp - 0x34]
mov cl, byte [ebp - 0x30]
add cl, 0x63
shl bl, 4
add bl, 0x30
or bl, cl
mov ecx, dword [ebp - 0x2c]
movzx edx, byte [ebp + ecx - 0x144]
add edx, eax
mov ecx, 0xff
and edx, ecx
mov dl, byte [ebp + edx - 0x144]
xor dl, bl
and edi, ecx
movzx edi, byte [ebp + edi - 0x144]
xor dl, byte [ebp + edi - 0x144]
movsx edi, dl
mov word [ebp - 0x16a], di
add dword [ebp - 0x3c], esi
mov edi, 0xfffffffc
mov cl, byte [ebp - 0x28]
add cl, al
movzx eax, bl
mov esi, dword [ebp - 0x38]
mov bl, byte [esi + edi*2 + 0x12]
mov dh, byte [esi + edi*2 + 0x13]
mov esi, eax
mov dword [ebp - 0x2c], eax
movzx eax, byte [ebp + eax - 0x144]
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x28], cl
movzx eax, cl
mov dword [ebp - 0x30], eax
mov bh, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], bh
movzx esi, dl
mov dl, byte [ebp + esi - 0x144]
mov byte [ebp + eax - 0x144], dl
mov ecx, dword [ebp - 0x3c]
add ecx, edi
add ecx, 8
mov eax, 0xff
and ecx, eax
mov dl, byte [ebp + ecx - 0x144]
mov byte [ebp + esi - 0x144], dl
mov eax, dword [ebp - 0x24]
mov byte [ebp + ecx - 0x144], al
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + eax - 0x144]
movzx ecx, byte [ebp + esi - 0x144]
mov eax, dword [ebp - 0x2c]
movzx eax, byte [ebp + eax - 0x144]
add eax, ecx
mov byte [ebp - 0x20], dl
movzx ecx, dl
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, eax
add dh, 0x63
shl bl, 4
add bl, 0x30
or bl, dh
mov eax, dword [ebp - 0x30]
movzx eax, byte [ebp + eax - 0x144]
mov esi, dword [ebp - 0x24]
add eax, esi
mov edx, 0xff
and eax, edx
mov dl, byte [ebp + eax - 0x144]
xor dl, bl
mov eax, 0xff
and ecx, eax
movzx eax, byte [ebp + ecx - 0x144]
xor dl, byte [ebp + eax - 0x144]
movsx eax, dl
mov word [ebp + edi*2 - 0x160], ax
mov eax, esi
inc edi
jne 0x41066a
mov ch, byte [ebp - 0x28]
add ch, al
mov byte [ebp - 0x28], ch
movzx esi, bl
mov eax, dword [ebp - 0x38]
mov cl, byte [eax + 0x12]
mov dh, byte [eax + 0x13]
movzx ebx, ch
mov dword [ebp - 0x2c], ebx
mov ch, byte [ebp + ebx - 0x144]
mov dword [ebp - 0x34], esi
movzx eax, byte [ebp + esi - 0x144]
mov dword [ebp - 0x24], eax
mov byte [ebp + esi - 0x144], ch
movzx esi, dl
mov dl, byte [ebp + esi - 0x144]
mov byte [ebp + ebx - 0x144], dl
mov dword [ebp - 0x30], edi
mov eax, dword [ebp - 0x3c]
add eax, edi
add eax, 8
mov edi, 0xff
and eax, edi
mov dl, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], dl
mov ebx, dword [ebp - 0x24]
mov byte [ebp + eax - 0x144], bl
shl cl, 4
add cl, 0x30
add dh, 0x63
or dh, cl
mov eax, dword [ebp - 0x2c]
movzx eax, byte [ebp + eax - 0x144]
mov ebx, dword [ebp - 0x24]
add eax, ebx
mov edi, 0xff
and eax, edi
movzx ecx, dh
mov dword [ebp - 0x2c], ecx
xor dh, byte [ebp + eax - 0x144]
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], dl
movzx eax, byte [ebp + esi - 0x144]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, eax
movzx eax, dl
movzx eax, byte [ebp + eax - 0x144]
add eax, ecx
and eax, edi
movzx eax, byte [ebp + eax - 0x144]
xor dh, byte [ebp + eax - 0x144]
movsx eax, dh
mov word [ebp - 0x160], ax
mov ch, byte [ebp - 0x28]
add ch, bl
mov byte [ebp - 0x28], ch
mov eax, dword [ebp - 0x38]
mov cl, byte [eax + 0x14]
mov dl, byte [eax + 0x15]
movzx ebx, ch
mov dword [ebp - 0x34], ebx
mov ah, byte [ebp + ebx - 0x144]
mov esi, dword [ebp - 0x2c]
movzx edi, byte [ebp + esi - 0x144]
mov dword [ebp - 0x24], edi
mov byte [ebp + esi - 0x144], ah
movzx esi, dh
mov ah, byte [ebp + esi - 0x144]
mov byte [ebp + ebx - 0x144], ah
mov eax, dword [ebp - 0x3c]
mov edi, dword [ebp - 0x30]
add eax, edi
add eax, 9
mov edi, 0xff
and eax, edi
mov ch, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], ch
mov ebx, dword [ebp - 0x24]
mov byte [ebp + eax - 0x144], bl
shl cl, 4
add cl, 0x30
add dl, 0x63
or dl, cl
mov eax, dword [ebp - 0x34]
movzx eax, byte [ebp + eax - 0x144]
mov ecx, dword [ebp - 0x24]
add eax, ecx
mov ebx, 0xff
and eax, ebx
movzx edi, dl
mov dword [ebp - 0x34], edi
xor dl, byte [ebp + eax - 0x144]
mov dh, byte [ebp - 0x20]
add dh, byte [ebp + ecx - 0x144]
mov byte [ebp - 0x20], dh
movzx eax, byte [ebp + esi - 0x144]
mov ecx, dword [ebp - 0x2c]
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, eax
movzx eax, dh
movzx eax, byte [ebp + eax - 0x144]
add eax, ecx
and eax, ebx
movzx eax, byte [ebp + eax - 0x144]
xor dl, byte [ebp + eax - 0x144]
movsx eax, dl
mov word [ebp - 0x15e], ax
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x30]
add eax, ecx
add eax, 0xa
mov bh, byte [ebp - 0x28]
add bh, byte [ebp - 0x24]
mov ecx, dword [ebp - 0x38]
mov dh, byte [ecx + 0x16]
mov bl, byte [ecx + 0x17]
movzx esi, bh
mov bh, byte [ebp + esi - 0x144]
movzx ecx, byte [ebp + edi - 0x144]
mov byte [ebp + edi - 0x144], bh
movzx edi, dl
mov dword [ebp - 0x28], edi
mov dl, byte [ebp + edi - 0x144]
mov byte [ebp + esi - 0x144], dl
mov edi, 0xff
and eax, edi
mov dl, byte [ebp + eax - 0x144]
mov edi, dword [ebp - 0x28]
mov byte [ebp + edi - 0x144], dl
mov byte [ebp + eax - 0x144], cl
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + ecx - 0x144]
movzx eax, byte [ebp + esi - 0x144]
add eax, ecx
add bl, 0x63
shl dh, 4
add dh, 0x30
or dh, bl
mov esi, 0xff
and eax, esi
xor dh, byte [ebp + eax - 0x144]
movzx eax, byte [ebp + edi - 0x144]
mov ecx, dword [ebp - 0x34]
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, eax
movzx eax, dl
movzx eax, byte [ebp + eax - 0x144]
add eax, ecx
and eax, esi
movzx eax, byte [ebp + eax - 0x144]
xor dh, byte [ebp + eax - 0x144]
movsx eax, dh
mov word [ebp - 0x15c], ax
mov word [ebp - 0x15a], 0
mov dword [ebp - 0x10], 0xffffffff
push 4
call fcn.005db3dd
add esp, 4
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0x10], 1
lea eax, [ebp - 0x170]
lea ecx, [ebp - 0x144]
push eax
call fcn.00406642
mov ecx, dword [ebp - 0x3c]
mov dword [ecx], 0
mov eax, 2
mov dword [ebp - 0x10], eax
push eax
lea eax, [ebp - 0x144]
push eax
call fcn.0044527c
push dword [ebp - 0x12c]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [ebp - 0x130]
cmp ecx, 8
mov esi, dword [ebp - 0x3c]
lea edi, [ebp - 0x144]
jb 0x410aaf
mov eax, dword [ebp - 0x144]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x410aa5
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x4113de
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
xorpd xmm4, xmm4
movsd xmm5, qword [0x612688]
movsd xmm6, qword [0x612690]
movsd xmm7, qword [0x6120f8]
movsd xmm2, qword [0x612698]
xorpd xmm0, xmm0
movapd xmm1, xmm4
mulsd xmm1, qword [0x612670]
mulsd xmm1, xmm4
movapd xmm3, xmm4
mulsd xmm3, xmm4
subsd xmm1, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [0x612678]
mulsd xmm3, xmm4
addsd xmm3, qword [0x612680]
divsd xmm1, xmm3
addsd xmm1, xmm0
movapd xmm3, xmm4
mulsd xmm3, xmm5
addsd xmm3, xmm1
movapd xmm0, xmm6
cmpltsd xmm0, xmm1
andpd xmm3, xmm0
andnpd xmm0, xmm1
orpd xmm0, xmm3
addsd xmm4, xmm7
ucomisd xmm2, xmm4
ja 0x410ad7
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x410b89
adc byte [ebx], 0x8b
adc al, 0x80
push ss
adc dword [0x18811a7f], 0x17811b80
mov dword [edi], edx
test byte [edi + edi*2], bl
sbb al, byte [edx - 0x7ce57ce0]
adc bh, byte [edi + 0x14]
mov fs, word [eax]
jnp 0x410b9a
inc ebx
inc esp
inc edx
popal
outsd dx, dword [esi]
inc edx
insb byte es:[edi], dx
ja 0x410bba
sub eax, 0x49204b3e
pop edx
inc ecx
push edi
xor eax, edi
inc ebp
invalid
lea edx, [0x410b48]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movq mm2, qword [0x612120]
movdqu xmmword [ebp + eax - 0x144], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x410ba1
movsd xmm1, qword [0x612130]
adc byte [0x612130], cl
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x410b68]
mov dword [ebp - 0x24], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], ecx
shr ecx, 0x10
mov dword [ebp - 0x2c], ecx
mov esi, 0xff
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
inc edx
cmp esi, 2
jb 0x410c14
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, esi
jb 0x410c0d
mov dword [ebp - 0x20], esi
mov esi, 0xc
cmp ecx, 3
ja case.default.0x410c21
jmp dword [ecx*4 + 0x6126c8]
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x28]
jmp 0x410c53
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x2c]
jmp 0x410c53
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x30]
jmp 0x410c78
movzx eax, bl
add eax, ebp
add eax, 0xfffffebc
mov ebx, dword [ebp - 0x28]
mov bl, bh
jmp 0x410c78
movzx eax, bl
mov bl, byte [ebp + eax - 0x144]
mov eax, dword [ebp - 0x24]
add eax, ecx
add eax, 0xfffffffc
add bl, byte [eax]
inc ecx
movzx eax, bl
add bl, 0x19
cmp ecx, 0x18
movzx ebx, bl
cmovbe ebx, eax
mov eax, 0
cmova ecx, eax
movzx edi, bl
mov eax, edx
and eax, edi
dec esi
je 0x410ca7
cmp eax, dword [ebp - 0x20]
ja 0x410c1c
jmp 0x410cae
xor edx, edx
div dword [ebp - 0x20]
mov eax, edx
mov esi, dword [ebp - 0x20]
cmp esi, eax
mov edx, dword [ebp - 0x38]
je 0x410ce5
mov dl, byte [ebp + esi - 0x144]
xor dl, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], dl
xor dl, byte [ebp + eax - 0x144]
mov byte [ebp + eax - 0x144], dl
xor byte [ebp + esi - 0x144], dl
mov edx, dword [ebp - 0x38]
dec esi
jne 0x410c02
mov al, byte [ebp - 0x143]
mov ah, byte [ebp - 0x13f]
mov esi, edx
movzx edx, al
movzx ebx, byte [ebp + edi - 0x144]
mov ch, byte [esi]
mov dword [ebp - 0x30], edx
mov cl, byte [ebp + edx - 0x144]
add cl, byte [ebp - 0x141]
mov dl, byte [esi + 1]
mov byte [ebp - 0x24], dl
mov byte [ebp - 0x28], cl
movzx edi, cl
mov cl, byte [ebp + edi - 0x144]
movzx esi, byte [ebp - 0x13d]
mov edx, ebx
mov dword [ebp - 0x20], ebx
movzx ebx, byte [ebp + ebx - 0x144]
mov byte [ebp + edx - 0x144], cl
mov cl, byte [ebp + esi - 0x144]
mov byte [ebp + edi - 0x144], cl
inc al
movzx edx, al
mov al, byte [ebp + edx - 0x144]
mov byte [ebp + esi - 0x144], al
mov byte [ebp + edx - 0x144], bl
movzx edx, byte [ebp + esi - 0x144]
mov esi, dword [ebp - 0x20]
movzx esi, byte [ebp + esi - 0x144]
add esi, edx
add ah, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], ah
movzx edx, ah
movzx edx, byte [ebp + edx - 0x144]
add edx, esi
mov al, byte [ebp - 0x24]
add al, 0xef
shl ch, 4
add ch, 0x10
or ch, al
movzx edi, byte [ebp + edi - 0x144]
add edi, ebx
mov esi, 0xff
and edi, esi
mov al, byte [ebp + edi - 0x144]
xor al, ch
and edx, esi
movzx edx, byte [ebp + edx - 0x144]
xor al, byte [ebp + edx - 0x144]
xor edx, edx
mov cl, byte [ebp - 0x28]
add cl, bl
movzx edi, ch
mov esi, dword [ebp - 0x38]
mov ch, byte [esi + edx*2 + 2]
mov ah, byte [esi + edx*2 + 3]
mov byte [ebp - 0x24], ah
mov dword [ebp - 0x2c], edx
mov byte [ebp - 0x28], cl
movzx esi, cl
mov ah, byte [ebp + esi - 0x144]
movzx ebx, byte [ebp + edi - 0x144]
mov dword [ebp - 0x34], ebx
mov byte [ebp + edi - 0x144], ah
movzx eax, al
mov bl, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], bl
mov ebx, dword [ebp - 0x30]
add ebx, edx
add ebx, 2
mov edx, 0xff
and ebx, edx
mov cl, byte [ebp + ebx - 0x144]
mov byte [ebp + eax - 0x144], cl
mov edx, dword [ebp - 0x34]
mov byte [ebp + ebx - 0x144], dl
movzx eax, byte [ebp + eax - 0x144]
movzx edi, byte [ebp + edi - 0x144]
add edi, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + edx - 0x144]
mov byte [ebp - 0x20], al
movzx eax, al
movzx ebx, byte [ebp + eax - 0x144]
add ebx, edi
mov al, byte [ebp - 0x24]
add al, 0xef
shl ch, 4
add ch, 0x10
or ch, al
movzx eax, byte [ebp + esi - 0x144]
add eax, edx
mov edi, edx
mov edx, 0xff
and eax, edx
mov al, byte [ebp + eax - 0x144]
xor al, ch
and ebx, edx
movzx esi, byte [ebp + ebx - 0x144]
mov ebx, edi
xor al, byte [ebp + esi - 0x144]
mov edx, dword [ebp - 0x2c]
mov byte [ebp + edx - 0x158], al
inc edx
cmp edx, 5
jne 0x410dd3
mov esi, dword [ebp - 0x38]
mov cl, byte [esi + 0xc]
mov ah, byte [esi + 0xd]
mov byte [ebp - 0x24], ah
movzx edi, ch
mov dword [ebp - 0x44], edi
mov ah, byte [ebp - 0x28]
add ah, bl
mov byte [ebp - 0x28], ah
movzx esi, ah
mov dword [ebp - 0x2c], esi
mov ch, byte [ebp + esi - 0x144]
movzx ebx, byte [ebp + edi - 0x144]
mov byte [ebp + edi - 0x144], ch
movzx edi, al
mov al, byte [ebp + edi - 0x144]
mov byte [ebp + esi - 0x144], al
mov eax, dword [ebp - 0x30]
lea esi, [eax + edx]
add esi, 2
mov eax, 0xff
and esi, eax
mov al, byte [ebp + esi - 0x144]
mov byte [ebp + edi - 0x144], al
mov byte [ebp + esi - 0x144], bl
movzx esi, byte [ebp + edi - 0x144]
mov eax, dword [ebp - 0x44]
movzx edi, byte [ebp + eax - 0x144]
add edi, esi
mov al, byte [ebp - 0x20]
add al, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], al
movzx esi, al
mov eax, ebx
movzx ebx, byte [ebp + esi - 0x144]
add ebx, edi
mov ch, byte [ebp - 0x24]
add ch, 0xef
shl cl, 4
add cl, 0x10
or cl, ch
mov esi, dword [ebp - 0x2c]
movzx esi, byte [ebp + esi - 0x144]
add esi, eax
mov edi, 0xff
and esi, edi
mov ch, byte [ebp + esi - 0x144]
xor ch, cl
and ebx, edi
movzx esi, byte [ebp + ebx - 0x144]
xor ch, byte [ebp + esi - 0x144]
mov byte [ebp - 0x153], ch
add dword [ebp - 0x30], edx
xor ebx, ebx
mov dl, byte [ebp - 0x28]
add dl, al
movzx eax, cl
mov esi, dword [ebp - 0x38]
mov edi, ebx
mov cl, byte [esi + ebx*2 + 0xe]
mov bl, byte [esi + ebx*2 + 0xf]
mov esi, eax
mov dword [ebp - 0x34], eax
movzx eax, byte [ebp + eax - 0x144]
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x28], dl
movzx eax, dl
mov dword [ebp - 0x2c], eax
mov bh, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], bh
movzx edx, ch
mov ch, byte [ebp + edx - 0x144]
mov byte [ebp + eax - 0x144], ch
mov esi, dword [ebp - 0x30]
add esi, edi
add esi, 3
mov eax, 0xff
and esi, eax
mov ch, byte [ebp + esi - 0x144]
mov byte [ebp + edx - 0x144], ch
mov eax, dword [ebp - 0x24]
mov byte [ebp + esi - 0x144], al
mov ch, byte [ebp - 0x20]
add ch, byte [ebp + eax - 0x144]
movzx esi, byte [ebp + edx - 0x144]
mov eax, dword [ebp - 0x34]
movzx eax, byte [ebp + eax - 0x144]
add eax, esi
mov byte [ebp - 0x20], ch
movzx esi, ch
movzx esi, byte [ebp + esi - 0x144]
add esi, eax
add bl, 0xef
shl cl, 4
add cl, 0x10
or cl, bl
mov eax, dword [ebp - 0x2c]
movzx eax, byte [ebp + eax - 0x144]
mov ebx, dword [ebp - 0x24]
add eax, ebx
mov edx, 0xff
and eax, edx
mov ch, byte [ebp + eax - 0x144]
xor ch, cl
and esi, edx
movzx eax, byte [ebp + esi - 0x144]
xor ch, byte [ebp + eax - 0x144]
mov eax, ebx
mov byte [ebp + edi - 0x152], ch
inc edi
mov ebx, edi
cmp edi, 6
jne 0x410fa3
mov dl, byte [ebp - 0x28]
add dl, al
mov byte [ebp - 0x28], dl
movzx esi, cl
mov dword [ebp - 0x24], esi
mov eax, dword [ebp - 0x38]
mov cl, byte [eax + 0x1a]
mov al, byte [eax + 0x1b]
mov byte [ebp - 0x34], al
movzx edi, dl
mov al, byte [ebp + edi - 0x144]
movzx edx, byte [ebp + esi - 0x144]
mov byte [ebp + esi - 0x144], al
movzx esi, ch
mov ch, byte [ebp + esi - 0x144]
mov byte [ebp + edi - 0x144], ch
mov dword [ebp - 0x2c], ebx
mov eax, dword [ebp - 0x30]
add eax, ebx
add eax, 3
mov ebx, 0xff
and eax, ebx
mov ch, byte [ebp + eax - 0x144]
mov byte [ebp + esi - 0x144], ch
mov ebx, edx
mov byte [ebp + eax - 0x144], bl
mov al, byte [ebp - 0x34]
add al, 0xef
shl cl, 4
add cl, 0x10
or cl, al
movzx eax, byte [ebp + edi - 0x144]
add eax, edx
mov edi, 0xff
and eax, edi
movzx edx, cl
mov dword [ebp - 0x34], edx
xor cl, byte [ebp + eax - 0x144]
mov ch, byte [ebp - 0x20]
add ch, byte [ebp + ebx - 0x144]
mov byte [ebp - 0x20], ch
movzx eax, byte [ebp + esi - 0x144]
mov edx, dword [ebp - 0x24]
movzx edx, byte [ebp + edx - 0x144]
add edx, eax
movzx eax, ch
movzx eax, byte [ebp + eax - 0x144]
add eax, edx
and eax, edi
movzx eax, byte [ebp + eax - 0x144]
xor cl, byte [ebp + eax - 0x144]
mov dl, byte [ebp - 0x28]
add dl, bl
mov byte [ebp - 0x28], dl
mov byte [ebp - 0x14c], cl
mov esi, dword [ebp - 0x38]
mov al, byte [esi + 0x1c]
mov ah, byte [esi + 0x1d]
movzx edi, dl
mov bh, byte [ebp + edi - 0x144]
mov edx, dword [ebp - 0x34]
movzx esi, byte [ebp + edx - 0x144]
mov byte [ebp + edx - 0x144], bh
movzx ebx, cl
mov cl, byte [ebp + ebx - 0x144]
mov byte [ebp + edi - 0x144], cl
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
add ecx, edx
add ecx, 4
mov edx, 0xff
and ecx, edx
mov dl, byte [ebp + ecx - 0x144]
mov byte [ebp + ebx - 0x144], dl
mov edx, esi
mov byte [ebp + ecx - 0x144], dl
add ah, 0xef
shl al, 4
add al, 0x10
or al, ah
movzx ecx, byte [ebp + edi - 0x144]
add ecx, esi
mov edi, 0xff
and ecx, edi
movzx edx, al
mov dword [ebp - 0x24], edx
xor al, byte [ebp + ecx - 0x144]
movzx ecx, byte [ebp + ebx - 0x144]
mov edx, dword [ebp - 0x34]
movzx edx, byte [ebp + edx - 0x144]
add edx, ecx
mov cl, byte [ebp - 0x20]
add cl, byte [ebp + esi - 0x144]
mov byte [ebp - 0x20], cl
movzx ecx, cl
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, edx
and ecx, edi
movzx ecx, byte [ebp + ecx - 0x144]
xor al, byte [ebp + ecx - 0x144]
mov bl, byte [ebp - 0x28]
mov ecx, esi
add bl, cl
mov ecx, dword [ebp - 0x2c]
mov edx, dword [ebp - 0x30]
add ecx, edx
add ecx, 5
mov byte [ebp - 0x14b], al
mov esi, dword [ebp - 0x38]
mov dl, byte [esi + 0x1e]
mov ah, byte [esi + 0x1f]
movzx esi, bl
mov dh, byte [ebp + esi - 0x144]
mov edi, dword [ebp - 0x24]
movzx ebx, byte [ebp + edi - 0x144]
mov byte [ebp + edi - 0x144], dh
movzx edi, al
mov dword [ebp - 0x28], edi
mov al, byte [ebp + edi - 0x144]
mov byte [ebp + esi - 0x144], al
mov edi, 0xff
and ecx, edi
mov al, byte [ebp + ecx - 0x144]
mov edi, dword [ebp - 0x28]
mov byte [ebp + edi - 0x144], al
mov byte [ebp + ecx - 0x144], bl
mov dh, byte [ebp - 0x20]
add dh, byte [ebp + ebx - 0x144]
movzx ecx, byte [ebp + esi - 0x144]
add ecx, ebx
add ah, 0xef
shl dl, 4
add dl, 0x10
or dl, ah
mov esi, 0xff
and ecx, esi
xor dl, byte [ebp + ecx - 0x144]
movzx eax, byte [ebp + edi - 0x144]
mov ecx, dword [ebp - 0x24]
movzx ecx, byte [ebp + ecx - 0x144]
add ecx, eax
movzx eax, dh
movzx eax, byte [ebp + eax - 0x144]
add eax, ecx
and eax, esi
movzx eax, byte [ebp + eax - 0x144]
xor dl, byte [ebp + eax - 0x144]
mov byte [ebp - 0x14a], dl
mov byte [ebp - 0x149], 0
mov dword [ebp - 0x10], 0xffffffff
mov esi, dword [ebp - 0x3c]
lea edi, [ebp - 0x144]
lea eax, [ebp - 0x158]
mov ecx, edi
push eax
call fcn.00401278
mov dword [ebp - 0x10], 3
mov ecx, esi
push 0
push edi
call fcn.004454fe
mov esi, eax
push dword [ebp - 0x12c]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [ebp - 0x130]
cmp ecx, 8
mov edi, dword [ebp - 0x148]
mov bl, byte [ebp - 0x3d]
jb 0x4113a8
mov eax, dword [ebp - 0x144]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x41139e
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x4113de
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x1ac]
push eax
call esi
mov ecx, edi
call fcn.004381f6
push edi
call fcn.005db40d
add esp, 4
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, ebx
add esp, 0x1a0
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.005f5844
nop
push ebp
sub esp, 0x14
add ebp, 0xc
push dword [ebp - 0x12c]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [ebp - 0x130]
cmp ecx, 8
jb 0x411438
mov eax, dword [ebp - 0x144]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x41142e
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x41143d
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x14
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x14
add ebp, 0xc
push dword [ebp - 0x12c]
call fcn.005fd8d5
add esp, 4
mov ecx, dword [ebp - 0x130]
cmp ecx, 8
jb 0x411496
mov eax, dword [ebp - 0x144]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x41148c
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x41149b
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x14
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x14
add ebp, 0xc
push dword [ebp - 0x3c]
call fcn.005db40d
add esp, 0x18
pop ebp
ret