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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x1dc
mov dword [ebp - 0x40], ecx
lea eax, [ebp - 0x18]
mov dword [eax - 4], esp
mov dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x423e30
mov ecx, dword fs:[0]
mov dword [eax], ecx
mov dword fs:[0], eax
xor ecx, ecx
mov dword [ebp - 0x48], ecx
mov dword [eax + 8], ecx
push 0x30
call fcn.005db3dd
add esp, 4
mov esi, eax
mov eax, dword [0x612c90]
mov dword [esi + 0x10], eax
movups xmm0, xmmword [0x612c80]
movups xmmword [esi], xmm0
movupd xmm0, xmmword [0x612ca8]
movupd xmmword [esi + 0x14], xmm0
mov eax, dword [0x612cb8]
mov dword [esi + 0x24], eax
xor eax, eax
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], eax
push 0x40
call fcn.005fe07f
add esp, 4
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], 0x10
mov dword [ebp - 0x20], eax
mov dword [eax], esi
push 0x30
call fcn.005db3dd
add esp, 4
mov ecx, dword [0x612ca4]
mov dword [eax + 0x10], ecx
movups xmm0, xmmword [0x612c94]
movups xmmword [eax], xmm0
movupd xmm0, xmmword [0x612ca8]
movupd xmmword [eax + 0x14], xmm0
mov ecx, dword [0x612cb8]
mov dword [eax + 0x24], ecx
xor ecx, ecx
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 4], eax
push 0x30
call fcn.005db3dd
add esp, 4
mov ecx, dword [0x612ccc]
mov dword [eax + 0x10], ecx
movups xmm0, xmmword [0x612cbc]
movups xmmword [eax], xmm0
movupd xmm0, xmmword [0x612ce4]
movupd xmmword [eax + 0x14], xmm0
mov ecx, dword [0x612cf4]
mov dword [eax + 0x24], ecx
xor ecx, ecx
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ecx
mov ecx, dword [ebp - 0x20]
mov dword [ecx + 8], eax
push 0x30
call fcn.005db3dd
add esp, 4
mov ecx, dword [0x612ce0]
mov dword [eax + 0x10], ecx
movups xmm0, xmmword [0x612cd0]
movups xmmword [eax], xmm0
movupd xmm0, xmmword [0x612ce4]
movupd xmmword [eax + 0x14], xmm0
mov ecx, dword [0x612cf4]
mov dword [eax + 0x24], ecx
xor ecx, ecx
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ecx
mov edx, dword [ebp - 0x20]
mov dword [edx + 0xc], eax
mov dword [ebp - 0x50], 4
mov dword [ebp - 0x168], ecx
mov dword [ebp - 0x158], ecx
mov dword [ebp - 0x154], 7
mov word [ebp - 0x168], 0
xorpd xmm0, xmm0
movsd xmm4, qword [0x612e90]
movsd xmm5, qword [0x612e98]
movsd xmm6, qword [0x612280]
movsd xmm7, qword [0x612ea0]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [0x612e80]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x612570]
mulsd xmm2, xmm3
addsd xmm2, qword [0x612e88]
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 0x422cd5
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
mov ecx, dword [ebp - 0x40]
jbe 0x422d9f
cmp dl, cl
cmp cl, cl
cmp al, 0xc8
inc eax
salc
cmp ecx, ecx
inc eax
aad 0x38
salc
xor edi, ecx
cmp edx, edi
cmp eax, 0x39c932d4
retf
lea eax, [0x422d49]
mov dword [ebp - 0x34], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
movdqu xmmword [ebp + eax - 0x150], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x422dba
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x422d81]
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 - 0x28], eax
mov dword [ebp - 0x2c], ecx
shr ecx, 0x10
mov dword [ebp - 0x24], ecx
mov esi, 0xff
xor ebx, ebx
xor ecx, ecx
xor edx, edx
inc edx
cmp esi, 2
jb 0x422e2a
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, esi
jb 0x422e23
mov dword [ebp - 0x20], esi
mov esi, 0xc
cmp ecx, 3
ja case.default.0x422e37
jmp dword [ecx*4 + 0x612f58]
movzx eax, bl
lea edi, [eax + ebp]
add edi, 0xfffffeb0
mov eax, dword [ebp - 0x2c]
jmp 0x422e82
movzx eax, bl
lea edi, [eax + ebp]
add edi, 0xfffffeb0
mov eax, dword [ebp - 0x24]
jmp 0x422e82
movzx eax, bl
lea edi, [eax + ebp]
add edi, 0xfffffeb0
mov eax, dword [ebp - 0x2c]
mov al, ah
jmp 0x422e96
movzx eax, bl
lea edi, [eax + ebp]
add edi, 0xfffffeb0
mov eax, dword [ebp - 0x28]
jmp 0x422e96
movzx eax, bl
mov al, byte [ebp + eax - 0x150]
mov edi, dword [ebp - 0x30]
add edi, ecx
add edi, 0xfffffffc
add al, byte [edi]
inc ecx
movzx edi, al
add al, 0x1d
cmp ecx, 0x1c
mov ebx, 0
cmova ecx, ebx
movzx ebx, al
cmovbe ebx, edi
movzx edi, bl
mov eax, edx
and eax, edi
dec esi
je 0x422ec4
cmp eax, dword [ebp - 0x20]
ja 0x422e32
jmp 0x422ecb
xor edx, edx
div dword [ebp - 0x20]
mov eax, edx
mov esi, dword [ebp - 0x20]
cmp esi, eax
je 0x422efc
mov dl, byte [ebp + esi - 0x150]
xor dl, byte [ebp + eax - 0x150]
mov byte [ebp + esi - 0x150], dl
xor dl, byte [ebp + eax - 0x150]
mov byte [ebp + eax - 0x150], dl
xor byte [ebp + esi - 0x150], dl
dec esi
jne 0x422e18
mov al, byte [ebp - 0x14f]
mov byte [ebp - 0x30], al
mov cl, byte [ebp - 0x14b]
mov byte [ebp - 0x20], cl
movzx eax, al
movzx edx, byte [ebp + edi - 0x150]
mov esi, dword [ebp - 0x34]
mov cl, byte [esi]
mov byte [ebp - 0x28], cl
mov dword [ebp - 0x3c], eax
mov al, byte [ebp + eax - 0x150]
add al, byte [ebp - 0x14d]
mov byte [ebp - 0x2c], al
mov cl, byte [esi + 1]
mov byte [ebp - 0x24], cl
movzx ebx, al
mov ch, byte [ebp + ebx - 0x150]
movzx edi, byte [ebp - 0x149]
mov esi, edx
movzx edx, byte [ebp + edx - 0x150]
mov byte [ebp + esi - 0x150], ch
mov ch, byte [ebp + edi - 0x150]
mov byte [ebp + ebx - 0x150], ch
mov ch, byte [ebp - 0x30]
inc ch
movzx eax, ch
mov ch, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], ch
mov byte [ebp + eax - 0x150], dl
movzx eax, byte [ebp + edi - 0x150]
movzx edi, byte [ebp + esi - 0x150]
add edi, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + edx - 0x150]
mov byte [ebp - 0x20], al
movzx eax, al
movzx ecx, byte [ebp + eax - 0x150]
add ecx, edi
mov ah, byte [ebp - 0x24]
add ah, 0x38
mov al, byte [ebp - 0x28]
shl al, 4
add al, 0xf0
or al, ah
movzx ebx, byte [ebp + ebx - 0x150]
add ebx, edx
mov esi, edx
mov edi, 0xff
and ebx, edi
mov dh, byte [ebp + ebx - 0x150]
xor dh, al
mov ebx, eax
and ecx, edi
movzx eax, byte [ebp + ecx - 0x150]
xor dh, byte [ebp + eax - 0x150]
mov dl, byte [ebp - 0x2c]
mov eax, esi
add dl, al
mov byte [ebp - 0x2c], dl
mov esi, dword [ebp - 0x34]
mov ch, byte [esi + 2]
mov al, byte [esi + 3]
mov byte [ebp - 0x28], al
movzx edi, bl
movzx eax, dl
mov dword [ebp - 0x24], eax
mov cl, byte [ebp + eax - 0x150]
movzx esi, byte [ebp + edi - 0x150]
mov byte [ebp + edi - 0x150], cl
movzx ebx, dh
mov cl, byte [ebp + ebx - 0x150]
mov byte [ebp + eax - 0x150], cl
mov cl, byte [ebp - 0x30]
add cl, 2
movzx eax, cl
mov cl, byte [ebp + eax - 0x150]
mov byte [ebp + ebx - 0x150], cl
mov edx, esi
mov byte [ebp + eax - 0x150], dl
movzx eax, byte [ebp + ebx - 0x150]
movzx ebx, byte [ebp + edi - 0x150]
add ebx, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + esi - 0x150]
mov byte [ebp - 0x20], al
movzx eax, al
movzx eax, byte [ebp + eax - 0x150]
add eax, ebx
mov cl, byte [ebp - 0x28]
add cl, 0x38
shl ch, 4
add ch, 0xf0
or ch, cl
mov esi, dword [ebp - 0x24]
movzx ebx, byte [ebp + esi - 0x150]
add ebx, edx
mov esi, edx
mov edx, 0xff
and ebx, edx
mov bl, byte [ebp + ebx - 0x150]
xor bl, ch
and eax, edx
movzx eax, byte [ebp + eax - 0x150]
xor bl, byte [ebp + eax - 0x150]
movsx eax, bl
mov word [ebp - 0x1a0], ax
mov cl, byte [ebp - 0x2c]
mov eax, esi
add cl, al
mov eax, dword [ebp - 0x34]
mov dh, byte [eax + 4]
mov dl, byte [eax + 5]
movzx eax, ch
mov dword [ebp - 0x24], eax
mov byte [ebp - 0x2c], cl
movzx esi, cl
mov dword [ebp - 0x28], esi
mov bh, byte [ebp + esi - 0x150]
movzx ecx, byte [ebp + eax - 0x150]
mov byte [ebp + eax - 0x150], bh
movzx edi, bl
mov al, byte [ebp + edi - 0x150]
mov byte [ebp + esi - 0x150], al
mov al, byte [ebp - 0x30]
add al, 3
movzx eax, al
mov bl, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], bl
mov byte [ebp + eax - 0x150], cl
movzx eax, byte [ebp + edi - 0x150]
mov esi, dword [ebp - 0x24]
movzx ebx, byte [ebp + esi - 0x150]
add ebx, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + ecx - 0x150]
mov byte [ebp - 0x20], al
movzx eax, al
movzx esi, byte [ebp + eax - 0x150]
add esi, ebx
mov ebx, ecx
add dl, 0x38
shl dh, 4
add dh, 0xf0
or dh, dl
mov eax, dword [ebp - 0x28]
movzx eax, byte [ebp + eax - 0x150]
add eax, ecx
mov ecx, 0xff
and eax, ecx
mov ah, byte [ebp + eax - 0x150]
xor ah, dh
and esi, ecx
movzx esi, byte [ebp + esi - 0x150]
xor ah, byte [ebp + esi - 0x150]
movsx esi, ah
mov word [ebp - 0x19e], si
mov edi, 0xfffffff5
mov cl, byte [ebp - 0x2c]
add cl, bl
mov ebx, dword [ebp - 0x34]
mov al, byte [ebx + edi*2 + 0x1c]
mov byte [ebp - 0x24], al
movzx esi, dh
mov dword [ebp - 0x28], esi
mov dh, byte [ebx + edi*2 + 0x1d]
movzx ebx, byte [ebp + esi - 0x150]
mov dword [ebp - 0x38], ebx
mov byte [ebp - 0x2c], cl
movzx ebx, cl
mov dword [ebp - 0x30], ebx
mov dl, byte [ebp + ebx - 0x150]
mov byte [ebp + esi - 0x150], dl
movzx ecx, ah
mov dl, byte [ebp + ecx - 0x150]
mov byte [ebp + ebx - 0x150], dl
mov ebx, dword [ebp - 0x3c]
add ebx, edi
add ebx, 0xf
mov esi, 0xff
and ebx, esi
mov dl, byte [ebp + ebx - 0x150]
mov byte [ebp + ecx - 0x150], dl
mov eax, dword [ebp - 0x38]
mov byte [ebp + ebx - 0x150], al
mov ebx, eax
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + eax - 0x150]
movzx ecx, byte [ebp + ecx - 0x150]
mov esi, dword [ebp - 0x28]
movzx esi, byte [ebp + esi - 0x150]
add esi, ecx
mov byte [ebp - 0x20], dl
movzx ecx, dl
movzx ecx, byte [ebp + ecx - 0x150]
add ecx, esi
mov al, byte [ebp - 0x24]
shl al, 4
add al, 0xf0
add dh, 0x38
or dh, al
mov eax, dword [ebp - 0x30]
movzx eax, byte [ebp + eax - 0x150]
add eax, ebx
mov esi, 0xff
and eax, esi
mov ah, byte [ebp + eax - 0x150]
xor ah, dh
and ecx, esi
movzx ecx, byte [ebp + ecx - 0x150]
xor ah, byte [ebp + ecx - 0x150]
movsx ecx, ah
mov word [ebp + edi*2 - 0x186], cx
inc edi
jne 0x4231af
mov ecx, dword [ebp - 0x34]
mov al, byte [ecx + 0x1c]
mov byte [ebp - 0x30], al
mov al, byte [ecx + 0x1d]
mov byte [ebp - 0x24], al
mov ecx, ebx
mov bh, byte [ebp - 0x2c]
add bh, cl
movzx edx, dh
mov dword [ebp - 0x38], edx
movzx esi, bh
mov al, byte [ebp + esi - 0x150]
movzx ecx, byte [ebp + edx - 0x150]
mov dword [ebp - 0x28], ecx
mov byte [ebp + edx - 0x150], al
movzx ecx, ah
mov ah, byte [ebp + ecx - 0x150]
mov dword [ebp - 0x44], ecx
mov byte [ebp + esi - 0x150], ah
mov eax, dword [ebp - 0x3c]
add eax, edi
add eax, 0xf
mov edx, 0xff
and eax, edx
mov dh, byte [ebp + eax - 0x150]
mov byte [ebp + ecx - 0x150], dh
mov ecx, dword [ebp - 0x28]
mov byte [ebp + eax - 0x150], cl
mov al, byte [ebp - 0x30]
shl al, 4
add al, 0xf0
mov dl, byte [ebp - 0x24]
add dl, 0x38
or dl, al
movzx eax, byte [ebp + esi - 0x150]
add eax, ecx
mov esi, 0xff
and eax, esi
movzx esi, dl
mov dword [ebp - 0x2c], esi
xor dl, byte [ebp + eax - 0x150]
mov bl, byte [ebp - 0x20]
add bl, byte [ebp + ecx - 0x150]
mov eax, dword [ebp - 0x44]
movzx eax, byte [ebp + eax - 0x150]
mov ecx, dword [ebp - 0x38]
movzx ecx, byte [ebp + ecx - 0x150]
add ecx, eax
movzx eax, bl
movzx eax, byte [ebp + eax - 0x150]
add eax, ecx
mov ecx, 0xff
and eax, ecx
movzx eax, byte [ebp + eax - 0x150]
xor dl, byte [ebp + eax - 0x150]
mov byte [ebp - 0x24], dl
movsx eax, dl
mov word [ebp - 0x186], ax
mov ecx, dword [ebp - 0x3c]
lea eax, [ecx + edi]
mov dword [ebp - 0x30], eax
lea esi, [ecx + edi]
add esi, 0x10
add bh, byte [ebp - 0x28]
mov ecx, dword [ebp - 0x34]
mov ah, byte [ecx + 0x1e]
mov al, byte [ecx + 0x1f]
mov byte [ebp - 0x3c], al
movzx ecx, bh
mov al, byte [ebp + ecx - 0x150]
mov dword [ebp - 0x38], ecx
mov edi, dword [ebp - 0x2c]
movzx edx, byte [ebp + edi - 0x150]
mov dword [ebp - 0x28], edx
mov byte [ebp + edi - 0x150], al
movzx edi, byte [ebp - 0x24]
mov dh, byte [ebp + edi - 0x150]
mov byte [ebp + ecx - 0x150], dh
mov ecx, 0xff
and esi, ecx
mov dh, byte [ebp + esi - 0x150]
mov byte [ebp + edi - 0x150], dh
mov ecx, dword [ebp - 0x28]
mov byte [ebp + esi - 0x150], cl
movzx edi, byte [ebp + edi - 0x150]
mov esi, dword [ebp - 0x2c]
movzx edx, byte [ebp + esi - 0x150]
add edx, edi
add bl, byte [ebp + ecx - 0x150]
mov byte [ebp - 0x20], bl
movzx esi, bl
movzx esi, byte [ebp + esi - 0x150]
add esi, edx
mov al, byte [ebp - 0x3c]
add al, 0x38
shl ah, 4
add ah, 0xf0
or ah, al
mov edx, dword [ebp - 0x38]
movzx edi, byte [ebp + edx - 0x150]
add edi, ecx
mov ecx, 0xff
and edi, ecx
mov dh, byte [ebp + edi - 0x150]
xor dh, ah
and esi, ecx
movzx esi, byte [ebp + esi - 0x150]
xor dh, byte [ebp + esi - 0x150]
movsx esi, dh
mov word [ebp - 0x184], si
mov ecx, dword [ebp - 0x30]
add cl, 0x11
mov dword [ebp - 0x30], ecx
xor esi, esi
mov ecx, dword [ebp - 0x34]
add bh, byte [ebp - 0x28]
mov byte [ebp - 0x2c], bh
mov al, byte [ecx + esi*2 + 0x20]
mov byte [ebp - 0x24], al
movzx edi, ah
mov al, byte [ecx + esi*2 + 0x21]
mov byte [ebp - 0x38], al
movzx eax, byte [ebp + edi - 0x150]
mov dword [ebp - 0x28], eax
movzx eax, bh
mov dword [ebp - 0x3c], eax
mov dl, byte [ebp + eax - 0x150]
mov byte [ebp + edi - 0x150], dl
movzx edx, dh
mov bl, byte [ebp + edx - 0x150]
mov byte [ebp + eax - 0x150], bl
movzx ebx, byte [ebp - 0x30]
mov cl, byte [ebp + ebx - 0x150]
mov byte [ebp + edx - 0x150], cl
mov eax, dword [ebp - 0x28]
mov byte [ebp + ebx - 0x150], al
mov bl, byte [ebp - 0x20]
add bl, byte [ebp + eax - 0x150]
movzx ecx, byte [ebp + edx - 0x150]
movzx edx, byte [ebp + edi - 0x150]
add edx, ecx
mov byte [ebp - 0x20], bl
movzx ecx, bl
movzx ecx, byte [ebp + ecx - 0x150]
add ecx, edx
mov dl, byte [ebp - 0x24]
shl dl, 4
add dl, 0xf0
mov bl, byte [ebp - 0x38]
add bl, 0x38
or bl, dl
mov edx, dword [ebp - 0x3c]
movzx edx, byte [ebp + edx - 0x150]
add edx, eax
mov edi, 0xff
and edx, edi
mov dh, byte [ebp + edx - 0x150]
xor dh, bl
mov ah, bl
and ecx, edi
movzx ecx, byte [ebp + ecx - 0x150]
xor dh, byte [ebp + ecx - 0x150]
movsx ecx, dh
mov word [ebp + esi*2 - 0x182], cx
mov ecx, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x30]
inc bl
mov dword [ebp - 0x30], ebx
mov bh, byte [ebp - 0x2c]
inc esi
cmp esi, 0xd
jne 0x423483
mov word [ebp - 0x16a], 0
mov ecx, dword [ebp - 0x40]
xorpd xmm4, xmm4
movsd xmm5, qword [0x612ec0]
movsd xmm6, qword [0x612ec8]
movsd xmm7, qword [0x612408]
movsd xmm2, qword [0x612ed0]
xorpd xmm0, xmm0
movapd xmm1, xmm4
mulsd xmm1, qword [0x612ea8]
mulsd xmm1, xmm4
movapd xmm3, xmm4
mulsd xmm3, xmm4
subsd xmm1, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [0x612eb0]
mulsd xmm3, xmm4
addsd xmm3, qword [0x612eb8]
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 0x4235aa
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x42368f
dec esi
aas
inc ebx
push edx
sub byte [esi + 0x66], bl
sub word [edx + 0x29], ax
inc ebp
pop eax
dec esp
jb 0x423699
dec ecx
jo 0x42367c
jge 0x4236a3
xor al, 0x5e
and al, 0x56
jo 0x423682
outsb dx, byte [esi]
jb 0x42369f
invalid
invalid
popal
mov dword [ebp - 0x10], 1
jmp 0x423bd6
lea edx, [0x42363b]
movdqa xmm1, xmmword [0x612110]
xor eax, eax
adc byte [ecx], ah
popal
add byte [ecx], dh
shl byte [esi + 0xf], 0x6f
adc eax, 0x612120
movdqa xmm2, xmmword [0x612120]
and byte [ecx], ah
popal
add bl, dh
movq qword [ebp + eax - 0x150], mm1
movdqu xmmword [ebp + eax - 0x150], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x4236a7
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x42361b]
mov dword [ebp - 0x28], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x2c], ecx
shr ecx, 0x10
mov dword [ebp - 0x34], ecx
mov esi, 0xff
xor ecx, ecx
xor ebx, ebx
mov dword [ebp - 0x30], edx
xor edx, edx
inc edx
cmp esi, 2
jb 0x42371a
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, esi
jb 0x423713
mov dword [ebp - 0x20], esi
mov esi, 0xc
cmp ecx, 3
ja case.default.0x423727
jmp dword [ecx*4 + 0x612f68]
movzx eax, bl
add eax, ebp
add eax, 0xfffffeb0
mov ebx, dword [ebp - 0x2c]
jmp 0x42376a
movzx eax, bl
add eax, ebp
add eax, 0xfffffeb0
mov ebx, dword [ebp - 0x34]
jmp 0x42376a
movzx eax, bl
add eax, ebp
add eax, 0xfffffeb0
mov ebx, dword [ebp - 0x2c]
mov bl, bh
jmp 0x42377e
movzx eax, bl
add eax, ebp
add eax, 0xfffffeb0
mov ebx, dword [ebp - 0x24]
jmp 0x42377e
movzx eax, bl
mov bl, byte [ebp + eax - 0x150]
mov eax, dword [ebp - 0x28]
add eax, ecx
add eax, 0xfffffffc
add bl, byte [eax]
inc ecx
movzx eax, bl
add bl, 0x24
cmp ecx, 0x23
movzx ebx, bl
cmovbe ebx, eax
mov eax, 0
cmova ecx, eax
movzx edi, bl
mov eax, edx
and eax, edi
dec esi
je 0x4237ad
cmp eax, dword [ebp - 0x20]
ja 0x423722
jmp 0x4237b4
xor edx, edx
div dword [ebp - 0x20]
mov eax, edx
mov esi, dword [ebp - 0x20]
cmp esi, eax
mov edx, dword [ebp - 0x30]
je 0x4237eb
mov dl, byte [ebp + esi - 0x150]
xor dl, byte [ebp + eax - 0x150]
mov byte [ebp + esi - 0x150], dl
xor dl, byte [ebp + eax - 0x150]
mov byte [ebp + eax - 0x150], dl
xor byte [ebp + esi - 0x150], dl
mov edx, dword [ebp - 0x30]
dec esi
jne 0x423708
movzx ebx, byte [ebp - 0x14f]
mov al, byte [ebp - 0x14b]
mov byte [ebp - 0x20], al
movzx eax, byte [ebp + edi - 0x150]
mov dword [ebp - 0x28], eax
mov cl, byte [edx]
mov al, byte [edx + 1]
mov byte [ebp - 0x34], al
mov dl, byte [ebp + ebx - 0x150]
add dl, byte [ebp - 0x14d]
mov byte [ebp - 0x2c], dl
movzx eax, dl
mov ch, byte [ebp + eax - 0x150]
mov dword [ebp - 0x38], eax
movzx edi, byte [ebp - 0x149]
mov edx, dword [ebp - 0x28]
movzx esi, byte [ebp + edx - 0x150]
mov dword [ebp - 0x24], esi
mov byte [ebp + edx - 0x150], ch
mov dh, byte [ebp + edi - 0x150]
mov byte [ebp + eax - 0x150], dh
mov dh, bl
inc dh
movzx esi, dh
mov dh, byte [ebp + esi - 0x150]
mov byte [ebp + edi - 0x150], dh
mov eax, dword [ebp - 0x24]
mov byte [ebp + esi - 0x150], al
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + eax - 0x150]
movzx esi, byte [ebp + edi - 0x150]
mov edi, dword [ebp - 0x28]
movzx edi, byte [ebp + edi - 0x150]
add edi, esi
mov byte [ebp - 0x20], dl
movzx esi, dl
movzx eax, byte [ebp + esi - 0x150]
add eax, edi
mov dl, byte [ebp - 0x34]
add dl, 0xa1
shl cl, 4
add cl, 0x30
or cl, dl
mov edx, dword [ebp - 0x38]
movzx edi, byte [ebp + edx - 0x150]
mov edx, dword [ebp - 0x24]
mov esi, edx
add edi, edx
mov edx, 0xff
and edi, edx
mov dh, byte [ebp + edi - 0x150]
xor dh, cl
mov edi, 0xff
and eax, edi
movzx edi, byte [ebp + eax - 0x150]
xor dh, byte [ebp + edi - 0x150]
add bl, 3
xor edi, edi
mov ah, bl
mov byte [ebp - 0x34], bl
mov al, byte [ebp - 0x2c]
mov ebx, esi
add al, bl
mov ebx, edi
mov dword [ebp - 0x28], edi
movzx edi, cl
mov esi, dword [ebp - 0x30]
mov cl, byte [esi + ebx*2 + 2]
mov dl, byte [esi + ebx*2 + 3]
mov byte [ebp - 0x24], dl
mov byte [ebp - 0x2c], al
movzx esi, al
mov dl, byte [ebp + esi - 0x150]
movzx ebx, byte [ebp + edi - 0x150]
mov byte [ebp + edi - 0x150], dl
movzx edx, dh
mov al, byte [ebp + edx - 0x150]
mov byte [ebp + esi - 0x150], al
mov al, ah
dec al
movzx eax, al
mov ch, byte [ebp + eax - 0x150]
mov byte [ebp + edx - 0x150], ch
mov byte [ebp + eax - 0x150], bl
movzx eax, byte [ebp + edx - 0x150]
movzx edx, byte [ebp + edi - 0x150]
add edx, eax
mov al, byte [ebp - 0x20]
add al, byte [ebp + ebx - 0x150]
mov byte [ebp - 0x20], al
movzx eax, al
movzx eax, byte [ebp + eax - 0x150]
add eax, edx
mov dl, byte [ebp - 0x24]
add dl, 0xa1
shl cl, 4
add cl, 0x30
or cl, dl
movzx edx, byte [ebp + esi - 0x150]
mov esi, ebx
add edx, ebx
mov edi, 0xff
and edx, edi
mov dh, byte [ebp + edx - 0x150]
mov dl, byte [ebp - 0x34]
xor dh, cl
and eax, edi
movzx eax, byte [ebp + eax - 0x150]
xor dh, byte [ebp + eax - 0x150]
movsx eax, dh
mov edi, dword [ebp - 0x28]
mov word [ebp + edi*2 - 0x1e8], ax
inc edi
mov ebx, edx
inc bl
cmp edi, 0x10
jne 0x4238f5
mov dword [ebp - 0x28], ebx
mov eax, dword [ebp - 0x30]
mov ch, byte [eax + 0x22]
mov byte [ebp - 0x24], ch
mov al, byte [eax + 0x23]
mov byte [ebp - 0x3c], al
movzx edi, cl
mov al, byte [ebp - 0x2c]
mov ecx, esi
add al, cl
mov esi, edi
mov dword [ebp - 0x38], edi
movzx ebx, byte [ebp + edi - 0x150]
mov byte [ebp - 0x2c], al
movzx edi, al
mov cl, byte [ebp + edi - 0x150]
mov byte [ebp + esi - 0x150], cl
movzx eax, dh
mov dh, byte [ebp - 0x24]
mov cl, byte [ebp + eax - 0x150]
mov dword [ebp - 0x44], eax
mov byte [ebp + edi - 0x150], cl
movzx esi, dl
mov cl, byte [ebp + esi - 0x150]
mov byte [ebp + eax - 0x150], cl
mov byte [ebp + esi - 0x150], bl
mov al, byte [ebp - 0x3c]
add al, 0xa1
shl dh, 4
add dh, 0x30
or dh, al
mov al, byte [ebp - 0x20]
add al, byte [ebp + ebx - 0x150]
movzx ecx, byte [ebp + edi - 0x150]
add ecx, ebx
mov dword [ebp - 0x24], ecx
mov ecx, dword [ebp - 0x44]
movzx esi, byte [ebp + ecx - 0x150]
mov ecx, dword [ebp - 0x38]
movzx ecx, byte [ebp + ecx - 0x150]
add ecx, esi
mov byte [ebp - 0x20], al
movzx esi, al
movzx edi, byte [ebp + esi - 0x150]
add edi, ecx
mov eax, 0xff
mov ecx, dword [ebp - 0x24]
and ecx, eax
mov cl, byte [ebp + ecx - 0x150]
xor cl, dh
and edi, eax
movzx edi, byte [ebp + edi - 0x150]
xor cl, byte [ebp + edi - 0x150]
movsx edi, cl
mov word [ebp - 0x1c8], di
xor edi, edi
mov al, byte [ebp - 0x2c]
add al, bl
movzx esi, dh
mov ebx, dword [ebp - 0x30]
mov dh, byte [ebx + edi + 0x24]
mov dl, byte [ebx + edi + 0x25]
mov byte [ebp - 0x34], dl
movzx ebx, byte [ebp + esi - 0x150]
mov dword [ebp - 0x24], ebx
mov byte [ebp - 0x2c], al
movzx eax, al
mov dword [ebp - 0x38], eax
mov ch, byte [ebp + eax - 0x150]
mov byte [ebp + esi - 0x150], ch
movzx ecx, cl
mov bl, byte [ebp + ecx - 0x150]
mov byte [ebp + eax - 0x150], bl
movzx ebx, byte [ebp - 0x28]
mov dl, byte [ebp + ebx - 0x150]
mov byte [ebp + ecx - 0x150], dl
mov eax, dword [ebp - 0x24]
mov byte [ebp + ebx - 0x150], al
mov dl, byte [ebp - 0x20]
add dl, byte [ebp + eax - 0x150]
movzx ecx, byte [ebp + ecx - 0x150]
movzx esi, byte [ebp + esi - 0x150]
add esi, ecx
mov byte [ebp - 0x20], dl
movzx ecx, dl
movzx ebx, byte [ebp + ecx - 0x150]
add ebx, esi
mov al, byte [ebp - 0x34]
add al, 0xa1
shl dh, 4
add dh, 0x30
or dh, al
mov eax, dword [ebp - 0x38]
movzx eax, byte [ebp + eax - 0x150]
mov esi, dword [ebp - 0x24]
add eax, esi
mov ecx, 0xff
and eax, ecx
mov cl, byte [ebp + eax - 0x150]
xor cl, dh
mov eax, 0xff
and ebx, eax
movzx eax, byte [ebp + ebx - 0x150]
mov ebx, esi
xor cl, byte [ebp + eax - 0x150]
movsx eax, cl
mov word [ebp + edi - 0x1c6], ax
add edi, 2
mov eax, dword [ebp - 0x28]
inc al
mov dword [ebp - 0x28], eax
cmp edi, 0x24
jne 0x423ace
mov word [ebp - 0x1a2], 0
mov dword [ebp - 0x10], 1
mov ecx, dword [ebp - 0x40]
lea esi, [ebp - 0x168]
lea edx, [ebp - 0x50]
lea eax, [ebp - 0x1a0]
push esi
push 2
push 0
push edx
push 0x100
push eax
push reloc.WSOCK32.dll_bind
call fcn.004221a0
lea eax, [ebp - 0x1e8]
mov ecx, dword [ebp - 0x40]
lea edx, [ebp - 0x168]
push edx
push 1
push 0
lea edx, [ebp - 0x50]
push edx
push 0x100
push eax
push reloc.WSOCK32.dll_bind
call fcn.004221a0
mov ecx, dword [ebp - 0x50]
test ecx, ecx
je 0x423c5c
xor esi, esi
mov edi, dword [ebp - 0x48]
xor ebx, ebx
mov dword [ebp - 0x20], ecx
mov eax, dword [edi + esi*4]
cmp dword [eax + 0x2c], 0
movzx ebx, bl
mov ecx, 1
cmovne ebx, ecx
push eax
call fcn.005db40d
mov ecx, dword [ebp - 0x20]
add esp, 4
inc esi
cmp ecx, esi
jne 0x423c34
and bl, 1
jmp 0x423c61
mov edi, dword [ebp - 0x48]
xor ebx, ebx
push edi
call fcn.005fd8d5
add esp, 4
mov ecx, dword [ebp - 0x154]
cmp ecx, 8
jb 0x423ca9
mov eax, dword [ebp - 0x168]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x423c9f
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x423cbf
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
mov eax, ebx
add esp, 0x1dc
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x1c
add ebp, 0xc
mov ecx, dword [ebp - 0x154]
cmp ecx, 8
jb 0x423d0a
mov eax, dword [ebp - 0x168]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x423d00
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x423d0f
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
add esp, 0x1c
pop ebp
ret
call fcn.005f5844
push ebp
sub esp, 0x1c
add ebp, 0xc
push dword [ebp - 0x48]
call fcn.005fd8d5
add esp, 0x20
pop ebp
ret