Function at 0x41f660
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x40
push ebx
mov ebx, dword [esp + 0x60]
xor eax, eax
cmp ebx, 0x10
sete al
mov ecx, dword [esp + 0x5c]
push ebp
push esi
mov esi, dword [esp + 0x54]
push edi
mov edi, dword [esp + 0x64]
inc eax
mov ebx, eax
imul ebx, dword [esp + 0x60]
mov edx, ebx
imul edx, edi
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x54]
mov edx, dword [edx]
mov ebp, dword [edx + 8]
mov dword [esp + 0x1c], ebp
imul ebp, eax
test edi, edi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], edi
jl 0x41f706
test ecx, ecx
jl 0x41f706
je 0x41f6c7
mov eax, SysReAllocString
cdq
idiv ecx
xor edx, edx
cmp edi, eax
setle dl
mov eax, edx
test eax, eax
je 0x41f706
mov eax, edi
imul eax, ecx
test eax, eax
mov dword [esp + 0x44], eax
jl 0x41f706
test ebx, ebx
jl 0x41f706
je 0x41f6f7
mov eax, SysReAllocString
cdq
idiv ebx
mov edx, dword [esp + 0x44]
xor ecx, ecx
cmp edx, eax
setle cl
mov eax, ecx
test eax, eax
mov ecx, dword [esp + 0x68]
je 0x41f706
mov eax, ebx
imul eax, edi
imul eax, ecx
cmp eax, 0x7fffffff
jle 0x41f70a
xor eax, eax
jmp 0x41f717
push eax
call fcn.0042372d
mov ecx, dword [esp + 0x6c]
add esp, 4
test eax, eax
mov edx, dword [esp + 0x54]
mov dword [edx + 0xc], eax
jne 0x41f734
pop edi
pop esi
pop ebp
mov dword [0x43e410], 0x433ce4
pop ebx
add esp, 0x40
ret
mov eax, dword [esp + 0x1c]
test eax, eax
jl 0x41f7a4
test edi, edi
jl 0x41f7a4
je 0x41f75f
mov eax, SysReAllocString
cdq
idiv edi
mov edx, dword [esp + 0x1c]
xor ecx, ecx
cmp edx, eax
setle cl
mov eax, ecx
test eax, eax
je 0x41f7a4
mov ecx, dword [esp + 0x68]
mov edx, dword [esp + 0x1c]
imul edx, edi
test edx, edx
mov dword [esp + 0x30], edx
jl 0x41f7a4
mov eax, dword [esp + 0x6c]
test eax, eax
jl 0x41f7a4
je 0x41f797
mov eax, SysReAllocString
cdq
idiv dword [esp + 0x6c]
mov edx, dword [esp + 0x30]
xor ecx, ecx
cmp edx, eax
setle cl
mov eax, ecx
test eax, eax
je 0x41f7a4
mov ecx, dword [esp + 0x68]
imul edx, dword [esp + 0x6c]
cmp edx, 0x7ffffff8
jle 0x41f7b8
pop edi
pop esi
pop ebp
mov dword [0x43e410], 0x433dcc
xor eax, eax
pop ebx
add esp, 0x40
ret
lea eax, [edx + 7]
mov edx, dword [esp + 0x5c]
shr eax, 3
mov dword [esp + 0x38], eax
inc eax
imul eax, ecx
cmp edx, eax
jae 0x41f7e2
pop edi
pop esi
pop ebp
mov dword [0x43e410], 0x433db8
xor eax, eax
pop ebx
add esp, 0x40
ret
test ecx, ecx
mov dword [esp + 0x2c], 0
jbe 0x41ff3e
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x54]
mov edi, dword [edi + 0xc]
mov edx, dword [esp + 0x38]
mov eax, ecx
imul eax, dword [esp + 0x3c]
add edi, eax
mov dword [esp + 0x4c], eax
movzx eax, byte [esi]
inc esi
cmp eax, 4
mov dword [esp + 0x24], eax
jg 0x41ff66
cmp dword [esp + 0x6c], 8
jge 0x41f83c
mov eax, dword [esp + 0x60]
imul eax, dword [esp + 0x64]
sub eax, edx
add edi, eax
mov ebp, 1
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x3c]
mov edx, edi
sub edx, eax
test ecx, ecx
mov dword [esp + 0x10], edx
jne 0x41f85b
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx + 0x43c1e8]
mov dword [esp + 0x24], eax
test ebp, ebp
jle 0x41f8f3
sub edx, esi
mov ecx, edi
mov eax, esi
sub ecx, esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], ebp
jmp 0x41f880
mov edx, dword [esp + 0x24]
cmp edx, 6
ja case.default.0x41f889
jmp dword [edx*4 + 0x420224]
mov edx, dword [esp + 0x18]
mov dl, byte [edx + eax]
add dl, byte [eax]
jmp 0x41f8dc
mov edx, dword [esp + 0x18]
mov dl, byte [edx + eax]
shr dl, 1
add dl, byte [eax]
jmp 0x41f8dc
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
movzx edx, byte [eax + ecx]
push 0
push edx
xor ebx, ebx
call fcn.0041f610
mov ebx, dword [esp + 0x28]
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov dl, byte [eax]
add esp, 8
add cl, dl
mov edx, dword [esp + 0x28]
mov byte [edx + eax], cl
mov ecx, edx
jmp case.default.0x41f889
mov dl, byte [eax]
mov byte [ecx + eax], dl
mov edx, dword [esp + 0x34]
inc eax
dec edx
mov dword [esp + 0x14], eax
mov dword [esp + 0x34], edx
jne 0x41f880
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
cmp eax, 8
mov ecx, dword [esp + 0x60]
jne 0x41f91c
mov eax, dword [esp + 0x1c]
cmp eax, ecx
je 0x41f90c
mov byte [edi + eax], 0xff
add esi, eax
add edi, ecx
add edx, ecx
mov dword [esp + 0x58], esi
mov dword [esp + 0x10], edx
jmp 0x41f958
cmp eax, 0x10
jne 0x41f940
cmp dword [esp + 0x1c], ecx
je 0x41f930
mov byte [edi + ebp], 0xff
mov byte [edi + ebp + 1], 0xff
add esi, ebp
add edi, ebx
add edx, ebx
mov dword [esp + 0x58], esi
mov dword [esp + 0x10], edx
jmp 0x41f954
inc esi
inc edi
inc edx
cmp eax, 8
mov dword [esp + 0x58], esi
mov dword [esp + 0x10], edx
jl 0x41fd0d
mov eax, dword [esp + 0x1c]
cmp eax, ecx
je 0x41fd0d
mov eax, dword [esp + 0x24]
cmp eax, 6
ja case.default.0x41f96d
jmp dword [eax*4 + 0x420240]
mov eax, dword [esp + 0x64]
dec eax
cmp eax, 1
jb case.default.0x41f96d
mov dword [esp + 0x28], eax
test ebp, ebp
jle 0x41f9a5
mov ecx, esi
mov eax, edi
sub ecx, edi
mov dword [esp + 0x34], ebp
mov dl, byte [ecx + eax]
mov byte [eax], dl
mov edx, dword [esp + 0x34]
inc eax
dec edx
mov dword [esp + 0x34], edx
jne 0x41f994
mov eax, dword [esp + 0x28]
mov byte [edi + ebp], 0xff
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x28], eax
jne 0x41f986
jmp case.default.0x41f96d
mov eax, dword [esp + 0x64]
dec eax
cmp eax, 1
jb case.default.0x41f96d
mov ecx, edi
sub ecx, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], eax
xor eax, eax
test ebp, ebp
jle 0x41f9f9
mov edx, esi
sub edx, edi
mov ebx, dword [esp + 0x28]
mov bl, byte [ebx + eax]
lea ecx, [eax + edi]
add bl, byte [edx + ecx]
inc eax
cmp eax, ebp
mov byte [ecx], bl
jl 0x41f9e1
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x34]
mov byte [edi + ebp], 0xff
add ecx, ebx
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x34], eax
jne 0x41f9d7
jmp case.default.0x41f96d
mov eax, dword [esp + 0x64]
dec eax
cmp eax, 1
jb case.default.0x41f96d
mov dword [esp + 0x28], eax
lea ecx, [ecx]
test ebp, ebp
jle 0x41fa64
sub edx, esi
mov ecx, edi
mov eax, esi
mov dword [esp + 0x18], edx
sub ecx, esi
mov dword [esp + 0x34], ebp
jmp 0x41fa50
mov edx, dword [esp + 0x18]
lea ebx, [ebx]
mov dl, byte [eax + edx]
add dl, byte [eax]
inc eax
mov byte [eax + ecx - 1], dl
dec dword [esp + 0x34]
jne 0x41fa46
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
mov byte [edi + ebp], 0xff
add edx, ebx
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x28], eax
jne 0x41fa30
jmp case.default.0x41f96d
mov eax, dword [esp + 0x64]
dec eax
cmp eax, 1
jb case.default.0x41f96d
mov ecx, edi
sub ecx, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x34], eax
lea esp, [esp]
xor ecx, ecx
test ebp, ebp
jle 0x41fae9
sub edx, esi
mov ebx, edi
sub ebx, esi
mov eax, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x28], ebx
jmp 0x41fac0
mov edx, dword [esp + 0x18]
lea esp, [esp]
movzx edx, byte [eax + edx]
mov ebx, dword [esp + 0x24]
movzx ebx, byte [ebx + ecx]
add edx, ebx
mov bl, byte [eax]
sar edx, 1
add dl, bl
mov ebx, dword [esp + 0x28]
inc ecx
mov byte [eax + ebx], dl
inc eax
cmp ecx, ebp
jl 0x41fab8
mov ebx, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
add dword [esp + 0x24], ebx
mov eax, dword [esp + 0x34]
mov byte [edi + ebp], 0xff
add edx, ebx
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x34], eax
jne 0x41faa0
jmp case.default.0x41f96d
mov ecx, dword [esp + 0x64]
dec ecx
cmp ecx, 1
jb case.default.0x41f96d
mov eax, edi
sub eax, ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0x44], ecx
test ebp, ebp
jle 0x41fb9d
mov eax, dword [esp + 0x14]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x10]
mov ecx, eax
sub ecx, edi
sub eax, esi
mov dword [esp + 0x24], esi
mov dword [esp + 0x34], ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x40], ebp
jmp 0x41fb50
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x34]
movzx edx, byte [ecx + eax]
mov ecx, dword [esp + 0x24]
movzx ebx, byte [eax]
push edx
mov edx, dword [esp + 0x1c]
movzx ecx, byte [ecx + edx]
push ecx
call fcn.0041f610
mov ecx, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov edx, eax
add dl, byte [ecx]
mov eax, dword [esp + 0x30]
add esp, 8
mov byte [eax + ebx], dl
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x40]
inc ecx
dec eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x40], eax
jne 0x41fb50
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
add edx, eax
add ecx, eax
mov byte [edi + ebp], 0xff
add edi, eax
mov eax, dword [esp + 0x44]
add esi, ebp
dec eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x44], eax
jne 0x41fb25
mov ebx, dword [esp + 0x20]
jmp case.default.0x41f96d
mov eax, dword [esp + 0x64]
dec eax
cmp eax, 1
jb case.default.0x41f96d
mov ecx, edi
sub ecx, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], eax
nop
xor eax, eax
test ebp, ebp
jle 0x41fc1a
mov edx, esi
sub edx, edi
lea ebx, [ebx]
mov ebx, dword [esp + 0x28]
mov bl, byte [ebx + eax]
lea ecx, [eax + edi]
shr bl, 1
add bl, byte [edx + ecx]
inc eax
cmp eax, ebp
mov byte [ecx], bl
jl 0x41fc00
mov ebx, dword [esp + 0x20]
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x44]
mov byte [edi + ebp], 0xff
add ecx, ebx
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x44], eax
jne 0x41fbf0
jmp case.default.0x41f96d
mov ecx, dword [esp + 0x64]
dec ecx
cmp ecx, 1
jb case.default.0x41f96d
mov eax, edi
sub eax, ebx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], ecx
xor ecx, ecx
test ebp, ebp
jle 0x41fcb5
xor eax, eax
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x44], eax
mov eax, esi
sub eax, edi
mov dword [esp + 0x34], eax
nop
mov eax, dword [esp + 0x28]
movzx eax, byte [eax + ecx]
cdq
xor eax, edx
sub eax, edx
mov edx, dword [esp + 0x44]
cmp edx, eax
jg 0x41fc97
cmp edx, eax
jg 0x41fc97
mov edx, dword [esp + 0x28]
movzx eax, byte [edx + ecx]
mov dword [esp + 0x40], eax
jmp 0x41fc9f
mov dword [esp + 0x40], 0
mov edx, dword [esp + 0x34]
lea eax, [ecx + edi]
mov al, byte [edx + eax]
add al, byte [esp + 0x40]
mov byte [ecx + edi], al
inc ecx
cmp ecx, ebp
jl 0x41fc70
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
mov byte [edi + ebp], 0xff
add ecx, ebx
add esi, ebp
add edi, ebx
dec eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], eax
jne 0x41fc56
cmp dword [esp + 0x6c], 0x10
jne 0x41ff25
mov ecx, dword [esp + 0x54]
mov eax, dword [ecx + 0xc]
mov edi, dword [esp + 0x4c]
mov ecx, dword [esp + 0x64]
add eax, edi
test ecx, ecx
jbe 0x41ff25
lea eax, [eax + ebp + 1]
lea ebx, [ebx]
mov byte [eax], 0xff
add eax, ebx
dec ecx
jne 0x41fd00
jmp 0x41ff25
mov eax, dword [esp + 0x48]
dec eax
imul eax, ebp
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
cmp eax, 6
ja case.default.0x41fd28
mov edx, eax
jmp dword [edx*4 + 0x42025c]
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x58]
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x58]
jmp case.default.0x41fd28
mov ecx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
jle case.default.0x41fd28
mov ebx, edi
sub ebx, ebp
mov edx, esi
mov dword [esp + 0x28], ebx
sub edx, edi
jmp 0x41fd70
mov ebx, dword [esp + 0x28]
mov edi, edi
mov bl, byte [ebx + eax]
lea ecx, [eax + edi]
add bl, byte [edx + ecx]
inc eax
mov byte [ecx], bl
cmp eax, dword [esp + 0x14]
jl 0x41fd6a
jmp case.default.0x41fd28
mov eax, dword [esp + 0x14]
test eax, eax
jle case.default.0x41fd28
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
sub ecx, esi
mov eax, esi
sub edi, esi
mov bl, byte [ecx + eax]
add bl, byte [eax]
inc eax
dec edx
mov byte [edi + eax - 1], bl
jne 0x41fda1
jmp case.default.0x41fd28
mov eax, dword [esp + 0x14]
xor ecx, ecx
test eax, eax
jle case.default.0x41fd28
mov ebx, dword [esp + 0x10]
mov edx, edi
sub ebx, esi
sub edx, ebp
sub edi, esi
mov eax, esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x28], edi
jmp 0x41fde0
mov ebx, dword [esp + 0x18]
lea ecx, [ecx]
movzx ebx, byte [ebx + eax]
movzx edi, byte [edx + ecx]
add ebx, edi
mov edi, dword [esp + 0x28]
sar ebx, 1
add bl, byte [eax]
inc ecx
mov byte [edi + eax], bl
mov edi, dword [esp + 0x14]
inc eax
cmp ecx, edi
jl 0x41fdd9
jmp case.default.0x41fd28
mov eax, dword [esp + 0x14]
test eax, eax
jle case.default.0x41fd28
mov ecx, dword [esp + 0x10]
mov eax, edi
sub eax, ebp
mov dword [esp + 0x4c], eax
mov eax, ecx
sub eax, edi
mov edi, dword [esp + 0x4c]
sub ecx, esi
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x28], esi
mov dword [esp + 0x34], eax
mov dword [esp + 0x44], ecx
lea ebx, [ebx]
mov edx, dword [esp + 0x34]
movzx eax, byte [edi + edx]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x28]
movzx ebx, byte [edi]
push eax
movzx eax, byte [ecx + edx]
push eax
call fcn.0041f610
mov ecx, eax
mov eax, dword [esp + 0x30]
add cl, byte [eax]
add esp, 8
mov byte [edi + ebp], cl
inc edi
inc eax
mov dword [esp + 0x28], eax
dec dword [esp + 0x44]
jne 0x41fe40
jmp case.default.0x41fd28
mov ecx, dword [esp + 0x14]
xor eax, eax
test ecx, ecx
jle case.default.0x41fd28
mov ebx, edi
sub ebx, ebp
mov edx, esi
mov dword [esp + 0x28], ebx
sub edx, edi
jmp 0x41fea0
mov ebx, dword [esp + 0x28]
lea ecx, [ecx]
mov bl, byte [ebx + eax]
lea ecx, [eax + edi]
shr bl, 1
add bl, byte [edx + ecx]
inc eax
mov byte [ecx], bl
cmp eax, dword [esp + 0x14]
jl 0x41fe99
jmp case.default.0x41fd28
mov eax, dword [esp + 0x14]
test eax, eax
mov dword [esp + 0x24], 0
jle case.default.0x41fd28
mov eax, edi
sub eax, ebp
mov dword [esp + 0x28], eax
mov eax, esi
sub eax, edi
mov dword [esp + 0x34], eax
jmp 0x41fee0
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x24]
movzx ebx, byte [edx + eax]
push 0
push 0
call fcn.0041f610
mov edx, dword [esp + 0x2c]
mov ecx, eax
lea eax, [edx + edi]
mov edx, dword [esp + 0x3c]
add cl, byte [edx + eax]
mov byte [eax], cl
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
add esp, 8
inc eax
cmp eax, ecx
mov dword [esp + 0x24], eax
jl 0x41fee0
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
add esi, eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x68]
inc eax
cmp eax, ecx
mov dword [esp + 0x2c], eax
jb 0x41f7f2
mov edi, dword [esp + 0x64]
mov eax, dword [esp + 0x6c]
cmp eax, 8
jge 0x4201e6
test ecx, ecx
jbe 0x420216
mov edx, dword [esp + 0x60]
imul edx, edi
mov dword [esp + 0x4c], edx
xor ebp, ebp
mov dword [esp + 0x48], ecx
jmp 0x41ff7e
pop edi
pop esi
pop ebp
mov dword [0x43e410], 0x433da8
xor eax, eax
pop ebx
add esp, 0x40
ret
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x54]
mov eax, dword [eax + 0xc]
mov esi, dword [esp + 0x6c]
mov ebx, dword [esp + 0x30]
mov edi, ebp
sub edi, dword [esp + 0x38]
lea ecx, [eax + ebp]
add edi, edx
add edi, eax
mov eax, dword [esp + 0x70]
test eax, eax
jne 0x41ffaa
mov dl, byte [esi + 0x433cd8]
jmp 0x41ffac
mov dl, 1
cmp esi, 4
jne 0x41ffea
cmp ebx, 2
jl 0x41ffd8
mov esi, ebx
shr esi, 1
mov eax, esi
neg eax
lea ebx, [ebx + eax*2]
mov al, byte [edi]
shr al, 4
imul dl
mov byte [ecx], al
mov al, byte [edi]
and al, 0xf
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc edi
dec esi
jne 0x41ffc1
test ebx, ebx
jle 0x420157
mov al, byte [edi]
shr al, 4
jmp 0x420153
cmp esi, 2
jne 0x420064
cmp ebx, 4
jl 0x420030
mov esi, ebx
shr esi, 2
mov eax, esi
neg eax
lea ebx, [ebx + eax*4]
mov al, byte [edi]
shr al, 6
imul dl
mov byte [ecx], al
mov al, byte [edi]
shr al, 4
and al, 3
imul dl
mov byte [ecx + 1], al
mov al, byte [edi]
inc ecx
shr al, 2
and al, 3
imul dl
inc ecx
mov byte [ecx], al
mov al, byte [edi]
and al, 3
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc edi
dec esi
jne 0x420000
test ebx, ebx
jle 0x42003e
mov al, byte [edi]
shr al, 6
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 1
jle 0x42004f
mov al, byte [edi]
shr al, 4
and al, 3
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 2
jle 0x420157
mov al, byte [edi]
shr al, 2
and al, 3
jmp 0x420153
cmp esi, 1
jne 0x420157
mov ebx, dword [esp + 0x30]
cmp ebx, 8
jl 0x4200e5
mov esi, ebx
shr esi, 3
mov eax, esi
neg eax
lea ebx, [ebx + eax*8]
mov al, byte [edi]
shr al, 7
imul dl
mov byte [ecx], al
mov al, byte [edi]
shr al, 6
and al, 1
imul dl
mov byte [ecx + 1], al
mov al, byte [edi]
shr al, 5
and al, 1
imul dl
inc ecx
mov byte [ecx + 1], al
mov al, byte [edi]
shr al, 4
and al, 1
imul dl
inc ecx
mov byte [ecx + 1], al
mov al, byte [edi]
shr al, 3
and al, 1
imul dl
inc ecx
mov byte [ecx + 1], al
mov al, byte [edi]
shr al, 2
inc ecx
and al, 1
imul dl
mov byte [ecx + 1], al
mov al, byte [edi]
inc ecx
shr al, 1
and al, 1
imul dl
inc ecx
mov byte [ecx], al
mov al, byte [edi]
and al, 1
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc edi
dec esi
jne 0x420082
test ebx, ebx
jle 0x4200f3
mov al, byte [edi]
shr al, 7
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 1
jle 0x420104
mov al, byte [edi]
shr al, 6
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 2
jle 0x420115
mov al, byte [edi]
shr al, 5
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 3
jle 0x420126
mov al, byte [edi]
shr al, 4
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 4
jle 0x420137
mov al, byte [edi]
shr al, 3
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 5
jle 0x420148
mov al, byte [edi]
shr al, 2
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebx, 6
jle 0x420157
mov al, byte [edi]
shr al, 1
and al, 1
imul dl
mov byte [ecx], al
mov ecx, dword [esp + 0x60]
cmp dword [esp + 0x1c], ecx
je 0x4201c4
mov edx, dword [esp + 0x54]
mov eax, dword [edx + 0xc]
mov ecx, dword [esp + 0x1c]
add eax, ebp
cmp ecx, 1
jne 0x420192
mov ecx, dword [esp + 0x64]
dec ecx
js 0x4201c4
lea ebx, [ebx]
dec ecx
mov byte [eax + ecx*2 + 3], 0xff
mov dl, byte [ecx + eax + 1]
mov byte [eax + ecx*2 + 2], dl
jns 0x420180
jmp 0x4201c4
mov edx, dword [esp + 0x64]
dec edx
js 0x4201c4
lea ecx, [eax + edx*2]
lea ecx, [edx + ecx + 1]
lea eax, [eax + edx*4 + 2]
lea esi, [edx + 1]
mov dl, byte [ecx + 1]
mov byte [eax], dl
mov dl, byte [ecx]
mov byte [eax - 1], dl
mov dl, byte [ecx - 1]
mov byte [eax + 1], 0xff
mov byte [eax - 2], dl
sub ecx, 3
sub eax, 4
dec esi
jne 0x4201a7
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x48]
add ebp, ecx
dec eax
mov dword [esp + 0x48], eax
jne 0x41ff7a
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret
cmp eax, 0x10
jne 0x420216
mov esi, dword [esp + 0x60]
mov eax, dword [esp + 0x54]
imul esi, edi
mov edx, dword [eax + 0xc]
imul esi, ecx
test esi, esi
mov eax, edx
jbe 0x420216
xor ecx, ecx
mov ch, byte [edx]
add eax, 2
add edx, 2
dec esi
mov cl, byte [eax - 1]
mov word [eax - 2], cx
jne 0x420202
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x40
ret