Function at 0x41e600
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x58
xor ecx, ecx
cmp dword [ebp + 0x20], 0x10
push ebx
sete cl
inc ecx
push esi
mov esi, ecx
push edi
mov edi, dword [ebp + 0x14]
imul esi, edi
mov eax, esi
mov dword [ebp - 0x10], esi
imul eax, dword [ebp + 0x18]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov ecx, dword [ebp + 0x18]
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x3c], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x41f4ec
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x41f4ec
je 0x41e66a
xor edx, edx
mov eax, SysReAllocString
div dword [ebp + 0x1c]
cmp ecx, eax
jg 0x41f4ec
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x41f4ec
test esi, esi
js 0x41f4ec
je 0x41e68f
mov eax, SysReAllocString
cdq
idiv esi
cmp ecx, eax
jg 0x41f4ec
mov eax, dword [ebp - 0x24]
imul eax, dword [ebp + 0x1c]
push eax
call fcn.0042861d
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x41f4f6
mov esi, dword [ebp - 0x1c]
test esi, esi
js 0x41f4d9
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x41e6d0
xor edx, edx
mov eax, SysReAllocString
div ecx
cmp esi, eax
jg 0x41f4d9
mov eax, esi
imul eax, ecx
mov dword [ebp - 0x20], eax
test eax, eax
js 0x41f4d9
mov esi, dword [ebp + 0x20]
test esi, esi
js 0x41f4d9
je 0x41e702
xor edx, edx
mov eax, SysReAllocString
div esi
cmp dword [ebp - 0x20], eax
jg 0x41f4d9
mov eax, dword [ebp - 0x20]
imul eax, esi
cmp eax, 0x7ffffff8
jg 0x41f4d9
mov edx, dword [ebp + 0x1c]
add eax, 7
shr eax, 3
mov dword [ebp - 0x40], eax
inc eax
imul eax, edx
cmp dword [ebp + 0x10], eax
jae 0x41e738
pop edi
pop esi
mov dword [0x457c28], 0x444ed8
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
mov dword [ebp - 0x2c], eax
test edx, edx
je 0x41f0f5
mov edi, dword [ebp + 0xc]
nop dword [eax + eax]
imul eax, dword [ebp - 0x24]
mov ecx, dword [ebp + 8]
movzx edx, byte [edi]
inc edi
mov dword [ebp - 8], edx
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x18], ecx
cmp edx, 4
ja 0x41f136
cmp esi, 8
jge 0x41e793
mov eax, dword [ebp + 0x14]
mov ebx, 1
imul eax, dword [ebp + 0x18]
mov esi, dword [ebp - 0x40]
mov dword [ebp - 4], ebx
mov dword [ebp - 0x3c], esi
sub eax, esi
add ecx, eax
mov dword [ebp - 0x18], ecx
mov esi, ecx
sub esi, dword [ebp - 0x24]
cmp dword [ebp - 0x2c], 0
mov dword [ebp - 0x14], esi
jne 0x41e7ab
movzx edx, byte [edx + 0x456108]
mov dword [ebp - 8], edx
test ebx, ebx
jle 0x41e8a7
mov eax, esi
mov edx, edi
sub eax, edi
mov esi, ebx
sub ecx, edi
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x38], ecx
cmp dword [ebp - 8], 6
ja case.default.0x41e7cc
mov ebx, dword [ebp - 8]
jmp dword [ebx*4 + 0x41f50c]
mov ebx, dword [ebp - 4]
inc edx
sub esi, 1
jne 0x41e7c3
jmp 0x41e89e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x41e7e4
jmp 0x41e89e
mov ebx, dword [ebp - 4]
nop word [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x41e800
jmp 0x41e89e
mov ebx, dword [ebp - 4]
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x41e89e
mov eax, dword [ebp - 0xc]
jmp 0x41e816
mov ebx, dword [ebp - 4]
mov al, byte [eax + edx]
lea edx, [edx + 1]
shr al, 1
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x41e89e
mov eax, dword [ebp - 0xc]
jmp 0x41e830
mov ebx, dword [ebp - 4]
nop dword [eax]
mov cl, byte [eax + edx]
lea edx, [edx + 1]
xor al, al
cmp al, cl
sbb al, al
and al, cl
mov ecx, dword [ebp - 0x38]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x41e89e
mov eax, dword [ebp - 0xc]
jmp 0x41e850
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x41e875
jmp 0x41e89e
mov ebx, dword [ebp - 4]
nop dword [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x41e890
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 8]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x41e8d6
mov eax, dword [ebp + 0x14]
cmp dword [ebp - 0x1c], eax
je 0x41e8be
mov edx, dword [ebp - 0x1c]
mov byte [ecx + edx], 0xff
add edi, dword [ebp - 0x1c]
add esi, eax
mov edx, dword [ebp - 8]
add ecx, eax
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
jmp 0x41e918
cmp eax, 0x10
jne 0x41e900
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp + 0x14]
je 0x41e8e9
mov word [ecx + ebx], 0xffff
mov eax, dword [ebp - 0x10]
add edi, ebx
add esi, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
jmp 0x41e91b
inc edi
inc esi
inc ecx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], edi
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], ecx
cmp eax, 8
jl 0x41edf1
mov eax, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x1c]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x41edf1
cmp edx, 6
ja case.default.0x41e936
mov edi, dword [ebp - 0xc]
jmp dword [edx*4 + 0x41f528]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0xc]
dec edx
mov dword [ebp - 0x28], edx
mov edi, esi
cmp edx, 1
jb case.default.0x41e936
test ebx, ebx
jle 0x41e97a
mov eax, edi
mov esi, ebx
sub eax, ecx
mov edx, ecx
mov dword [ebp - 0x38], eax
mov ebx, eax
mov al, byte [ebx + edx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x41e963
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
sub edx, 1
mov dword [ebp - 0x28], edx
jne 0x41e952
jmp case.default.0x41e936
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x28], esi
mov edi, edx
cmp esi, 1
jb case.default.0x41e936
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x18], edx
nop
xor esi, esi
test ebx, ebx
jle 0x41e9dc
sub edi, ecx
mov dword [ebp - 0x38], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x18]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x41e9c0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x18], edx
sub dword [ebp - 0x28], 1
jne 0x41e9b0
jmp case.default.0x41e936
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 0x28], edx
cmp dword [ebp - 0x28], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x41e936
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 8], edx
mov edx, 0x20
sub edx, ebx
mov dword [ebp - 0x38], edx
xor edx, edx
mov dword [ebp - 0xc], edx
test ebx, ebx
jle 0x41eb3e
cmp ebx, 0x40
jb 0x41eb0e
lea eax, [edi - 1]
mov dword [ebp - 0xc], edx
add eax, ebx
cmp ecx, eax
ja 0x41ea4f
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x41eb0e
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x41ea65
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x41eb0e
mov eax, ebx
and eax, 0x8000003f
jns 0x41ea73
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0xc], ebx
mov ebx, esi
sub dword [ebp - 0xc], eax
sub ebx, edi
mov eax, dword [ebp - 8]
add eax, dword [ebp - 0x38]
mov dword [ebp - 0x30], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x44], ebx
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x44]
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x30]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x34]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + esi]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [eax + ecx - 0x40]
mov ecx, dword [ebp - 0x48]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [eax + edi - 0x40], xmm1
movups xmm1, xmmword [ebx + ecx - 0x40]
mov ecx, dword [ebp - 0x30]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0xc]
jl 0x41eaa3
mov ebx, dword [ebp - 4]
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x48], edx
mov dword [ebp - 0xc], edx
cmp edx, ebx
jge 0x41eb3b
mov dword [ebp - 0x48], esi
sub ecx, edi
add edx, edi
mov dword [ebp - 0x48], ebx
sub esi, edi
mov dword [ebp - 0x44], ecx
sub ebx, dword [ebp - 0xc]
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x41eb20
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 8]
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add esi, eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], esi
mov byte [edx], 0xff
add edx, eax
sub dword [ebp - 0x28], 1
mov dword [ebp - 8], edx
jne 0x41ea20
jmp case.default.0x41e936
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x41e936
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
nop word [eax + eax]
mov dword [ebp - 0x48], 0
test ebx, ebx
jle 0x41ebde
mov eax, dword [ebp - 0x14]
mov esi, edi
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x38], ecx
mov edi, eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
nop
movzx edx, byte [edx + ecx]
lea esi, [esi + 1]
movzx eax, byte [edi + esi - 1]
inc ecx
add edx, eax
mov eax, dword [ebp - 0x38]
shr edx, 1
add dl, byte [esi - 1]
mov byte [eax + esi - 1], dl
mov edx, dword [ebp - 0x28]
cmp ecx, ebx
jl 0x41ebb0
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x18], ecx
add esi, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 8], 1
mov dword [ebp - 0x14], esi
jne 0x41eb90
jmp case.default.0x41e936
mov edx, dword [ebp + 0x18]
dec edx
mov dword [ebp - 8], edx
cmp dword [ebp - 8], 1
mov edx, dword [ebp - 0xc]
mov edi, edx
jb case.default.0x41e936
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
test ebx, ebx
jle 0x41ecc7
mov eax, esi
mov dword [ebp - 0x38], ebx
mov ebx, dword [ebp - 0x10]
sub eax, ecx
mov ecx, dword [ebp - 0x28]
mov edx, edi
sub esi, edi
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], esi
movzx edi, byte [esi + edx]
movzx eax, byte [ecx + eax]
movzx edx, byte [ecx]
mov dword [ebp - 0x30], eax
mov esi, edx
sub esi, eax
mov dword [ebp - 0x4c], edi
add edi, esi
mov dword [ebp - 0xc], edx
mov eax, edi
sub edi, dword [ebp - 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x48], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x44], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [ebp - 0x48]
xor esi, edx
sub esi, edx
mov edx, dword [ebp - 0x44]
cmp eax, edx
jg 0x41ec8d
cmp eax, esi
jle 0x41ec99
mov eax, dword [ebp - 0x30]
cmp edx, esi
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0xc], eax
mov edx, dword [ebp - 0x34]
mov esi, dword [ebp - 0x54]
mov al, byte [edx]
inc edx
add al, byte [ebp - 0xc]
mov byte [ecx + ebx], al
inc ecx
sub dword [ebp - 0x38], 1
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], edx
jne 0x41ec43
mov ecx, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x18], ecx
add esi, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 8], 1
mov dword [ebp - 0x14], esi
jne 0x41ec21
jmp case.default.0x41e936
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x38], esi
mov edi, edx
cmp esi, 1
jb case.default.0x41e936
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x41ed3e
sub edi, ecx
mov dword [ebp - 0x54], edi
nop dword [eax + eax]
mov eax, dword [ebp - 0x28]
lea edx, [esi + ecx]
mov al, byte [esi + eax]
inc esi
shr al, 1
add al, byte [edi + edx]
mov byte [edx], al
cmp esi, ebx
jl 0x41ed20
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x28]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x28], edx
sub dword [ebp - 0x38], 1
jne 0x41ed10
jmp case.default.0x41e936
mov esi, dword [ebp + 0x18]
mov edx, dword [ebp - 0xc]
dec esi
mov dword [ebp - 0x38], esi
mov edi, edx
cmp esi, 1
jb case.default.0x41e936
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x28], edx
mov dword [ebp - 0x54], 0
test ebx, ebx
jle 0x41eda7
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
mov dl, byte [edx + edi]
lea esi, [edi + ecx]
mov al, byte [eax + esi]
inc edi
add al, dl
mov edx, dword [ebp - 0x28]
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x41ed86
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 0x10]
mov esi, dword [ebp - 0x38]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x28], edx
sub esi, 1
mov dword [ebp - 0x38], esi
jne 0x41ed71
mov esi, dword [ebp + 0x20]
cmp esi, 0x10
jne 0x41f0dd
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x41f0dd
add ecx, dword [ebp - 0x58]
add ecx, ebx
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x41ede2
jmp 0x41f0dd
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp - 8]
dec edx
imul edx, ebx
mov dword [ebp - 0xc], edx
cmp eax, 6
ja case.default.0x41ee07
jmp dword [eax*4 + 0x41f544]
push edx
push edi
push ecx
call fcn.00423fa0
add esp, 0xc
jmp 0x41f0d5
xor esi, esi
test edx, edx
jle case.default.0x41ee07
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x58], eax
mov eax, edi
mov edi, dword [ebp - 0x58]
sub eax, ecx
mov dword [ebp - 0x54], eax
nop dword [eax]
mov ebx, dword [ebp - 0x54]
lea edx, [ecx + esi]
mov al, byte [edi + esi]
inc esi
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0xc]
jl 0x41ee40
jmp 0x41f0cf
xor eax, eax
test edx, edx
jle case.default.0x41ee07
cmp edx, 0x40
jb 0x41ef56
mov dword [ebp - 0x28], eax
lea eax, [edi - 1]
add eax, edx
cmp ecx, eax
ja 0x41ee85
lea eax, [ecx - 1]
add eax, edx
cmp eax, edi
jae 0x41ef53
lea eax, [esi - 1]
add eax, edx
cmp ecx, eax
ja 0x41ee9b
lea eax, [ecx - 1]
add eax, edx
cmp eax, esi
jae 0x41ef53
mov eax, edx
and eax, 0x8000003f
jns 0x41eea9
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, edx
mov edx, esi
sub edx, edi
sub ebx, eax
mov dword [ebp - 0x38], edx
lea eax, [ecx + 0x20]
mov edx, ecx
mov dword [ebp - 0x58], eax
sub edx, edi
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x28]
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x38]
mov dword [ebp - 0x54], edx
mov edx, esi
sub edx, ecx
mov ecx, dword [ebp - 0x54]
mov dword [ebp - 0x50], edx
mov edx, dword [ebp - 0x58]
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + ebx]
lea edx, [edx + 0x40]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [edx - 0x60], xmm1
movups xmm1, xmmword [edi + eax - 0x40]
mov edi, dword [ebp - 0x50]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [edi + edx - 0x40]
mov edi, dword [ebp - 0x38]
paddb xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [esi + ebx + 0x30]
add ebx, 0x40
paddb xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp ebx, dword [ebp - 0x4c]
jl 0x41eee0
mov edx, dword [ebp - 0xc]
mov eax, ebx
mov ecx, dword [ebp - 0x18]
cmp ebx, edx
mov edi, dword [ebp + 0xc]
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 4]
jge case.default.0x41ee07
jmp 0x41ef56
mov eax, dword [ebp - 0x28]
mov ebx, dword [ebp - 0xc]
lea edx, [edi + eax]
sub esi, edi
sub ecx, edi
sub ebx, eax
mov al, byte [edx + esi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [edx + ecx - 1], al
sub ebx, 1
jne 0x41ef62
jmp 0x41f0d2
xor eax, eax
mov dword [ebp - 0x38], eax
test edx, edx
jle case.default.0x41ee07
mov edx, ecx
mov dword [ebp - 0x58], edi
sub edx, ebx
sub esi, edi
mov ebx, dword [ebp - 0xc]
sub ecx, edi
mov dword [ebp - 0x54], edx
nop word [eax + eax]
movzx edx, byte [edx + eax]
lea edi, [edi + 1]
movzx eax, byte [edi + esi - 1]
add edx, eax
mov eax, dword [ebp - 0x38]
shr edx, 1
inc eax
add dl, byte [edi - 1]
mov byte [edi + ecx - 1], dl
mov edx, dword [ebp - 0x54]
mov dword [ebp - 0x38], eax
cmp eax, ebx
jl 0x41efa0
jmp 0x41f0cf
test edx, edx
jle case.default.0x41ee07
mov eax, ecx
mov dword [ebp - 0x28], edi
sub eax, ebx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x58], eax
mov eax, esi
sub eax, ecx
mov ecx, dword [ebp - 0x28]
sub esi, edi
mov dword [ebp - 0x4c], eax
mov edi, dword [ebp - 0x58]
mov dword [ebp - 0x14], esi
movzx eax, byte [eax + edi]
movzx esi, byte [esi + ecx]
movzx edx, byte [edi]
mov dword [ebp - 0x38], eax
mov ecx, edx
sub ecx, eax
mov dword [ebp - 0x50], esi
add esi, ecx
mov dword [ebp - 0x34], edx
mov eax, esi
sub esi, dword [ebp - 0x38]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x58], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x54], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [ebp - 0x58]
xor ecx, edx
sub ecx, edx
mov edx, dword [ebp - 0x54]
cmp eax, edx
jg 0x41f03b
cmp eax, ecx
jle 0x41f047
mov eax, dword [ebp - 0x38]
cmp edx, ecx
cmovle eax, dword [ebp - 0x50]
mov dword [ebp - 0x34], eax
mov ecx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x14]
mov al, byte [ecx]
inc ecx
add al, byte [ebp - 0x34]
mov byte [edi + ebx], al
inc edi
sub dword [ebp - 0x30], 1
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x28], ecx
jne 0x41eff1
mov edi, dword [ebp + 0xc]
jmp 0x41f0d5
xor esi, esi
test edx, edx
jle case.default.0x41ee07
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x58], eax
mov eax, edi
mov edi, dword [ebp - 0x58]
sub eax, ecx
mov dword [ebp - 0x54], eax
nop
mov al, byte [edi + esi]
lea edx, [ecx + esi]
mov ebx, dword [ebp - 0x54]
inc esi
shr al, 1
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0xc]
jl 0x41f080
jmp 0x41f0cf
mov dword [ebp - 0x58], 0
test edx, edx
jle case.default.0x41ee07
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x58]
sub eax, ebx
mov ebx, dword [ebp - 0xc]
sub edx, ecx
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x54], edx
mov dl, byte [eax + edi]
lea esi, [ecx + edi]
mov eax, dword [ebp - 0x54]
inc edi
mov al, byte [esi + eax]
add al, dl
mov byte [esi], al
mov eax, dword [ebp - 0x50]
cmp edi, ebx
jl 0x41f0b7
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
mov edx, dword [ebp - 0xc]
mov esi, dword [ebp + 0x20]
add edi, edx
mov eax, dword [ebp - 0x2c]
mov edx, dword [ebp + 0x1c]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, edx
jb 0x41e750
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x18]
cmp esi, 8
jge 0x41f495
test edx, edx
je 0x41f4cd
mov ebx, edi
imul ebx, ecx
xor ecx, ecx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x50], ebx
mov eax, dword [ebp + 8]
mov esi, ecx
sub esi, dword [ebp - 0x40]
add esi, ebx
mov eax, dword [eax + 0xc]
add esi, eax
cmp dword [ebp + 0x24], 0
lea edx, [ecx + eax]
mov eax, dword [ebp + 0x20]
jne 0x41f149
mov bl, byte [eax + 0x444df0]
jmp 0x41f14b
pop edi
pop esi
mov dword [0x457c28], 0x444eec
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov bl, 1
cmp eax, 4
jne 0x41f1aa
mov ecx, dword [ebp - 0x20]
cmp ecx, 2
jl 0x41f198
mov edi, ecx
shr edi, 1
mov eax, edi
neg eax
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x58], ecx
movzx ecx, byte [esi]
shr cl, 4
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
inc esi
and cl, 0xf
movzx ecx, cl
imul ecx, eax
mov byte [edx + 1], cl
add edx, 2
sub edi, 1
jne 0x41f166
mov ecx, dword [ebp - 0x58]
mov edi, dword [ebp + 0x14]
test ecx, ecx
jle 0x41f3fc
mov cl, byte [esi]
shr cl, 4
jmp 0x41f3f1
cmp eax, 2
jne 0x41f276
mov ecx, dword [ebp - 0x20]
mov dword [ebp - 0x18], ecx
cmp ecx, 4
jl 0x41f22c
mov edi, ecx
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
mov dword [ebp - 0x18], ecx
nop dword [eax]
movzx ecx, byte [esi]
shr cl, 6
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 3
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
inc esi
and cl, 3
movzx ecx, cl
imul ecx, eax
mov byte [edx + 3], cl
add edx, 4
sub edi, 1
jne 0x41f1d0
mov ecx, dword [ebp - 0x18]
mov edi, dword [ebp + 0x14]
test ecx, ecx
jle 0x41f244
mov cl, byte [esi]
shr cl, 6
movzx ecx, cl
movzx eax, bl
imul ecx, eax
mov byte [edx], cl
inc edx
mov ecx, dword [ebp - 0x18]
cmp ecx, 1
jle 0x41f260
mov cl, byte [esi]
shr cl, 4
and cl, 3
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
mov ecx, dword [ebp - 0x18]
cmp ecx, 2
jle 0x41f3fc
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x41f3f1
cmp eax, 1
jne 0x41f3ff
mov edi, dword [ebp - 0x20]
cmp edi, 8
jl 0x41f350
mov eax, edi
shr eax, 3
mov dword [ebp - 0x58], eax
neg eax
lea edi, [edi + eax*8]
mov dword [ebp - 0x54], edi
mov edi, dword [ebp - 0x58]
nop
movzx ecx, byte [esi]
shr cl, 7
movzx ecx, cl
movzx eax, bl
imul ecx, eax
movzx eax, bl
mov byte [edx], cl
movzx ecx, byte [esi]
shr cl, 6
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 1], cl
movzx ecx, byte [esi]
shr cl, 5
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 2], cl
movzx ecx, byte [esi]
shr cl, 4
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 3], cl
movzx ecx, byte [esi]
shr cl, 3
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 4], cl
movzx ecx, byte [esi]
shr cl, 2
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 5], cl
movzx ecx, byte [esi]
shr cl, 1
and cl, 1
movzx ecx, cl
imul ecx, eax
movzx eax, bl
mov byte [edx + 6], cl
movzx ecx, byte [esi]
inc esi
and cl, 1
movzx ecx, cl
imul ecx, eax
mov byte [edx + 7], cl
add edx, 8
sub edi, 1
jne 0x41f2a0
mov edi, dword [ebp - 0x54]
test edi, edi
jle 0x41f365
mov cl, byte [esi]
shr cl, 7
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x41f37e
mov cl, byte [esi]
shr cl, 6
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 2
jle 0x41f397
mov cl, byte [esi]
shr cl, 5
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 3
jle 0x41f3b0
mov cl, byte [esi]
shr cl, 4
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 4
jle 0x41f3c9
mov cl, byte [esi]
shr cl, 3
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 5
jle 0x41f3e2
mov cl, byte [esi]
shr cl, 2
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 6
mov edi, dword [ebp + 0x14]
jle 0x41f3fc
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
cmp ebx, edi
je 0x41f476
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0xc]
add edx, ecx
mov ecx, dword [ebp + 0x18]
dec ecx
cmp ebx, 1
jne 0x41f432
test ecx, ecx
js 0x41f473
nop dword [eax + eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x41f420
jmp 0x41f473
test ecx, ecx
js 0x41f473
lea esi, [ecx*2 + 1]
add esi, edx
lea edx, [edx + ecx*4]
add esi, ecx
add edx, 2
nop word [eax + eax]
sub ecx, 1
mov byte [edx + 1], 0xff
movzx eax, byte [esi + 1]
lea esi, [esi - 3]
mov byte [edx], al
lea edx, [edx - 4]
movzx eax, byte [esi + 3]
mov byte [edx + 3], al
movzx eax, byte [esi + 2]
mov byte [edx + 2], al
jns 0x41f450
mov ecx, dword [ebp - 0x14]
add ecx, dword [ebp - 0x24]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x14], ecx
jne 0x41f113
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp esi, 0x10
jne 0x41f4cd
mov eax, dword [ebp + 8]
imul edi, ecx
mov esi, dword [eax + 0xc]
mov edx, esi
imul edi, dword [ebp + 0x1c]
test edi, edi
je 0x41f4cd
nop dword [eax]
movzx ecx, byte [esi]
lea edx, [edx + 2]
movzx eax, byte [edx - 1]
lea esi, [esi + 2]
shl cx, 8
or cx, ax
mov word [edx - 2], cx
sub edi, 1
jne 0x41f4b0
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov dword [0x457c28], 0x444ecc
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
pop edi
pop esi
mov dword [0x457c28], 0x444e10
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret