Function at 0x4bba90
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
push ebx
push esi
xor ecx, ecx
push edi
mov edi, dword [ebp + 0x20]
cmp edi, 0x10
sete cl
inc ecx
mov esi, ecx
imul esi, dword [ebp + 0x14]
mov eax, esi
mov dword [ebp - 8], esi
imul eax, dword [ebp + 0x18]
mov dword [ebp - 0x28], 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 - 0x24], eax
mov dword [ebp - 0x34], ecx
mov dword [ebp - 4], ebx
test ecx, ecx
js 0x4bca8f
mov eax, dword [ebp + 0x1c]
test eax, eax
js 0x4bca8f
je 0x4bbafa
xor edx, edx
mov eax, 0x7fffffff
div dword [ebp + 0x1c]
cmp ecx, eax
jg 0x4bca8f
mov eax, dword [ebp + 0x1c]
imul ecx, eax
test ecx, ecx
js 0x4bca8f
test esi, esi
js 0x4bca8f
je 0x4bbb1f
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x4bca8f
mov eax, dword [ebp - 0x28]
imul eax, dword [ebp + 0x1c]
push eax
call dword [sym.imp.ucrtbased.dll_malloc]
mov ecx, dword [ebp + 8]
add esp, 4
mov dword [ecx + 0xc], eax
test eax, eax
je 0x4bca99
mov ecx, dword [ebp - 0x24]
test ecx, ecx
js 0x4bca7c
mov esi, dword [ebp + 0x18]
test esi, esi
je 0x4bbb61
xor edx, edx
mov eax, 0x7fffffff
div esi
cmp ecx, eax
jg 0x4bca7c
imul ecx, esi
mov dword [ebp - 0x18], ecx
test ecx, ecx
js 0x4bca7c
test edi, edi
js 0x4bca7c
je 0x4bbb8a
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x4bca7c
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x4bca7c
mov eax, ecx
imul eax, edi
add eax, 7
shr eax, 3
mov dword [ebp - 0x3c], eax
inc eax
imul eax, dword [ebp + 0x1c]
cmp dword [ebp + 0x10], eax
jae 0x4bbbc5
pop edi
pop esi
mov dword [0x54d318], 0x4fc12c
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp + 0x1c]
xor edx, edx
mov dword [ebp - 0x38], edx
test eax, eax
je 0x4bc673
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x20]
mov dword [ebp - 0x18], ecx
nop
mov ecx, dword [ebp + 8]
mov eax, edx
imul eax, dword [ebp - 0x28]
mov ecx, dword [ecx + 0xc]
add ecx, eax
mov dword [ebp - 0x54], eax
movzx eax, byte [edi]
inc edi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x20], eax
cmp eax, 4
ja 0x4bc6c5
cmp esi, 8
jge 0x4bbc32
mov ebx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x3c]
cmp esi, ebx
ja 0x4bc6b2
mov eax, dword [ebp + 0x14]
imul eax, ebx
mov ebx, 1
mov dword [ebp - 4], ebx
mov dword [ebp - 0x34], esi
sub eax, esi
add ecx, eax
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x14], ecx
mov esi, ecx
sub esi, dword [ebp - 0x28]
mov dword [ebp - 0x10], esi
test edx, edx
jne 0x4bbc48
movzx eax, byte [eax + 0x53e2fc]
mov dword [ebp - 0x20], eax
test ebx, ebx
jle 0x4bbd44
mov eax, esi
mov edx, edi
sub eax, edi
mov esi, ebx
sub ecx, edi
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x30], ecx
cmp dword [ebp - 0x20], 6
ja case.default.0x4bbc69
mov ebx, dword [ebp - 0x20]
jmp dword [ebx*4 + 0x4bcaac]
mov ebx, dword [ebp - 4]
inc edx
sub esi, 1
jne 0x4bbc60
jmp 0x4bbd3e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x4bbc81
jmp 0x4bbd3e
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x4bbc97
jmp 0x4bbd3e
mov ebx, dword [ebp - 4]
nop dword [eax]
mov al, byte [eax + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x4bbd3e
mov eax, dword [ebp - 0x1c]
jmp 0x4bbcb0
mov ebx, dword [ebp - 4]
nop word [eax + eax]
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 0x4bbd3e
mov eax, dword [ebp - 0x1c]
jmp 0x4bbcd0
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 - 0x30]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub esi, 1
je 0x4bbd3e
mov eax, dword [ebp - 0x1c]
jmp 0x4bbcf0
mov ebx, dword [ebp - 4]
mov al, byte [edx]
lea edx, [edx + 1]
mov byte [ecx + edx - 1], al
sub esi, 1
jne 0x4bbd15
jmp 0x4bbd3e
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 0x4bbd30
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
mov eax, dword [ebp + 0x20]
cmp eax, 8
jne 0x4bbd73
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp - 0x24]
cmp edx, eax
je 0x4bbd5a
mov byte [ecx + edx], 0xff
add edi, edx
add esi, eax
mov edx, edi
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
jmp 0x4bbdbe
cmp eax, 0x10
jne 0x4bbda1
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp + 0x14]
je 0x4bbd86
mov word [ecx + ebx], 0xffff
add esi, dword [ebp - 8]
add edi, ebx
add ecx, dword [ebp - 8]
mov edx, edi
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], esi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
jmp 0x4bbdbe
inc edi
inc esi
inc ecx
mov dword [ebp + 0xc], edi
mov dword [ebp - 0xc], esi
mov edx, edi
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], ecx
cmp eax, 8
jl 0x4bc31f
mov ebx, dword [ebp - 0x24]
cmp ebx, dword [ebp + 0x14]
mov ebx, dword [ebp - 4]
je 0x4bc31f
cmp dword [ebp - 0x20], 6
ja case.default.0x4bbddc
mov eax, dword [ebp - 0x20]
mov edi, edx
jmp dword [eax*4 + 0x4bcac8]
mov edx, dword [ebp + 0x18]
mov esi, dword [ebp - 0x10]
dec edx
mov eax, dword [ebp - 8]
mov edi, esi
mov dword [ebp - 0x2c], edx
cmp edx, 1
jb case.default.0x4bbddc
nop dword [eax + eax]
test ebx, ebx
jle 0x4bbe28
mov eax, edi
mov esi, ebx
sub eax, ecx
mov edx, ecx
mov dword [ebp - 0x30], eax
mov ebx, eax
mov al, byte [edx + ebx]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x4bbe11
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
sub edx, 1
mov dword [ebp - 0x2c], edx
jne 0x4bbe00
jmp case.default.0x4bbddc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x2c], esi
cmp esi, 1
jb case.default.0x4bbddc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x20], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x4bbe8f
mov dword [ebp - 0x30], edi
sub edi, ecx
nop dword [eax + eax]
mov ebx, dword [ebp - 0x20]
lea edx, [esi + ecx]
mov al, byte [edx + edi]
add al, byte [ebx + esi]
inc esi
mov ebx, dword [ebp - 4]
mov byte [edx], al
cmp esi, ebx
jl 0x4bbe70
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x20]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x20], edx
sub dword [ebp - 0x2c], 1
jne 0x4bbe60
jmp case.default.0x4bbddc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x2c], edi
mov edi, edx
cmp dword [ebp - 0x2c], 1
jb case.default.0x4bbddc
lea edx, [ecx + ebx]
mov dword [ebp + 0xc], edi
mov dword [ebp - 0x10], edx
mov edx, 0x20
sub edx, ebx
mov dword [ebp - 0x40], edx
xor edx, edx
test ebx, ebx
jle 0x4bc061
cmp ebx, 8
jb 0x4bc029
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x4bbefc
lea eax, [ecx - 1]
add eax, ebx
cmp eax, edi
jae 0x4bc029
lea eax, [esi - 1]
add eax, ebx
cmp ecx, eax
ja 0x4bbf12
lea eax, [ecx - 1]
add eax, ebx
cmp eax, esi
jae 0x4bc029
cmp ebx, 0x40
jb 0x4bbfcb
mov eax, ebx
and eax, 0x8000003f
jns 0x4bbf29
dec eax
or eax, 0xffffffc0
inc eax
mov dword [ebp - 0x20], ebx
mov ebx, esi
sub dword [ebp - 0x20], eax
sub ebx, edi
mov eax, dword [ebp - 0x10]
add eax, dword [ebp - 0x40]
mov dword [ebp - 0x1c], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x30], ebx
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x30]
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x1c]
mov dword [ebp - 0x48], ebx
mov ebx, dword [ebp - 0x44]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + esi]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
paddb xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
mov edi, dword [ebp - 0x48]
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [edi + ebx - 0x40]
mov edi, dword [ebp - 0x30]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0x20]
jl 0x4bbf60
mov ebx, dword [ebp - 4]
mov eax, ebx
mov ecx, dword [ebp - 0x14]
and al, 0x3f
mov edi, dword [ebp + 0xc]
cmp al, 8
jb 0x4bc025
jmp 0x4bbfd2
mov eax, esi
sub eax, edi
mov dword [ebp - 0x1c], eax
mov eax, ebx
and eax, 0x80000007
jns 0x4bbfe0
dec eax
or eax, 0xfffffff8
inc eax
mov dword [ebp - 0x20], ebx
mov ebx, ecx
sub dword [ebp - 0x20], eax
sub ebx, edi
mov dword [ebp - 0x48], ebx
lea eax, [edx + edi]
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x48]
nop word [eax + eax]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [esi + eax - 8], xmm1
cmp edx, dword [ebp - 0x20]
jl 0x4bc000
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
cmp edx, ebx
jge 0x4bc05e
mov eax, dword [ebp - 0xc]
lea esi, [edx + edi]
sub ecx, edi
mov dword [ebp - 0x48], ebx
sub eax, edi
mov dword [ebp - 0x30], ecx
sub ebx, edx
mov dword [ebp - 0x44], eax
mov edx, dword [ebp - 0x30]
mov ecx, eax
mov al, byte [ecx + esi]
lea esi, [esi + 1]
add al, byte [esi - 1]
mov byte [edx + esi - 1], al
sub ebx, 1
jne 0x4bc043
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x10]
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add esi, eax
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0xc], esi
mov byte [edx], 0xff
add edx, eax
sub dword [ebp - 0x2c], 1
mov dword [ebp - 0x10], edx
jne 0x4bbed3
jmp case.default.0x4bbddc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x20], edi
mov edi, edx
cmp dword [ebp - 0x20], 1
jb case.default.0x4bbddc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
nop word [eax + eax]
mov dword [ebp - 0x48], 0
test ebx, ebx
jle 0x4bc101
mov eax, dword [ebp - 0xc]
mov esi, edi
sub eax, edi
sub ecx, edi
mov dword [ebp - 0x40], ecx
mov edi, eax
mov ecx, dword [ebp - 0x48]
mov dword [ebp - 0x44], eax
nop
mov eax, dword [ebp - 0x2c]
lea esi, [esi + 1]
movzx edx, byte [edi + esi - 1]
movzx eax, byte [eax + ecx]
inc ecx
add edx, eax
mov eax, dword [ebp - 0x40]
shr edx, 1
add dl, byte [esi - 1]
mov byte [eax + esi - 1], dl
cmp ecx, ebx
jl 0x4bc0d0
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add ecx, eax
mov dword [ebp + 0xc], edi
add edx, eax
mov dword [ebp - 0x14], ecx
add esi, eax
mov dword [ebp - 0x2c], edx
sub dword [ebp - 0x20], 1
mov dword [ebp - 0xc], esi
jne 0x4bc0b0
jmp case.default.0x4bbddc
mov edi, dword [ebp + 0x18]
mov eax, dword [ebp - 8]
dec edi
mov dword [ebp - 0x2c], edi
mov edi, edx
cmp dword [ebp - 0x2c], 1
jb case.default.0x4bbddc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x10], edx
test ebx, ebx
jle 0x4bc1f1
mov dword [ebp - 0x48], edx
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x1c], ebx
mov ebx, dword [ebp - 0x48]
mov edx, esi
sub edx, edi
mov dword [ebp - 0x44], edi
mov dword [ebp - 0x4c], eax
mov ecx, edi
mov dword [ebp - 0x50], edx
nop dword [eax + eax]
movzx eax, byte [ebx + eax]
movzx edi, byte [edx + ecx]
movzx edx, byte [ebx]
mov dword [ebp - 0x30], eax
mov esi, edx
sub esi, eax
mov dword [ebp - 0x40], edi
add edi, esi
mov dword [ebp - 0x20], 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 0x4bc1ba
cmp eax, esi
jle 0x4bc1c6
mov eax, dword [ebp - 0x30]
cmp edx, esi
cmovle eax, dword [ebp - 0x40]
mov dword [ebp - 0x20], eax
mov al, byte [ecx]
inc ecx
mov edx, dword [ebp - 8]
add al, byte [ebp - 0x20]
mov byte [ebx + edx], al
inc ebx
sub dword [ebp - 0x1c], 1
mov eax, dword [ebp - 0x4c]
mov edx, dword [ebp - 0x50]
jne 0x4bc170
mov ecx, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov edx, 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 - 0x14], ecx
add esi, eax
mov dword [ebp - 0x10], edx
sub dword [ebp - 0x2c], 1
mov dword [ebp - 0xc], esi
jne 0x4bc144
jmp case.default.0x4bbddc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x30], esi
cmp esi, 1
jb case.default.0x4bbddc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
xor esi, esi
test ebx, ebx
jle 0x4bc260
sub edi, ecx
mov dword [ebp - 0x50], edi
mov eax, dword [ebp - 0x2c]
lea edx, [esi + ecx]
mov al, byte [eax + esi]
inc esi
shr al, 1
add al, byte [edx + edi]
mov byte [edx], al
cmp esi, ebx
jl 0x4bc242
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 0x2c]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x2c], edx
sub dword [ebp - 0x30], 1
jne 0x4bc237
jmp case.default.0x4bbddc
mov esi, dword [ebp + 0x18]
mov edi, edx
mov eax, dword [ebp - 8]
dec esi
mov dword [ebp - 0x30], esi
cmp esi, 1
jb case.default.0x4bbddc
mov edx, ecx
mov dword [ebp + 0xc], edi
sub edx, eax
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x50], 0
test ebx, ebx
jle 0x4bc2cf
mov eax, edi
mov edi, dword [ebp - 0x50]
sub eax, ecx
mov dword [ebp - 0x4c], eax
nop dword [eax + eax]
lea esi, [edi + ecx]
mov al, byte [esi + eax]
add al, byte [edx + edi]
inc edi
mov edx, dword [ebp - 0x2c]
mov byte [esi], al
mov eax, dword [ebp - 0x4c]
cmp edi, ebx
jl 0x4bc2b0
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp - 8]
mov esi, dword [ebp - 0x30]
mov byte [ecx + ebx], 0xff
add edi, ebx
add edx, eax
mov dword [ebp + 0xc], edi
add ecx, eax
mov dword [ebp - 0x2c], edx
sub esi, 1
mov dword [ebp - 0x30], esi
jne 0x4bc293
mov esi, dword [ebp + 0x20]
mov eax, dword [ebp - 8]
cmp esi, 0x10
jne 0x4bc65b
mov ecx, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ecx, dword [ecx + 0xc]
inc ecx
test edx, edx
je 0x4bc65b
add ecx, dword [ebp - 0x54]
add ecx, ebx
nop dword [eax]
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x4bc310
jmp 0x4bc65b
mov eax, dword [ebp - 0x34]
mov edx, dword [ebp - 0x20]
dec eax
imul eax, ebx
mov dword [ebp - 0x10], eax
cmp edx, 6
ja case.default.0x4bc335
jmp dword [edx*4 + 0x4bcae4]
push eax
push edi
push ecx
call fcn.0044e815
add esp, 0xc
jmp case.default.0x4bc335
xor esi, esi
test eax, eax
jle case.default.0x4bc335
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x54], eax
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
mov ebx, dword [ebp - 0x50]
lea edx, [ecx + esi]
mov al, byte [edi + esi]
inc esi
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0x10]
jl 0x4bc367
jmp 0x4bc64f
xor edx, edx
test eax, eax
jle case.default.0x4bc335
cmp eax, 8
jb 0x4bc4ce
dec eax
mov dword [ebp - 0x54], eax
lea ebx, [eax + ecx]
add eax, edi
mov dword [ebp - 0x30], ebx
cmp ecx, eax
ja 0x4bc3ab
cmp ebx, edi
jae 0x4bc4ce
mov eax, dword [ebp - 0x54]
add eax, esi
cmp ecx, eax
ja 0x4bc3bd
cmp dword [ebp - 0x30], esi
jae 0x4bc4ce
mov eax, dword [ebp - 0x10]
cmp eax, 0x40
jb 0x4bc473
and eax, 0x8000003f
jns 0x4bc3d5
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, dword [ebp - 0x10]
sub ebx, eax
lea eax, [ecx + 0x20]
mov dword [ebp - 0x48], ebx
mov ebx, esi
sub ebx, edi
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x1c], ebx
lea eax, [edi + 0x10]
mov ebx, ecx
sub ebx, edi
mov edi, dword [ebp - 0x1c]
mov dword [ebp - 0x50], ebx
mov ebx, esi
sub ebx, ecx
mov ecx, dword [ebp - 0x50]
mov dword [ebp - 0x4c], ebx
mov ebx, dword [ebp - 0x54]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edx]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [edi + eax - 0x40]
mov edi, dword [ebp - 0x4c]
movups xmm0, xmmword [eax - 0x40]
paddb xmm1, xmm0
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm1, xmmword [edi + ebx - 0x40]
mov edi, dword [ebp - 0x1c]
movups xmm0, xmmword [eax - 0x30]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [ebp - 0x48]
jl 0x4bc404
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
and al, 0x3f
mov ebx, dword [ebp - 4]
mov edi, dword [ebp + 0xc]
cmp al, 8
jb 0x4bc4c5
mov eax, dword [ebp - 0x10]
jmp 0x4bc476
sub dword [ebp - 0x1c], edi
and eax, 0x80000007
jns 0x4bc482
dec eax
or eax, 0xfffffff8
inc eax
mov ebx, dword [ebp - 0x10]
sub ebx, eax
lea eax, [edi + edx]
mov dword [ebp - 0x50], ebx
mov ebx, ecx
sub ebx, edi
mov dword [ebp - 0x54], ebx
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x54]
nop word [eax + eax]
movq xmm1, qword [ebx + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
paddb xmm1, xmm0
movq qword [esi + eax - 8], xmm1
cmp edx, dword [ebp - 0x50]
jl 0x4bc4a0
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 0xc]
cmp edx, dword [ebp - 0x10]
jge case.default.0x4bc335
mov ebx, dword [ebp - 0x10]
lea eax, [edi + edx]
sub esi, edi
mov dword [ebp - 0x54], eax
sub ecx, edi
sub ebx, edx
mov edx, eax
nop
mov al, byte [esi + edx]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x4bc4e0
jmp 0x4bc652
xor edx, edx
mov dword [ebp - 0x30], edx
test eax, eax
jle case.default.0x4bc335
mov eax, ecx
mov dword [ebp - 0x54], edi
sub eax, ebx
sub esi, edi
mov ebx, dword [ebp - 0x10]
sub ecx, edi
mov dword [ebp - 0x50], eax
nop word [eax + eax]
movzx edx, byte [eax + edx]
lea edi, [edi + 1]
movzx eax, byte [esi + edi - 1]
add edx, eax
mov eax, dword [ebp - 0x50]
shr edx, 1
add dl, byte [edi - 1]
mov byte [ecx + edi - 1], dl
mov edx, dword [ebp - 0x30]
inc edx
mov dword [ebp - 0x30], edx
cmp edx, ebx
jl 0x4bc520
jmp 0x4bc64f
test eax, eax
jle case.default.0x4bc335
mov edx, ecx
mov dword [ebp - 0x2c], edi
sub edx, ebx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x54], edx
mov edx, esi
sub edx, ecx
mov ecx, dword [ebp - 0x2c]
sub esi, edi
mov dword [ebp - 0x48], edx
mov edi, dword [ebp - 0x54]
mov dword [ebp - 0xc], esi
movzx eax, byte [edx + edi]
movzx esi, byte [esi + ecx]
movzx edx, byte [edi]
mov dword [ebp - 0x30], eax
mov ecx, edx
sub ecx, eax
mov dword [ebp - 0x4c], esi
add esi, ecx
mov dword [ebp - 0x20], edx
mov eax, esi
sub esi, dword [ebp - 0x30]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x54], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [ebp - 0x50], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [ebp - 0x54]
xor ecx, edx
sub ecx, edx
mov edx, dword [ebp - 0x50]
cmp eax, edx
jg 0x4bc5bb
cmp eax, ecx
jle 0x4bc5c7
mov eax, dword [ebp - 0x30]
cmp edx, ecx
cmovle eax, dword [ebp - 0x4c]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x2c]
mov esi, dword [ebp - 0xc]
mov edx, dword [ebp - 0x48]
mov al, byte [ecx]
inc ecx
add al, byte [ebp - 0x20]
mov byte [edi + ebx], al
inc edi
sub dword [ebp - 0x1c], 1
mov dword [ebp - 0x2c], ecx
jne 0x4bc571
mov edi, dword [ebp + 0xc]
jmp case.default.0x4bc335
xor esi, esi
test eax, eax
jle case.default.0x4bc335
mov eax, ecx
sub eax, ebx
mov dword [ebp - 0x54], eax
mov eax, edi
mov edi, dword [ebp - 0x54]
sub eax, ecx
mov dword [ebp - 0x50], eax
nop
mov al, byte [edi + esi]
lea edx, [ecx + esi]
mov ebx, dword [ebp - 0x50]
inc esi
shr al, 1
add al, byte [edx + ebx]
mov byte [edx], al
cmp esi, dword [ebp - 0x10]
jl 0x4bc600
jmp 0x4bc64f
mov dword [ebp - 0x54], 0
test eax, eax
jle case.default.0x4bc335
mov eax, ecx
mov edx, edi
mov edi, dword [ebp - 0x54]
sub eax, ebx
mov ebx, dword [ebp - 0x10]
sub edx, ecx
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x50], edx
mov dl, byte [eax + edi]
lea esi, [ecx + edi]
mov eax, dword [ebp - 0x50]
inc edi
mov al, byte [esi + eax]
add al, dl
mov byte [esi], al
mov eax, dword [ebp - 0x4c]
cmp edi, ebx
jl 0x4bc637
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
add edi, dword [ebp - 0x10]
mov esi, dword [ebp + 0x20]
mov edx, dword [ebp - 0x38]
mov eax, dword [ebp + 0x1c]
inc edx
mov dword [ebp - 0x38], edx
cmp edx, eax
jb 0x4bbbe0
mov edi, dword [ebp + 0x20]
mov esi, dword [ebp + 0x18]
cmp edi, 8
jge 0x4bca38
test eax, eax
je 0x4bca70
mov ebx, dword [ebp + 0x14]
imul ebx, esi
xor ecx, ecx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x4c], ebx
mov eax, dword [ebp + 8]
mov esi, ebx
sub esi, dword [ebp - 0x3c]
mov eax, dword [eax + 0xc]
add esi, eax
add esi, ecx
cmp dword [ebp + 0x24], 0
lea edx, [eax + ecx]
jne 0x4bc6d8
mov bl, byte [edi + 0x4fb6e4]
jmp 0x4bc6da
pop edi
pop esi
mov dword [0x54d318], 0x4fc158
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov dword [0x54d318], 0x4fc144
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
mov bl, 1
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x18], ecx
cmp edi, 4
jne 0x4bc747
mov eax, ecx
mov dword [ebp - 0x2c], eax
cmp eax, 2
jl 0x4bc735
mov edi, eax
shr edi, 1
mov eax, edi
neg eax
lea ecx, [ecx + eax*2]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x18], 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 0x4bc706
mov eax, dword [ebp - 0x2c]
test eax, eax
jle 0x4bc999
mov cl, byte [esi]
shr cl, 4
jmp 0x4bc98e
cmp edi, 2
jne 0x4bc80d
mov edi, ecx
mov dword [ebp - 0x2c], edi
cmp edi, 4
jl 0x4bc7c9
shr edi, 2
mov eax, edi
neg eax
lea ecx, [ecx + eax*4]
mov dword [ebp - 0x2c], ecx
mov ecx, dword [ebp - 0x38]
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 0x4bc770
mov edi, dword [ebp - 0x2c]
test edi, edi
jle 0x4bc7de
mov cl, byte [esi]
shr cl, 6
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
inc edx
cmp edi, 1
jle 0x4bc7f7
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
cmp edi, 2
jle 0x4bc999
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x4bc98e
cmp edi, 1
jne 0x4bc999
mov edi, ecx
mov dword [ebp - 0x18], ecx
cmp edi, 8
jl 0x4bc8f0
mov eax, edi
mov dword [ebp - 0x18], ecx
shr eax, 3
mov dword [ebp - 0x54], eax
neg eax
lea edi, [edi + eax*8]
mov dword [ebp - 0x50], edi
mov edi, dword [ebp - 0x54]
nop word [eax + eax]
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 0x4bc840
mov edi, dword [ebp - 0x50]
test edi, edi
jle 0x4bc905
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 0x4bc91e
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 0x4bc937
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 0x4bc950
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 0x4bc969
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 0x4bc982
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
jle 0x4bc999
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov ebx, dword [ebp - 0x24]
cmp ebx, dword [ebp + 0x14]
je 0x4bca13
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x18]
dec ecx
mov edx, dword [eax + 0xc]
add edx, dword [ebp - 0x20]
cmp ebx, 1
jne 0x4bc9d2
test ecx, ecx
js 0x4bca13
nop word [eax + eax]
mov byte [edx + ecx*2 + 1], 0xff
mov al, byte [ecx + edx]
mov byte [edx + ecx*2], al
sub ecx, 1
jns 0x4bc9c0
jmp 0x4bca13
test ecx, ecx
js 0x4bca13
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 0x4bc9f0
mov ecx, dword [ebp - 0x20]
add ecx, dword [ebp - 0x28]
sub dword [ebp + 0x1c], 1
mov ebx, dword [ebp - 0x4c]
mov edi, dword [ebp + 0x20]
mov dword [ebp - 0x20], ecx
jne 0x4bc692
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
cmp edi, 0x10
jne 0x4bca70
mov ebx, dword [ebp + 0x14]
imul ebx, dword [ebp + 0x18]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0xc]
mov edx, esi
imul ebx, eax
test ebx, ebx
je 0x4bca70
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 ebx, 1
jne 0x4bca53
pop edi
pop esi
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
mov dword [0x54d318], 0x4fc120
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 [0x54d318], 0x4fc02c
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret