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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa18
mov esi, esp
mov dword [esi + 0xa00], ebp
lea eax, [esi + 0xa08]
mov dword [eax - 4], esp
mov dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x438150
mov ecx, dword fs:[0]
mov dword [eax], ecx
mov dword fs:[0], eax
lea edi, [esi + 0x200]
push 0x800
push 0
push edi
call fcn.005e2800
add esp, 0xc
mov dword [esi + 0x180], 0x400
xorpd xmm0, xmm0
movsd xmm4, qword [0x614270]
movsd xmm5, qword [0x614278]
movsd xmm6, qword [0x612228]
movsd xmm7, qword [0x614280]
xorpd xmm3, xmm3
movapd xmm1, xmm3
mulsd xmm1, qword [str._npy]
mulsd xmm1, xmm3
movapd xmm2, xmm3
mulsd xmm2, xmm3
subsd xmm1, xmm2
movapd xmm2, xmm3
mulsd xmm2, qword [0x6121d8]
mulsd xmm2, xmm3
addsd xmm2, qword [0x614268]
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 0x42d063
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x42d10c
je 0x42d10c
push 0x36
jno 0x42d11e
outsb dx, byte [esi]
inc ebx
outsd dx, dword [esi]
aas
jae 0x42d11c
outsb dx, byte [esi]
cmp al, 0x70
cmp dh, byte [edi + 0x3c]
push 0x3d
outsb dx, byte [esi]
cmp dword [ebx + 0x42], esi
jo 0x42d132
jb 0x42d12b
pop edi
imul esi, dword [esi + 0x20], 0x4f
dec esi
jns 0x42d141
pop esp
inc ebx
push ebp
xor ecx, dword [ebp + 0x7a]
insd dword es:[edi], dx
inc edx
pushal
dec eax
sub esp, dword ds:[ecx - 0x17]
pop edx
pop es
add byte [eax], al
lea eax, [0x42d0d4]
mov dword [esi + 0x20], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
add byte [ecx], dh
shl byte [esi + 0xf], 0x6f
adc eax, 0x612120
movdqu xmmword [esi + eax + 0x28], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x42d127
push es
sub byte [ebx + 0xf6610c0], al
cld
retf 0x3d
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
popal
add byte [esi + 0xf], ah
sub al, dl
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x42d0ee]
mov dword [esi + 0x18], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], ecx
shr ecx, 0x10
mov dword [esi + 0x24], ecx
mov edi, 0xff
xor ecx, ecx
xor ebx, ebx
xor edx, edx
inc edx
cmp edi, 2
jb 0x42d194
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, edi
jb 0x42d18d
mov dword [esi + 0x10], edx
mov dword [esi + 0xc], 0xc
mov dword [esi + 8], edi
cmp ebx, 3
ja case.default.0x42d1a6
jmp dword [ebx*4 + 0x6145dc]
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0x28
mov eax, dword [esi + 0x14]
jmp 0x42d1d5
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0x28
mov eax, dword [esi + 0x24]
jmp 0x42d1d5
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0x28
mov eax, dword [esi + 0x1c]
jmp 0x42d1f6
movzx eax, cl
lea ecx, [esi + eax]
add ecx, 0x28
mov eax, dword [esi + 0x14]
mov al, ah
jmp 0x42d1f6
movzx eax, cl
mov al, byte [esi + eax + 0x28]
mov ecx, dword [esi + 0x18]
add ecx, ebx
add ecx, 0xfffffffc
add al, byte [ecx]
inc ebx
movzx edi, al
add al, 0x1d
cmp ebx, 0x1c
mov ecx, 0
cmova ebx, ecx
movzx ecx, al
cmovbe ecx, edi
movzx edx, cl
mov eax, dword [esi + 0x10]
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edi, dword [esi + 0xc]
dec edi
je 0x42d232
mov dword [esi + 0xc], edi
mov edi, dword [esi + 8]
cmp eax, edi
ja 0x42d1a1
jmp 0x42d23b
xor edx, edx
mov edi, dword [esi + 8]
div edi
mov eax, edx
cmp edi, eax
je 0x42d257
mov dl, byte [esi + edi + 0x28]
xor dl, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], dl
xor dl, byte [esi + eax + 0x28]
mov byte [esi + eax + 0x28], dl
xor byte [esi + edi + 0x28], dl
dec edi
jne 0x42d182
mov al, byte [esi + 0x29]
mov byte [esi + 0x10], al
mov cl, byte [esi + 0x2d]
mov byte [esi + 0xc], cl
movzx ecx, al
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
mov dword [esi + 4], eax
mov edx, dword [esi + 0x20]
mov ah, byte [edx]
mov edi, edx
mov dword [esi + 0x24], ecx
mov cl, byte [esi + ecx + 0x28]
add cl, byte [esi + 0x2b]
mov byte [esi + 8], cl
mov al, byte [edx + 1]
movzx edi, cl
mov cl, byte [esi + edi + 0x28]
mov byte [esi + 0x14], cl
movzx ebx, byte [esi + 0x2f]
mov ecx, dword [esi + 4]
movzx edx, byte [esi + ecx + 0x28]
mov dword [esi + 0x18], edx
mov dl, byte [esi + 0x14]
mov byte [esi + ecx + 0x28], dl
mov dh, byte [esi + ebx + 0x28]
mov byte [esi + edi + 0x28], dh
mov dh, byte [esi + 0x10]
inc dh
movzx ecx, dh
mov dh, byte [esi + ecx + 0x28]
mov byte [esi + ebx + 0x28], dh
mov edx, dword [esi + 0x18]
mov byte [esi + ecx + 0x28], dl
add al, 0xca
shl ah, 4
add ah, 0x70
or ah, al
movzx ecx, byte [esi + edi + 0x28]
add ecx, edx
mov edi, 0xff
and ecx, edi
movzx edi, ah
mov dword [esi + 0x14], edi
xor ah, byte [esi + ecx + 0x28]
mov al, byte [esi + 0xc]
add al, byte [esi + edx + 0x28]
mov byte [esi + 0xc], al
mov edi, edx
movzx ecx, byte [esi + ebx + 0x28]
mov edx, dword [esi + 4]
movzx ebx, byte [esi + edx + 0x28]
add ebx, ecx
movzx ecx, al
movzx ecx, byte [esi + ecx + 0x28]
add ecx, ebx
mov edx, 0xff
and ecx, edx
movzx ecx, byte [esi + ecx + 0x28]
xor ah, byte [esi + ecx + 0x28]
mov dl, byte [esi + 8]
mov ecx, edi
add dl, cl
mov ecx, dword [esi + 0x20]
mov bl, byte [ecx + 2]
mov bh, byte [ecx + 3]
mov byte [esi + 8], dl
movzx edx, dl
mov al, byte [esi + edx + 0x28]
mov dword [esi + 0x18], edx
mov edi, dword [esi + 0x14]
movzx ecx, byte [esi + edi + 0x28]
mov dword [esi + 4], ecx
mov byte [esi + edi + 0x28], al
movzx edi, ah
mov ah, byte [esi + edi + 0x28]
mov byte [esi + edx + 0x28], ah
mov cl, byte [esi + 0x10]
add cl, 2
movzx ecx, cl
mov ah, byte [esi + ecx + 0x28]
mov byte [esi + edi + 0x28], ah
mov edx, dword [esi + 4]
mov byte [esi + ecx + 0x28], dl
movzx edi, byte [esi + edi + 0x28]
mov ecx, dword [esi + 0x14]
movzx eax, byte [esi + ecx + 0x28]
add eax, edi
mov dword [esi + 0x10], eax
mov al, byte [esi + 0xc]
add al, byte [esi + edx + 0x28]
mov byte [esi + 0xc], al
movzx ecx, al
movzx edi, byte [esi + ecx + 0x28]
add edi, dword [esi + 0x10]
add bh, 0xca
shl bl, 4
add bl, 0x70
or bl, bh
mov eax, dword [esi + 0x18]
movzx ecx, byte [esi + eax + 0x28]
add ecx, edx
mov eax, 0xff
and ecx, eax
mov ah, byte [esi + ecx + 0x28]
xor ah, bl
mov ecx, 0xff
and edi, ecx
movzx ecx, byte [esi + edi + 0x28]
xor ah, byte [esi + ecx + 0x28]
movsx ecx, ah
mov word [esi + 0x186], cx
xor edi, edi
mov cl, byte [esi + 8]
add cl, dl
mov edx, dword [esi + 0x20]
mov dword [esi + 0x10], edi
mov ch, byte [edx + edi*2 + 4]
mov byte [esi + 0x14], ch
movzx edi, bl
mov dword [esi + 0x1c], edi
mov ebx, dword [esi + 0x10]
mov bl, byte [edx + ebx*2 + 5]
mov bh, byte [esi + 0xc]
mov byte [esi + 8], cl
movzx ecx, cl
mov al, byte [esi + ecx + 0x28]
mov dword [esi + 0x18], ecx
movzx edx, byte [esi + edi + 0x28]
mov dword [esi + 4], edx
mov byte [esi + edi + 0x28], al
movzx edi, ah
mov dl, byte [esi + edi + 0x28]
mov byte [esi + ecx + 0x28], dl
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x10]
add eax, ecx
add eax, 3
mov ecx, 0xff
and eax, ecx
mov dl, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], dl
mov edx, dword [esi + 4]
mov byte [esi + eax + 0x28], dl
movzx eax, byte [esi + edi + 0x28]
mov ecx, dword [esi + 0x1c]
movzx ecx, byte [esi + ecx + 0x28]
add ecx, eax
add bh, byte [esi + edx + 0x28]
mov byte [esi + 0xc], bh
movzx eax, bh
movzx edi, byte [esi + eax + 0x28]
add edi, ecx
mov al, byte [esi + 0x14]
shl al, 4
add al, 0x70
add bl, 0xca
or bl, al
mov eax, dword [esi + 0x18]
movzx eax, byte [esi + eax + 0x28]
add eax, edx
mov ecx, 0xff
and eax, ecx
mov ah, byte [esi + eax + 0x28]
xor ah, bl
and edi, ecx
movzx ecx, byte [esi + edi + 0x28]
xor ah, byte [esi + ecx + 0x28]
movsx ecx, ah
mov edi, dword [esi + 0x10]
mov word [esi + edi*2 + 0x188], cx
mov ecx, edi
inc ecx
mov edi, ecx
cmp ecx, 3
jne 0x42d3d9
mov al, byte [esi + 8]
add al, dl
mov byte [esi + 8], al
mov ecx, dword [esi + 0x20]
mov dh, byte [ecx + 0xa]
mov dl, byte [ecx + 0xb]
movzx ecx, bl
mov dword [esi + 0x1c], ecx
movzx ebx, al
mov dword [esi + 4], ebx
mov al, byte [esi + ebx + 0x28]
movzx ebx, byte [esi + ecx + 0x28]
mov dword [esi + 0x18], ebx
mov byte [esi + ecx + 0x28], al
movzx eax, ah
mov dword [esi + 0x14], eax
mov bh, byte [esi + eax + 0x28]
mov eax, dword [esi + 4]
mov byte [esi + eax + 0x28], bh
mov dword [esi + 0x10], edi
mov eax, dword [esi + 0x24]
add eax, edi
add eax, 3
mov edi, 0xff
and eax, edi
mov bh, byte [esi + eax + 0x28]
mov ecx, dword [esi + 0x14]
mov byte [esi + ecx + 0x28], bh
mov ebx, dword [esi + 0x18]
mov byte [esi + eax + 0x28], bl
add dl, 0xca
shl dh, 4
add dh, 0x70
or dh, dl
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
add eax, ebx
mov edi, 0xff
and eax, edi
movzx edi, dh
mov dword [esi + 4], edi
xor dh, byte [esi + eax + 0x28]
mov cl, byte [esi + 0xc]
add cl, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], cl
mov eax, dword [esi + 0x14]
movzx eax, byte [esi + eax + 0x28]
mov edi, dword [esi + 0x1c]
movzx edi, byte [esi + edi + 0x28]
add edi, eax
movzx eax, cl
movzx eax, byte [esi + eax + 0x28]
add eax, edi
mov edi, 0xff
and eax, edi
movzx eax, byte [esi + eax + 0x28]
xor dh, byte [esi + eax + 0x28]
movsx eax, dh
mov word [esi + 0x18e], ax
mov eax, dword [esi + 0x24]
mov edi, dword [esi + 0x10]
lea ecx, [eax + edi]
mov dword [esi + 0x14], ecx
add edi, eax
add edi, 4
mov dl, byte [esi + 8]
add dl, byte [esi + 0x18]
mov eax, dword [esi + 0x20]
mov cl, byte [eax + 0xc]
mov al, byte [eax + 0xd]
mov byte [esi + 0x18], al
mov byte [esi + 8], dl
movzx eax, dl
mov dword [esi + 0x10], eax
mov ch, byte [esi + eax + 0x28]
mov eax, dword [esi + 4]
movzx ebx, byte [esi + eax + 0x28]
mov byte [esi + eax + 0x28], ch
movzx eax, dh
mov ch, byte [esi + eax + 0x28]
mov edx, dword [esi + 0x10]
mov byte [esi + edx + 0x28], ch
mov edx, 0xff
and edi, edx
mov ch, byte [esi + edi + 0x28]
mov byte [esi + eax + 0x28], ch
mov edx, ebx
mov byte [esi + edi + 0x28], dl
movzx edi, byte [esi + eax + 0x28]
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
add eax, edi
mov dword [esi + 4], eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx edi, al
movzx ebx, byte [esi + edi + 0x28]
add ebx, dword [esi + 4]
mov al, byte [esi + 0x18]
add al, 0xca
shl cl, 4
add cl, 0x70
or cl, al
mov eax, dword [esi + 0x10]
movzx edi, byte [esi + eax + 0x28]
mov eax, edx
mov dword [esi + 0x10], edx
add edi, edx
mov eax, 0xff
and edi, eax
mov dh, byte [esi + edi + 0x28]
xor dh, cl
and ebx, eax
movzx edi, byte [esi + ebx + 0x28]
xor dh, byte [esi + edi + 0x28]
movsx edi, dh
mov word [esi + 0x190], di
mov eax, dword [esi + 0x14]
add al, 6
mov dword [esi + 0x14], eax
xor ebx, ebx
mov eax, dword [esi + 0x14]
mov dl, al
mov byte [esi + 4], al
mov dl, byte [esi + 8]
add dl, byte [esi + 0x10]
mov eax, dword [esi + 0x20]
mov ch, byte [eax + ebx*2 + 0xe]
mov dword [esi + 0x18], ebx
movzx edi, cl
mov cl, byte [eax + ebx*2 + 0xf]
mov byte [esi + 8], dl
movzx eax, dl
mov dword [esi + 0x14], eax
mov dl, byte [esi + eax + 0x28]
movzx ebx, byte [esi + edi + 0x28]
mov dword [esi + 0x10], ebx
mov byte [esi + edi + 0x28], dl
movzx edx, dh
mov bh, byte [esi + edx + 0x28]
mov byte [esi + eax + 0x28], bh
mov bh, byte [esi + 4]
dec bh
movzx eax, bh
mov bh, byte [esi + eax + 0x28]
mov byte [esi + edx + 0x28], bh
mov ebx, dword [esi + 0x10]
mov byte [esi + eax + 0x28], bl
movzx eax, byte [esi + edx + 0x28]
movzx edx, byte [esi + edi + 0x28]
add edx, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx eax, al
movzx eax, byte [esi + eax + 0x28]
add eax, edx
shl ch, 4
add ch, 0x70
add cl, 0xca
or cl, ch
mov ch, byte [esi + 4]
mov edx, dword [esi + 0x14]
movzx edx, byte [esi + edx + 0x28]
add edx, ebx
mov ebx, 0xff
and edx, ebx
mov dh, byte [esi + edx + 0x28]
xor dh, cl
and eax, ebx
movzx eax, byte [esi + eax + 0x28]
xor dh, byte [esi + eax + 0x28]
movsx eax, dh
mov edi, dword [esi + 0x18]
mov word [esi + edi*2 + 0x192], ax
mov al, ch
inc al
mov dword [esi + 0x14], eax
inc edi
mov ebx, edi
cmp edi, 4
jne 0x42d641
mov dl, byte [esi + 8]
add dl, byte [esi + 0x10]
mov byte [esi + 8], dl
movzx edi, cl
mov dword [esi + 0x18], edi
mov eax, dword [esi + 0x20]
mov cl, byte [eax + 0x16]
mov dl, byte [eax + 0x17]
movzx eax, byte [esi + edi + 0x28]
mov dword [esi + 0x24], eax
movzx edi, byte [esi + 8]
mov al, byte [esi + edi + 0x28]
mov ebx, dword [esi + 0x18]
mov byte [esi + ebx + 0x28], al
movzx ebx, dh
mov dword [esi + 0x1c], ebx
mov dh, byte [esi + ebx + 0x28]
mov byte [esi + edi + 0x28], dh
movzx eax, ch
mov ch, byte [esi + eax + 0x28]
mov byte [esi + ebx + 0x28], ch
mov ebx, dword [esi + 0x24]
mov byte [esi + eax + 0x28], bl
add dl, 0xca
shl cl, 4
add cl, 0x70
or cl, dl
movzx eax, byte [esi + edi + 0x28]
add eax, ebx
mov edx, 0xff
and eax, edx
movzx edx, cl
mov dword [esi + 0x10], edx
xor cl, byte [esi + eax + 0x28]
mov eax, dword [esi + 0x1c]
movzx eax, byte [esi + eax + 0x28]
mov edx, dword [esi + 0x18]
movzx edi, byte [esi + edx + 0x28]
add edi, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx eax, al
movzx eax, byte [esi + eax + 0x28]
add eax, edi
mov edi, 0xff
and eax, edi
movzx eax, byte [esi + eax + 0x28]
xor cl, byte [esi + eax + 0x28]
movsx eax, cl
mov word [esi + 0x19a], ax
mov al, byte [esi + 8]
add al, bl
mov edx, dword [esi + 0x20]
mov ch, byte [edx + 0x18]
mov dl, byte [edx + 0x19]
mov byte [esi + 8], dl
movzx edi, al
mov bl, byte [esi + edi + 0x28]
mov eax, dword [esi + 0x10]
movzx edx, byte [esi + eax + 0x28]
mov byte [esi + eax + 0x28], bl
movzx eax, cl
mov dword [esi + 4], eax
mov cl, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], cl
movzx ebx, byte [esi + 0x14]
mov cl, byte [esi + ebx + 0x28]
mov byte [esi + eax + 0x28], cl
mov byte [esi + ebx + 0x28], dl
mov cl, byte [esi + 0xc]
add cl, byte [esi + edx + 0x28]
movzx edi, byte [esi + edi + 0x28]
add edi, edx
mov al, byte [esi + 8]
add al, 0xca
shl ch, 4
add ch, 0x70
or ch, al
mov ebx, 0xff
and edi, ebx
xor ch, byte [esi + edi + 0x28]
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
mov edx, dword [esi + 0x10]
movzx edx, byte [esi + edx + 0x28]
add edx, eax
movzx eax, cl
movzx eax, byte [esi + eax + 0x28]
add eax, edx
and eax, ebx
movzx eax, byte [esi + eax + 0x28]
xor ch, byte [esi + eax + 0x28]
movsx eax, ch
mov word [esi + 0x19c], ax
mov word [esi + 0x19e], 0
lea edi, [esi + 0x200]
lea eax, [esi + 0x186]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov ecx, eax
xorpd xmm4, xmm4
movsd xmm5, qword [0x6142a0]
movsd xmm6, qword [str.q_n]
movsd xmm7, qword [0x6120f8]
movsd xmm2, qword [0x6142b0]
xorpd xmm0, xmm0
movapd xmm1, xmm4
mulsd xmm1, qword [0x614288]
mulsd xmm1, xmm4
movapd xmm3, xmm4
mulsd xmm3, xmm4
subsd xmm1, xmm3
movapd xmm3, xmm4
mulsd xmm3, qword [0x614290]
mulsd xmm3, xmm4
addsd xmm3, qword [0x614298]
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 0x42d89d
xorpd xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x42d94d
pop edi
insd dword es:[edi], dx
insd dword es:[edi], dx
push 0x5f
pushal
bound esp, qword [bp + 0x64]
pushaw
insb byte es:[edi], dx
pop edx
bound esp, qword [ebp + 0x65]
pop edx
pop ecx
popal
pop edx
insd dword es:[edi], dx
dec ebp
das
jle 0x42d960
push 0x41
inc ecx
pop edx
imul ebp, dword [ebx], 0x23
push edx
sub ah, byte [ecx + 0x43]
dec ebx
push ebx
inc ebp
push edx
mov dword [esi + 0xa10], 0xffffffff
jmp 0x42dffa
mov dword [esi + 0x16c], ecx
lea eax, [0x42d90e]
mov dword [esi + 0x20], eax
movdqa xmm1, xmmword [0x612110]
xor eax, eax
movdqa xmm2, xmmword [0x612120]
adc byte [ecx], ah
popal
add byte [ecx], dh
shl byte [esi + 0xf], 0x6f
adc eax, 0x612120
movdqu xmmword [esi + eax + 0x28], xmm1
add eax, 0x10
paddb xmm1, xmm2
cmp eax, 0x100
jne 0x42d96e
movsd xmm1, qword [0x612130]
movapd xmm2, xmm0
subsd xmm2, xmm1
cvttsd2si eax, xmm2
lea ecx, [0x42d928]
mov dword [esi + 0x18], ecx
xor eax, 0x80000000
cvttsd2si ecx, xmm0
ucomisd xmm0, xmm1
cmovae ecx, eax
mov eax, ecx
shr eax, 0x18
mov dword [esi + 0x1c], eax
mov dword [esi + 0x14], ecx
shr ecx, 0x10
mov dword [esi + 0x24], ecx
mov edi, 0xff
xor ebx, ebx
xor ecx, ecx
xor edx, edx
inc edx
cmp edi, 2
jb 0x42d9db
xor edx, edx
inc edx
add edx, edx
inc edx
cmp edx, edi
jb 0x42d9d4
mov dword [esi + 0x10], edx
mov dword [esi + 8], edi
mov edx, 0xc
cmp ebx, 3
mov dword [esi + 0xc], edx
ja case.default.0x42d9ee
jmp dword [ebx*4 + 0x6145ec]
movzx eax, cl
add eax, esi
add eax, 0x28
mov ecx, dword [esi + 0x14]
jmp 0x42da1a
movzx eax, cl
add eax, esi
add eax, 0x28
mov ecx, dword [esi + 0x24]
jmp 0x42da1a
movzx eax, cl
add eax, esi
add eax, 0x28
mov ecx, dword [esi + 0x1c]
jmp 0x42da3a
movzx eax, cl
add eax, esi
add eax, 0x28
mov ecx, dword [esi + 0x14]
mov cl, ch
jmp 0x42da3a
movzx eax, cl
mov cl, byte [esi + eax + 0x28]
mov eax, dword [esi + 0x18]
add eax, ebx
add eax, 0xfffffffc
add cl, byte [eax]
inc ebx
movzx eax, cl
add cl, 0x1a
cmp ebx, 0x19
movzx ecx, cl
cmovbe ecx, eax
mov eax, 0
cmova ebx, eax
movzx edx, cl
mov eax, dword [esi + 0x10]
mov edi, edx
mov dword [esi + 4], edx
and eax, edx
mov edx, dword [esi + 0xc]
dec edx
je 0x42da72
cmp eax, dword [esi + 8]
ja 0x42d9e6
jmp 0x42da79
xor edx, edx
div dword [esi + 8]
mov eax, edx
mov edi, dword [esi + 8]
cmp edi, eax
je 0x42da98
mov dl, byte [esi + edi + 0x28]
xor dl, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], dl
xor dl, byte [esi + eax + 0x28]
mov byte [esi + eax + 0x28], dl
xor byte [esi + edi + 0x28], dl
dec edi
jne 0x42d9c9
mov al, byte [esi + 0x29]
mov byte [esi + 0x14], al
mov cl, byte [esi + 0x2d]
mov byte [esi + 0xc], cl
movzx ecx, al
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x20]
mov bl, byte [eax]
mov edx, eax
mov dword [esi + 0x10], ecx
mov al, byte [esi + ecx + 0x28]
add al, byte [esi + 0x2b]
mov byte [esi + 8], al
mov bh, byte [edx + 1]
movzx edi, al
mov al, byte [esi + edi + 0x28]
mov byte [esi + 0x18], al
movzx edx, byte [esi + 0x2f]
mov ecx, dword [esi + 0x1c]
movzx eax, byte [esi + ecx + 0x28]
mov dword [esi + 4], eax
mov al, byte [esi + 0x18]
mov byte [esi + ecx + 0x28], al
mov al, byte [esi + edx + 0x28]
mov byte [esi + edi + 0x28], al
mov al, byte [esi + 0x14]
inc al
movzx ecx, al
mov al, byte [esi + ecx + 0x28]
mov byte [esi + edx + 0x28], al
mov eax, dword [esi + 4]
mov byte [esi + ecx + 0x28], al
add bh, 0xa0
shl bl, 4
xor bl, 0x80
or bl, bh
movzx ecx, byte [esi + edi + 0x28]
add ecx, eax
mov edi, 0xff
and ecx, edi
mov edi, 0xff
movzx eax, bl
mov dword [esi + 0x18], eax
xor bl, byte [esi + ecx + 0x28]
movzx ecx, byte [esi + edx + 0x28]
mov eax, dword [esi + 0x1c]
movzx edx, byte [esi + eax + 0x28]
add edx, ecx
mov al, byte [esi + 0xc]
mov ecx, dword [esi + 4]
add al, byte [esi + ecx + 0x28]
mov byte [esi + 0xc], al
movzx ecx, al
movzx ecx, byte [esi + ecx + 0x28]
add ecx, edx
mov eax, dword [esi + 0x20]
and ecx, edi
movzx ecx, byte [esi + ecx + 0x28]
xor bl, byte [esi + ecx + 0x28]
mov ch, byte [esi + 8]
add ch, byte [esi + 4]
mov cl, byte [eax + 2]
mov al, byte [eax + 3]
mov byte [esi + 0x1c], al
mov eax, dword [esi + 0x18]
movzx edx, byte [esi + eax + 0x28]
mov dword [esi + 4], edx
mov byte [esi + 8], ch
movzx edx, ch
mov dword [esi + 0x24], edx
mov ch, byte [esi + edx + 0x28]
mov byte [esi + eax + 0x28], ch
movzx edi, bl
mov ch, byte [esi + edi + 0x28]
mov byte [esi + edx + 0x28], ch
mov ah, byte [esi + 0x14]
add ah, 2
movzx ebx, ah
mov ch, byte [esi + ebx + 0x28]
mov byte [esi + edi + 0x28], ch
mov edx, dword [esi + 4]
mov byte [esi + ebx + 0x28], dl
movzx edi, byte [esi + edi + 0x28]
mov eax, dword [esi + 0x18]
movzx eax, byte [esi + eax + 0x28]
add eax, edi
mov dword [esi + 0x14], eax
mov ah, byte [esi + 0xc]
add ah, byte [esi + edx + 0x28]
mov byte [esi + 0xc], ah
movzx ebx, ah
movzx edi, byte [esi + ebx + 0x28]
add edi, dword [esi + 0x14]
mov al, byte [esi + 0x1c]
add al, 0xa0
shl cl, 4
xor cl, 0x80
or cl, al
mov eax, dword [esi + 0x24]
movzx ebx, byte [esi + eax + 0x28]
add ebx, edx
mov eax, 0xff
and ebx, eax
mov ch, byte [esi + ebx + 0x28]
xor ch, cl
and edi, eax
movzx ebx, byte [esi + edi + 0x28]
xor ch, byte [esi + ebx + 0x28]
mov ebx, dword [esi + 0x20]
mov byte [esi + 0x15f], ch
xor edx, edx
mov al, byte [esi + 8]
add al, byte [esi + 4]
mov edi, edx
mov dl, byte [ebx + edx*2 + 4]
mov byte [esi + 0x18], dl
movzx edx, cl
mov dword [esi + 0x14], edx
mov cl, byte [ebx + edi*2 + 5]
mov byte [esi + 8], al
movzx edx, al
mov al, byte [esi + edx + 0x28]
mov byte [esi + 0x24], al
mov dword [esi + 0x1c], edx
mov eax, dword [esi + 0x14]
movzx ebx, byte [esi + eax + 0x28]
mov dword [esi + 4], ebx
mov bl, byte [esi + 0x24]
mov byte [esi + eax + 0x28], bl
movzx ebx, ch
mov ah, byte [esi + ebx + 0x28]
mov byte [esi + edx + 0x28], ah
mov eax, dword [esi + 0x10]
add eax, edi
add eax, 3
mov edx, 0xff
and eax, edx
mov ch, byte [esi + eax + 0x28]
mov byte [esi + ebx + 0x28], ch
mov edx, ebx
mov ebx, dword [esi + 4]
mov byte [esi + eax + 0x28], bl
movzx eax, byte [esi + edx + 0x28]
mov edx, dword [esi + 0x14]
movzx edx, byte [esi + edx + 0x28]
add edx, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx eax, al
movzx eax, byte [esi + eax + 0x28]
add eax, edx
mov dl, byte [esi + 0x18]
shl dl, 4
xor dl, 0x80
add cl, 0xa0
or cl, dl
mov edx, dword [esi + 0x1c]
movzx edx, byte [esi + edx + 0x28]
add edx, ebx
mov ebx, 0xff
and edx, ebx
mov ch, byte [esi + edx + 0x28]
mov ebx, dword [esi + 0x20]
xor ch, cl
mov edx, 0xff
and eax, edx
movzx eax, byte [esi + eax + 0x28]
xor ch, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x160], ch
inc edi
mov edx, edi
cmp edi, 3
jne 0x42dc1a
mov al, byte [ebx + 0xa]
mov byte [esi + 0x18], al
mov al, byte [ebx + 0xb]
mov byte [esi + 0x1c], al
mov al, byte [esi + 8]
add al, byte [esi + 4]
mov byte [esi + 8], al
movzx edi, cl
movzx eax, al
mov dword [esi + 4], eax
mov cl, byte [esi + eax + 0x28]
movzx ebx, byte [esi + edi + 0x28]
mov dword [esi + 0x24], ebx
mov byte [esi + edi + 0x28], cl
movzx ecx, ch
mov bl, byte [esi + ecx + 0x28]
mov byte [esi + eax + 0x28], bl
mov dword [esi + 0x14], edx
mov eax, dword [esi + 0x10]
lea ebx, [eax + edx]
add ebx, 3
mov edx, 0xff
and ebx, edx
mov dl, byte [esi + ebx + 0x28]
mov byte [esi + ecx + 0x28], dl
mov edx, dword [esi + 0x24]
mov byte [esi + ebx + 0x28], dl
movzx ecx, byte [esi + ecx + 0x28]
movzx eax, byte [esi + edi + 0x28]
add eax, ecx
mov cl, byte [esi + 0xc]
add cl, byte [esi + edx + 0x28]
mov byte [esi + 0xc], cl
movzx ecx, byte [esi + 0xc]
movzx ecx, byte [esi + ecx + 0x28]
add ecx, eax
mov al, byte [esi + 0x1c]
add al, 0xa0
mov bl, byte [esi + 0x18]
shl bl, 4
xor bl, 0x80
or bl, al
mov eax, dword [esi + 4]
movzx eax, byte [esi + eax + 0x28]
add eax, edx
mov edi, edx
mov edx, 0xff
and eax, edx
mov al, byte [esi + eax + 0x28]
xor al, bl
and ecx, edx
movzx ecx, byte [esi + ecx + 0x28]
xor al, byte [esi + ecx + 0x28]
mov byte [esi + 0x163], al
mov ah, byte [esi + 8]
mov ecx, edi
add ah, cl
mov byte [esi + 8], ah
mov ecx, dword [esi + 0x20]
mov cl, byte [ecx + 0xc]
mov edx, dword [esi + 0x20]
mov ch, byte [edx + 0xd]
movzx edx, bl
mov dword [esi + 0x18], edx
movzx edi, ah
mov ah, byte [esi + edi + 0x28]
movzx ebx, byte [esi + edx + 0x28]
mov dword [esi + 0x1c], ebx
mov byte [esi + edx + 0x28], ah
movzx eax, al
mov dl, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], dl
mov edx, dword [esi + 0x14]
mov ebx, dword [esi + 0x10]
add edx, ebx
add edx, 4
mov ebx, 0xff
and edx, ebx
mov bl, byte [esi + edx + 0x28]
mov byte [esi + eax + 0x28], bl
mov ebx, dword [esi + 0x1c]
mov byte [esi + edx + 0x28], bl
shl cl, 4
xor cl, 0x80
add ch, 0xa0
or ch, cl
movzx edx, byte [esi + edi + 0x28]
add edx, ebx
mov edi, 0xff
and edx, edi
movzx edi, ch
mov dword [esi + 4], edi
xor ch, byte [esi + edx + 0x28]
movzx eax, byte [esi + eax + 0x28]
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0x28]
add edx, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx eax, byte [esi + 0xc]
movzx eax, byte [esi + eax + 0x28]
add eax, edx
mov edx, dword [esi + 0x20]
mov edi, 0xff
and eax, edi
movzx eax, byte [esi + eax + 0x28]
xor ch, byte [esi + eax + 0x28]
mov al, byte [esi + 8]
add al, bl
mov byte [esi + 0x164], ch
mov cl, byte [edx + 0xe]
mov dl, byte [edx + 0xf]
mov byte [esi + 0x18], dl
mov byte [esi + 8], al
movzx edx, al
mov dword [esi + 0x1c], edx
mov ah, byte [esi + edx + 0x28]
mov edi, dword [esi + 4]
movzx ebx, byte [esi + edi + 0x28]
mov byte [esi + edi + 0x28], ah
movzx edi, ch
mov ch, byte [esi + edi + 0x28]
mov byte [esi + edx + 0x28], ch
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x10]
add eax, edx
add eax, 5
mov edx, 0xff
and eax, edx
mov ch, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], ch
mov byte [esi + eax + 0x28], bl
movzx eax, byte [esi + edi + 0x28]
mov edx, dword [esi + 4]
movzx edi, byte [esi + edx + 0x28]
add edi, eax
mov al, byte [esi + 0xc]
add al, byte [esi + ebx + 0x28]
mov byte [esi + 0xc], al
movzx eax, byte [esi + 0xc]
movzx eax, byte [esi + eax + 0x28]
add eax, edi
mov dl, byte [esi + 0x18]
add dl, 0xa0
shl cl, 4
xor cl, 0x80
or cl, dl
mov edx, dword [esi + 0x1c]
movzx edi, byte [esi + edx + 0x28]
mov dword [esi + 4], ebx
add edi, ebx
mov edx, 0xff
and edi, edx
mov ch, byte [esi + edi + 0x28]
xor ch, cl
and eax, edx
movzx eax, byte [esi + eax + 0x28]
xor ch, byte [esi + eax + 0x28]
mov byte [esi + 0x165], ch
mov eax, dword [esi + 0x10]
add eax, dword [esi + 0x14]
add al, 6
mov dword [esi + 0x10], eax
xor edx, edx
mov al, byte [esi + 8]
add al, byte [esi + 4]
mov edi, dword [esi + 0x20]
mov ah, byte [edi + edx*2 + 0x10]
mov ebx, edx
mov dword [esi + 0x1c], edx
mov byte [esi + 0x14], ah
movzx edx, cl
mov cl, byte [edi + ebx*2 + 0x11]
mov byte [esi + 8], al
movzx edi, al
mov dword [esi + 0x18], edi
mov ah, byte [esi + edi + 0x28]
movzx ebx, byte [esi + edx + 0x28]
mov dword [esi + 4], ebx
mov byte [esi + edx + 0x28], ah
movzx eax, ch
mov ch, byte [esi + eax + 0x28]
mov byte [esi + edi + 0x28], ch
movzx edi, byte [esi + 0x10]
mov ch, byte [esi + edi + 0x28]
mov byte [esi + eax + 0x28], ch
mov ebx, dword [esi + 4]
mov byte [esi + edi + 0x28], bl
movzx eax, byte [esi + eax + 0x28]
movzx edx, byte [esi + edx + 0x28]
add edx, eax
mov al, byte [esi + 0xc]
mov edi, dword [esi + 4]
add al, byte [esi + edi + 0x28]
mov byte [esi + 0xc], al
movzx eax, al
movzx eax, byte [esi + eax + 0x28]
add eax, edx
mov dl, byte [esi + 0x14]
shl dl, 4
xor dl, 0x80
add cl, 0xa0
or cl, dl
mov edx, dword [esi + 0x18]
movzx edx, byte [esi + edx + 0x28]
add edx, edi
mov edi, 0xff
and edx, edi
mov ch, byte [esi + edx + 0x28]
xor ch, cl
and eax, edi
movzx eax, byte [esi + eax + 0x28]
xor ch, byte [esi + eax + 0x28]
mov edi, dword [esi + 0x1c]
mov byte [esi + edi + 0x166], ch
inc edi
mov eax, dword [esi + 0x10]
inc al
mov dword [esi + 0x10], eax
mov edx, edi
cmp edi, 5
jne 0x42df19
mov byte [esi + 0x16b], 0
mov dword [esi + 0xa10], 0xffffffff
lea edi, [esi + 0x200]
mov ecx, dword [esi + 0x16c]
lea eax, [esi + 0x15f]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
lea ecx, [esi + 0x180]
push ecx
push edi
call eax
xor eax, eax
lea ecx, [esi + 0x170]
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov dword [esi + 0xa10], eax
lea eax, [esi + 0x17c]
lea edx, [esi + 0x1d8]
push eax
push edx
push ecx
call fcn.0042ce55
add esp, 0xc
xor eax, eax
mov dword [esi + 0x144], eax
mov dword [esi + 0x154], eax
mov dword [esi + 0x158], 7
mov word [esi + 0x144], 0
lea ebx, [esi + 0x200]
push ebx
call fcn.005ff144
add esp, 4
cmp eax, 7
jbe 0x42e09d
cmp eax, 0x7fffffff
jae 0x42e58f
mov dword [esi + 0xc], eax
mov ecx, eax
or ecx, 7
cmp ecx, 0x7ffffffe
jbe 0x42e0c5
mov dword [esi + 8], connect
mov eax, 0xfffffffe
jmp 0x42e0e1
lea edi, [esi + 0x144]
mov dword [edi + 0x10], eax
mov ecx, eax
add ecx, eax
push ecx
push ebx
push edi
mov ebx, eax
call fcn.005e2280
add esp, 0xc
mov word [esi + ebx*2 + 0x144], 0
mov eax, dword [edi]
jmp 0x42e12f
cmp ecx, 0xa
mov edx, 0xa
cmova edx, ecx
lea eax, [edx + edx]
add eax, 2
cmp edx, 0x7ff
jb 0x42e0ec
mov dword [esi + 8], ecx
push eax
call fcn.00401ee4
add esp, 4
jmp 0x42e0f8
mov dword [esi + 8], edx
push eax
call fcn.005db3dd
add esp, 4
lea ecx, [esi + 0x200]
mov edx, dword [esi + 8]
mov edi, dword [esi + 0xc]
mov dword [esi + 0x154], edi
mov dword [esi + 0x158], edx
mov edx, edi
add edx, edi
push edx
push ecx
push eax
mov ebx, eax
call fcn.005e2280
mov eax, ebx
add esp, 0xc
mov word [ebx + edi*2], 0
mov dword [esi + 0x144], ebx
lea ecx, [esi + 0x144]
mov edx, dword [ecx + 0x14]
cmp edx, 7
mov ebx, ecx
mov dword [esi + 0x10], eax
cmova ebx, eax
mov eax, dword [ecx + 0x10]
xor edi, edi
mov dword [esi + 8], 0
mov dword [esi + 0xc], eax
test eax, eax
je 0x42e1a3
mov eax, dword [esi + 0xc]
add eax, eax
mov dword [esi + 0xc], eax
xor edi, edi
movzx eax, word [ebx + edi]
push eax
call fcn.005ff962
add esp, 4
mov word [ebx + edi], ax
add edi, 2
cmp dword [esi + 0xc], edi
jne 0x42e160
mov edx, dword [esi + 0x158]
mov ecx, dword [esi + 0x144]
mov dword [esi + 0x10], ecx
mov ecx, dword [esi + 0x154]
mov dword [esi + 8], ecx
mov dword [esi + 0xa10], 1
lea ecx, [esi + 0x144]
xor edi, edi
cmp edx, 7
cmova ecx, dword [esi + 0x10]
mov dword [esi + 0x10], ecx
lea ecx, [esi + 0x12c]
mov dword [ecx], edi
mov dword [ecx + 0x10], edi
mov dword [ecx + 0x14], 0xf
mov byte [ecx], 0
mov dword [esi + 0xa10], 1
push dword [esi + 8]
call fcn.0042704c
cmp dword [esi + 8], 0
mov ecx, dword [esi + 0x10]
je 0x42e369
mov eax, dword [esi + 8]
lea edx, [ecx + eax*2]
mov dword [esi + 0x1c], edx
mov al, byte [ecx]
mov byte [esi + 0xc], al
mov edi, dword [esi + 0x13c]
mov ebx, dword [esi + 0x140]
cmp edi, ebx
jae 0x42e229
lea eax, [edi + 1]
mov dword [esi + 0x13c], eax
lea eax, [esi + 0x12c]
cmp ebx, 0xf
jbe 0x42e219
mov eax, dword [esi + 0x12c]
mov bl, byte [esi + 0xc]
mov byte [eax + edi], bl
mov byte [eax + edi + 1], 0
jmp 0x42e333
cmp edi, 0x7fffffff
je 0x42e57b
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edi
lea ecx, [edi + 1]
mov dword [esi + 0x18], ecx
or ecx, 0xf
mov dword [esi + 4], connect
mov eax, connect
mov dword [esi + 8], ebx
js 0x42e27d
mov edx, ebx
shr edx, 1
mov edi, edx
xor edi, 0x7fffffff
cmp edi, ebx
jb 0x42e27d
add edx, ebx
cmp ecx, edx
cmovae edx, ecx
lea eax, [edx + 1]
cmp eax, 0x1000
jb 0x42e340
mov dword [esi + 4], edx
mov dword [esi + 0xa10], 2
push eax
call fcn.00401ee4
add esp, 4
mov edi, eax
mov ebx, dword [esi + 8]
mov ecx, dword [esi + 4]
mov eax, dword [esi + 0x18]
mov dword [esi + 0x13c], eax
mov dword [esi + 0x140], ecx
cmp ebx, 0x10
jb 0x42e2f9
mov eax, dword [esi + 0x12c]
mov ebx, dword [esi + 0x14]
push ebx
mov dword [esi + 4], eax
push eax
push edi
call fcn.005e2280
add esp, 0xc
mov al, byte [esi + 0xc]
mov byte [edi + ebx], al
mov byte [edi + ebx + 1], 0
mov eax, dword [esi + 8]
lea ecx, [eax + 1]
cmp ecx, 0x1000
jb 0x42e31a
mov edx, eax
mov ecx, dword [esi + 4]
mov eax, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, eax
cmp ecx, 0x20
jae 0x42e58a
mov ecx, edx
add ecx, 0x24
jmp 0x42e31d
mov ebx, dword [esi + 0x14]
push ebx
lea eax, [esi + 0x12c]
push eax
push edi
call fcn.005e2280
add esp, 0xc
mov al, byte [esi + 0xc]
mov byte [edi + ebx], al
mov byte [edi + ebx + 1], 0
jmp 0x42e327
mov eax, dword [esi + 4]
push ecx
push eax
call fcn.005db412
add esp, 8
mov dword [esi + 0x12c], edi
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x1c]
add ecx, 2
cmp ecx, edx
jne 0x42e1ea
jmp 0x42e369
test eax, eax
je 0x42e35f
mov dword [esi + 4], edx
mov dword [esi + 0xa10], 2
push eax
call fcn.005db3dd
add esp, 4
jmp 0x42e290
xor edi, edi
xor ecx, ecx
dec ecx
jmp 0x42e298
mov dword [esi + 0xa10], 3
lea ecx, [esi + 0x1a0]
call fcn.0042493c
mov eax, dword [esi + 0x17c]
mov edx, eax
sar edx, 0x1f
shld edx, eax, 2
shl eax, 2
mov dword [esi + 0xa10], 4
lea ecx, [esi + 0x28]
push 1
push edx
push eax
lea eax, [esi + 0x1d8]
push eax
call fcn.0042e77c
mov dword [esi + 0xa10], 5
lea ecx, [esi + 0x1a0]
lea eax, [esi + 0x28]
push eax
call fcn.00424db6
lea eax, [esi + 0x12c]
lea ecx, [esi + 0x1a0]
push eax
call fcn.00424c24
lea ecx, [esi + 0x1a0]
call fcn.004263fe
mov eax, dword [esi + 0x170]
mov dword [esi + 0x1c], eax
test eax, eax
je 0x42e476
mov eax, dword [esi + 0x178]
mov dword [esi + 0x24], eax
xor ecx, ecx
mov edi, dword [esi + 0x1a0]
mov dword [esi + 0x10], 0
mov dword [esi + 4], edi
mov eax, dword [esi + 0x24]
mov dword [esi + 0x18], ecx
mov eax, dword [eax + ecx*4]
mov ebx, dword [eax + 4]
test ebx, ebx
je 0x42e46b
mov dword [esi + 0x14], eax
mov eax, dword [eax + 0xc]
xor edx, edx
mov dword [esi + 0xc], ebx
mov dword [esi + 8], eax
mov ecx, dword [eax + edx*4]
cmp dword [ecx], edi
jne 0x42e466
xor edi, edi
mov ebx, edi
cmp edi, 4
je 0x42e44d
lea edi, [ebx + 1]
mov eax, dword [ecx + ebx*4 + 4]
cmp eax, dword [esi + ebx*4 + 0x1a4]
je 0x42e436
cmp ebx, 4
jb 0x42e45d
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x14]
or eax, dword [ecx]
mov dword [esi + 0x10], eax
mov edi, dword [esi + 4]
mov ebx, dword [esi + 0xc]
mov eax, dword [esi + 8]
inc edx
cmp edx, ebx
jne 0x42e42d
mov ecx, dword [esi + 0x18]
inc ecx
cmp ecx, dword [esi + 0x1c]
jne 0x42e40f
jmp 0x42e47d
mov dword [esi + 0x10], 0
lea eax, [esi + 0x170]
push eax
call fcn.0042e874
add esp, 4
lea ecx, [esi + 0x28]
call fcn.0042e8be
mov eax, dword [esi + 0x1c8]
cmp eax, 0x10
jb 0x42e4d2
mov ecx, dword [esi + 0x1b4]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x42e4c8
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x42e58a
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.005db412
add esp, 8
mov eax, dword [esi + 0x140]
cmp eax, 0x10
jb 0x42e510
mov ecx, dword [esi + 0x12c]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x42e506
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x42e58a
add eax, 0x24
mov edi, eax
mov ecx, edx
push edi
push ecx
call fcn.005db412
add esp, 8
mov ecx, dword [esi + 0x158]
cmp ecx, 8
jb 0x42e54f
mov eax, dword [esi + 0x144]
lea edx, [ecx + ecx]
add edx, 2
cmp edx, 0x1000
jb 0x42e545
mov edx, eax
add edx, 0xfffffffc
mov eax, dword [eax - 4]
sub edx, eax
cmp edx, 0x20
jae 0x42e58a
add ecx, ecx
add ecx, 0x25
mov edx, ecx
push edx
push eax
call fcn.005db412
add esp, 8
bt dword [esi + 0x10], 0x17
setae bl
push dword [esi + 0x178]
call fcn.005fd8d5
add esp, 4
mov eax, dword [esi + 0xa08]
mov dword fs:[0], eax
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0xa10], 2
call fcn.00401eda
call fcn.005f5844
call fcn.00401eda
push ebp
sub esp, 0x10
lea esi, [ebp - 0xa14]
mov ebp, dword [esi + 0xa00]
lea ecx, [esi + 0x28]
call fcn.0042e8be
add esp, 0x10
pop ebp
ret