Function at 0x10078d40
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x60
push ebx
push ebp
mov eax, ecx
mov ebp, edx
push esi
xor ecx, ecx
mov dword [esp + 0x30], eax
push edi
mov edi, dword [esp + 0x84]
cmp edi, 0x10
mov eax, dword [eax]
sete cl
inc ecx
mov esi, ecx
imul esi, dword [esp + 0x78]
mov eax, dword [eax + 8]
mov ebx, eax
imul ebx, ecx
mov ecx, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
mov edx, esi
mov dword [esp + 0x1c], esi
imul edx, dword [esp + 0x7c]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x30], edx
test ecx, ecx
js 0x10079ded
mov eax, dword [esp + 0x80]
test eax, eax
js 0x10079ded
je 0x10078dc5
xor edx, edx
mov eax, 0x7fffffff
div dword [esp + 0x80]
cmp ecx, eax
jg 0x10079ded
mov eax, dword [esp + 0x80]
imul ecx, eax
test ecx, ecx
js 0x10079ded
test esi, esi
js 0x10079ded
je 0x10078dea
mov eax, 0x7fffffff
cdq
idiv esi
cmp ecx, eax
jg 0x10079ded
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x80]
push eax
call fcn.1012189d
mov ecx, dword [esp + 0x38]
add esp, 4
mov dword [esp + 0x54], eax
mov dword [ecx + 0xc], eax
test eax, eax
je 0x10079df8
mov ecx, dword [esp + 0x2c]
test ecx, ecx
js 0x10079dca
mov edx, dword [esp + 0x7c]
test edx, edx
je 0x10078e3d
xor edx, edx
mov eax, 0x7fffffff
div dword [esp + 0x7c]
cmp ecx, eax
jg 0x10079dca
mov edx, dword [esp + 0x7c]
imul ecx, edx
test ecx, ecx
js 0x10079dca
test edi, edi
js 0x10079dca
je 0x10078e67
xor edx, edx
mov eax, 0x7fffffff
div edi
cmp ecx, eax
jg 0x10079dca
mov edx, dword [esp + 0x7c]
mov eax, ecx
imul eax, edi
cmp eax, 0x7ffffff8
jg 0x10079dca
mov esi, ecx
imul esi, edi
add esi, 7
shr esi, 3
mov dword [esp + 0x50], esi
lea eax, [esi + 1]
imul eax, dword [esp + 0x80]
cmp dword [esp + 0x74], eax
jae 0x10078eba
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebp
mov eax, dword [eax + ecx*4]
pop ebx
mov dword [eax + 0x10], str.not_enough_pixels
xor eax, eax
add esp, 0x60
ret
xor eax, eax
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x80], eax
jbe 0x100796ac
mov dword [esp + 0x28], ecx
imul eax, dword [esp + 0x30]
movzx esi, byte [ebp]
inc ebp
mov dword [esp + 0x18], esi
add eax, dword [esp + 0x54]
mov dword [esp + 0x6c], eax
mov ecx, eax
mov dword [esp + 0x20], ecx
cmp esi, 4
ja 0x100799e5
cmp edi, 8
jge 0x10078f23
mov edi, dword [esp + 0x50]
cmp edi, edx
ja 0x100799c2
mov eax, dword [esp + 0x78]
mov ebx, 1
imul eax, edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x4c], edi
sub eax, edi
add ecx, eax
mov dword [esp + 0x20], ecx
mov edi, ecx
sub edi, dword [esp + 0x30]
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x24], edi
jne 0x10078f3f
movzx esi, byte [esi + 0x101f35ec]
mov dword [esp + 0x18], esi
test ebx, ebx
jle 0x10078f7b
mov eax, edi
mov edx, ebp
sub eax, ebp
mov edi, ebx
sub ecx, ebp
mov dword [esp + 0x10], eax
mov dword [esp + 0x48], ecx
cmp dword [esp + 0x18], 6
mov esi, edx
ja case.default.0x10078f62
mov ebx, dword [esp + 0x18]
jmp dword [ebx*4 + 0x10079e1c]
mov ebx, dword [esp + 0x14]
inc edx
sub edi, 1
jne 0x10078f55
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x84]
cmp eax, 8
jne 0x1007907a
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0x2c]
cmp edx, eax
je 0x10078f9b
mov byte [ecx + edx], 0xff
add ebp, edx
add edi, eax
add ecx, eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], edi
mov edx, ebp
mov dword [esp + 0x20], ecx
jmp 0x100790c7
mov ebx, dword [esp + 0x14]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov esi, edx
jmp 0x10078fb8
mov ebx, dword [esp + 0x14]
nop dword [eax + eax]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov esi, edx
jmp 0x10078fd0
mov ebx, dword [esp + 0x14]
mov al, byte [eax + esi]
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov eax, dword [esp + 0x10]
mov esi, edx
jmp 0x10078fe3
mov ebx, dword [esp + 0x14]
nop dword [eax]
mov al, byte [eax + esi]
shr al, 1
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov eax, dword [esp + 0x10]
mov esi, edx
jmp 0x10079000
mov ebx, dword [esp + 0x14]
mov cl, byte [eax + esi]
xor al, al
cmp al, cl
sbb al, al
and al, cl
mov ecx, dword [esp + 0x48]
add al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov eax, dword [esp + 0x10]
mov esi, edx
jmp 0x10079020
mov ebx, dword [esp + 0x14]
nop word [eax + eax]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov esi, edx
jmp 0x10079050
mov ebx, dword [esp + 0x14]
mov al, byte [edx]
inc edx
mov byte [esi + ecx], al
sub edi, 1
je 0x10078f73
mov esi, edx
jmp 0x10079067
cmp eax, 0x10
jne 0x100790ad
mov eax, dword [esp + 0x2c]
cmp eax, dword [esp + 0x78]
je 0x1007908f
mov word [ecx + ebx], 0xffff
mov eax, dword [esp + 0x1c]
add ebp, ebx
mov ecx, dword [esp + 0x20]
add edi, eax
add ecx, eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], edi
mov edx, ebp
mov dword [esp + 0x20], ecx
jmp 0x100790cb
inc ebp
inc edi
inc ecx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x24], edi
mov edx, ebp
mov dword [esp + 0x20], ecx
cmp eax, 8
jl 0x1007961c
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x2c]
cmp esi, dword [esp + 0x78]
mov esi, dword [esp + 0x18]
je 0x1007961c
cmp esi, 6
ja case.default.0x100790e8
mov ebp, edx
jmp dword [esi*4 + 0x10079e38]
mov esi, dword [esp + 0x7c]
mov ebp, edx
dec esi
mov dword [esp + 0x38], esi
cmp esi, 1
jb case.default.0x100790e8
test ebx, ebx
jle 0x10079126
mov edi, ebp
mov edx, ecx
sub edi, ecx
mov esi, ebx
nop
mov al, byte [edx + edi]
lea edx, [edx + 1]
mov byte [edx - 1], al
sub esi, 1
jne 0x10079110
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
mov byte [ebx + ecx], 0xff
add ebp, ebx
add ecx, eax
sub esi, 1
mov dword [esp + 0x38], esi
jne 0x10079103
jmp case.default.0x100790e8
mov edi, dword [esp + 0x7c]
mov ebp, edx
dec edi
mov dword [esp + 0x38], edi
cmp edi, 1
jb case.default.0x100790e8
mov edx, ecx
mov dword [esp + 0x10], ebp
sub edx, eax
mov dword [esp + 0x24], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x10079190
mov edi, ebp
mov ebp, dword [esp + 0x24]
sub edi, ecx
nop
lea edx, [esi + ecx]
mov al, byte [edx + edi]
add al, byte [esi + ebp]
inc esi
mov byte [edx], al
cmp esi, ebx
jl 0x10079170
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x10], ebp
add ecx, eax
mov dword [esp + 0x24], edx
sub edi, 1
mov dword [esp + 0x38], edi
jne 0x10079160
jmp case.default.0x100790e8
mov esi, dword [esp + 0x7c]
mov ebp, edx
dec esi
mov dword [esp + 0x18], esi
cmp esi, 1
jb case.default.0x100790e8
lea edx, [ecx + ebx]
mov dword [esp + 0x10], ebp
mov dword [esp + 0x38], edx
mov edx, 0x20
sub edx, ebx
mov dword [esp + 0x48], edx
mov edx, esi
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x10079306
cmp ebx, 0x40
jb 0x100792cb
lea eax, [ebp - 1]
lea edx, [ecx - 1]
add eax, ebx
add edx, ebx
cmp ecx, eax
ja 0x10079209
cmp edx, ebp
jae 0x100792cb
lea eax, [edi - 1]
add eax, ebx
cmp ecx, eax
ja 0x1007921a
cmp edx, edi
jae 0x100792cb
mov eax, ebx
and eax, 0x8000003f
jns 0x10079228
dec eax
or eax, 0xffffffc0
inc eax
mov edx, ebx
mov ebx, edi
sub ebx, ebp
sub edx, eax
mov dword [esp + 0x44], ebx
lea eax, [ebp + 0x10]
mov ebx, ecx
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0x48]
sub ebx, ebp
add edx, dword [esp + 0x38]
mov dword [esp + 0x40], ebx
mov ebx, edi
mov ebp, dword [esp + 0x40]
sub ebx, ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x58], ebx
nop dword [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov ebx, dword [esp + 0x58]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edi]
lea edx, [edx + 0x40]
paddb xmm1, xmm0
movups xmmword [edx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [ecx + eax - 0x40]
paddb xmm1, xmm0
movups xmmword [eax + ebp - 0x40], xmm1
movups xmm1, xmmword [ebx + edx - 0x40]
mov ebx, dword [esp + 0x14]
movups xmm0, xmmword [eax - 0x30]
paddb xmm1, xmm0
movups xmmword [edx - 0x40], xmm1
movups xmm1, xmmword [edi + esi + 0x30]
add esi, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [edx - 0x30], xmm1
cmp esi, dword [esp + 0x5c]
jl 0x10079260
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x5c], esi
cmp esi, ebx
jge 0x100792fe
mov dword [esp + 0x5c], edi
lea edx, [esi + ebp]
mov eax, ecx
mov dword [esp + 0x5c], ebx
sub eax, ebp
sub edi, ebp
sub ebx, esi
mov dword [esp + 0x58], eax
mov esi, eax
mov al, byte [edx + edi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [esi + edx - 1], al
sub ebx, 1
jne 0x100792e4
mov ebx, dword [esp + 0x14]
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x38]
add ebp, ebx
add ecx, eax
mov dword [esp + 0x10], ebp
add edi, eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], edi
mov byte [esi], 0xff
add esi, eax
sub edx, 1
mov dword [esp + 0x38], esi
mov dword [esp + 0x18], edx
jne 0x100791e0
jmp case.default.0x100790e8
mov esi, dword [esp + 0x7c]
mov ebp, edx
dec esi
mov dword [esp + 0x18], esi
cmp esi, 1
jb case.default.0x100790e8
mov edx, ecx
mov dword [esp + 0x10], ebp
sub edx, eax
mov dword [esp + 0x38], edx
nop word [eax + eax]
mov dword [esp + 0x5c], 0
test ebx, ebx
jle 0x100793c8
sub edi, ebp
mov esi, ebp
sub ecx, ebp
mov dword [esp + 0x58], edi
mov edi, dword [esp + 0x5c]
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x48]
nop word [eax + eax]
mov eax, dword [esp + 0x38]
lea esi, [esi + 1]
movzx edx, byte [esi + ecx - 1]
movzx eax, byte [eax + edi]
inc edi
add edx, eax
shr edx, 1
add dl, byte [esi - 1]
mov byte [esi + ebp - 1], dl
cmp edi, ebx
jl 0x10079390
mov ecx, dword [esp + 0x20]
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov esi, dword [esp + 0x18]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x10], ebp
add edx, eax
mov dword [esp + 0x20], ecx
add edi, eax
mov dword [esp + 0x38], edx
sub esi, 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x18], esi
jne 0x10079360
jmp case.default.0x100790e8
mov esi, dword [esp + 0x7c]
mov ebp, edx
dec esi
mov dword [esp + 0x48], esi
cmp esi, 1
jb case.default.0x100790e8
mov edx, ecx
mov dword [esp + 0x10], ebp
sub edx, eax
mov dword [esp + 0x44], edx
test ebx, ebx
jle 0x100794db
mov dword [esp + 0x5c], edx
mov eax, edi
sub eax, ecx
mov dword [esp + 0x58], ebp
mov edx, edi
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x5c]
sub edx, ebp
mov ecx, ebp
mov dword [esp + 0x64], eax
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x68], edx
movzx eax, byte [ebx + eax]
movzx edi, byte [ecx + edx]
movzx edx, byte [ebx]
mov dword [esp + 0x38], eax
mov esi, edx
sub esi, eax
mov dword [esp + 0x60], edi
add edi, esi
mov dword [esp + 0x18], edx
mov eax, edi
sub edi, dword [esp + 0x38]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x5c], eax
mov eax, esi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x58], eax
mov eax, edi
cdq
mov esi, eax
mov eax, dword [esp + 0x5c]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x58]
cmp eax, edx
jg 0x10079496
cmp eax, esi
jle 0x100794a5
mov eax, dword [esp + 0x38]
cmp edx, esi
cmovle eax, dword [esp + 0x60]
mov dword [esp + 0x18], eax
mov al, byte [ecx]
inc ecx
add al, byte [esp + 0x18]
mov edx, dword [esp + 0x68]
mov byte [ebx + ebp], al
inc ebx
sub dword [esp + 0x40], 1
mov eax, dword [esp + 0x64]
jne 0x10079444
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add ecx, eax
mov dword [esp + 0x10], ebp
add edx, eax
mov dword [esp + 0x20], ecx
add edi, eax
mov dword [esp + 0x44], edx
sub esi, 1
mov dword [esp + 0x24], edi
mov dword [esp + 0x48], esi
jne 0x10079416
jmp case.default.0x100790e8
mov edi, dword [esp + 0x7c]
mov ebp, edx
dec edi
mov dword [esp + 0x48], edi
cmp edi, 1
jb case.default.0x100790e8
mov edx, ecx
mov dword [esp + 0x10], ebp
sub edx, eax
mov dword [esp + 0x38], edx
nop dword [eax]
xor esi, esi
test ebx, ebx
jle 0x10079562
mov edi, ebp
mov ebp, dword [esp + 0x38]
sub edi, ecx
nop
mov al, byte [esi + ebp]
lea edx, [esi + ecx]
shr al, 1
inc esi
add al, byte [edx + edi]
mov byte [edx], al
cmp esi, ebx
jl 0x10079540
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x38]
mov edi, dword [esp + 0x48]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x10], ebp
add ecx, eax
mov dword [esp + 0x38], edx
sub edi, 1
mov dword [esp + 0x48], edi
jne 0x10079530
jmp case.default.0x100790e8
mov esi, dword [esp + 0x7c]
mov ebp, edx
dec esi
mov dword [esp + 0x48], esi
cmp esi, 1
jb case.default.0x100790e8
mov edx, ecx
mov dword [esp + 0x10], ebp
sub edx, eax
mov dword [esp + 0x38], edx
nop dword [eax + eax]
xor edi, edi
test ebx, ebx
jle 0x100795d0
mov dword [esp + 0x68], ebp
sub ebp, ecx
nop dword [eax]
lea esi, [edi + ecx]
mov al, byte [esi + ebp]
add al, byte [edx + edi]
inc edi
mov edx, dword [esp + 0x38]
mov byte [esi], al
cmp edi, ebx
jl 0x100795b0
mov ebp, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x48]
mov byte [ecx + ebx], 0xff
add ebp, ebx
add edx, eax
mov dword [esp + 0x10], ebp
add ecx, eax
mov dword [esp + 0x38], edx
sub esi, 1
mov dword [esp + 0x48], esi
jne 0x100795a0
mov edi, dword [esp + 0x84]
mov edx, dword [esp + 0x7c]
cmp edi, 0x10
jne 0x1007968e
test edx, edx
je 0x1007968e
mov ecx, dword [esp + 0x6c]
inc ecx
add ecx, ebx
nop
mov byte [ecx], 0xff
add ecx, eax
sub edx, 1
jne 0x10079610
jmp 0x1007968a
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
dec esi
imul esi, ebx
mov dword [esp + 0x24], esi
cmp eax, 6
ja case.default.0x10079631
jmp dword [eax*4 + 0x10079e54]
push esi
push ebp
push ecx
call fcn.1010c860
add esp, 0xc
jmp case.default.0x10079631
mov edi, dword [esp + 0x24]
xor esi, esi
test edi, edi
jle 0x1007967d
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x6c], eax
mov eax, ebp
mov ebx, dword [esp + 0x6c]
sub eax, ecx
mov dword [esp + 0x68], eax
mov ebp, eax
mov al, byte [ebx + esi]
lea edx, [ecx + esi]
add al, byte [edx + ebp]
inc esi
mov byte [edx], al
cmp esi, edi
jl 0x10079665
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
mov esi, dword [esp + 0x24]
mov edi, dword [esp + 0x84]
add ebp, esi
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
cmp eax, dword [esp + 0x80]
jb 0x10078ed1
mov ecx, dword [esp + 0x28]
mov esi, dword [esp + 0x50]
cmp edi, 8
jge 0x10079d7d
cmp dword [esp + 0x80], 0
jbe 0x10079dbd
mov eax, dword [esp + 0x34]
mov ebp, dword [eax + 0xc]
mov eax, dword [esp + 0x78]
imul eax, edx
mov dword [esp + 0x20], ebp
sub eax, esi
add eax, ebp
mov dword [esp + 0x24], eax
nop dword [eax]
cmp dword [esp + 0x88], 0
mov edx, ebp
mov esi, eax
jne 0x10079a08
mov bl, byte [edi + 0x101f35e0]
jmp 0x10079a0a
xor edx, edx
mov dword [esp + 0x38], edx
test esi, esi
jle case.default.0x10079631
cmp esi, 0x40
jb 0x10079809
lea eax, [ebp - 1]
mov dword [esp + 0x38], edx
add eax, esi
cmp ecx, eax
ja 0x1007972e
lea eax, [ecx - 1]
add eax, esi
cmp eax, ebp
jae 0x10079809
lea eax, [edi - 1]
add eax, esi
cmp ecx, eax
ja 0x10079744
lea eax, [ecx - 1]
add eax, esi
cmp eax, edi
jae 0x10079809
mov eax, esi
and eax, 0x8000003f
jns 0x10079752
dec eax
or eax, 0xffffffc0
inc eax
mov ebx, esi
sub ebx, eax
lea eax, [ecx + 0x20]
mov dword [esp + 0x60], ebx
mov ebx, edi
sub ebx, ebp
mov dword [esp + 0x6c], eax
mov dword [esp + 0x48], ebx
lea eax, [ebp + 0x10]
mov esi, dword [esp + 0x48]
mov ebx, ecx
sub ebx, ebp
mov dword [esp + 0x68], ebx
mov ebx, edi
sub ebx, ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x64]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edi + edx]
lea ebx, [ebx + 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x60], xmm1
movups xmm1, xmmword [esi + eax - 0x40]
mov esi, edi
movups xmm0, xmmword [eax - 0x40]
paddb xmm1, xmm0
movups xmmword [ecx + eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ebx + ebp - 0x40]
paddb xmm1, xmm0
movups xmmword [ebx - 0x40], xmm1
movups xmm1, xmmword [esi + edx + 0x30]
mov esi, dword [esp + 0x48]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
paddb xmm1, xmm0
movups xmmword [ebx - 0x30], xmm1
cmp edx, dword [esp + 0x60]
jl 0x10079790
mov esi, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x38], edx
cmp edx, esi
jge case.default.0x10079631
mov ebx, esi
add edx, ebp
sub edi, ebp
sub ecx, ebp
sub ebx, dword [esp + 0x38]
mov al, byte [edx + edi]
lea edx, [edx + 1]
add al, byte [edx - 1]
mov byte [ecx + edx - 1], al
sub ebx, 1
jne 0x10079815
mov ebx, dword [esp + 0x14]
jmp case.default.0x10079631
mov dword [esp + 0x68], 0
test esi, esi
jle case.default.0x10079631
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, ebx
sub edi, ebp
sub ecx, ebp
mov dword [esp + 0x64], eax
mov ebx, ebp
mov ebp, dword [esp + 0x68]
nop word [eax + eax]
movzx eax, byte [eax + ebp]
lea ebx, [ebx + 1]
movzx edx, byte [ebx + edi - 1]
inc ebp
add edx, eax
mov eax, dword [esp + 0x64]
shr edx, 1
add dl, byte [ebx - 1]
mov byte [ecx + ebx - 1], dl
cmp ebp, esi
jl 0x10079860
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
jmp case.default.0x10079631
test esi, esi
jle case.default.0x10079631
mov eax, ecx
mov dword [esp + 0x38], esi
sub eax, ebx
mov edx, ebp
mov dword [esp + 0x6c], eax
mov eax, edi
sub eax, ecx
mov dword [esp + 0x40], edx
sub edi, ebp
mov dword [esp + 0x60], eax
mov ebp, dword [esp + 0x6c]
nop word [eax + eax]
movzx eax, byte [eax + ebp]
movzx esi, byte [edi + edx]
movzx edx, byte [ebp]
mov dword [esp + 0x48], eax
mov ecx, edx
sub ecx, eax
mov dword [esp + 0x64], esi
add esi, ecx
mov dword [esp + 0x44], edx
mov eax, esi
sub esi, dword [esp + 0x48]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x6c], eax
mov eax, ecx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x68], eax
mov eax, esi
cdq
mov ecx, eax
mov eax, dword [esp + 0x6c]
xor ecx, edx
sub ecx, edx
mov edx, dword [esp + 0x68]
cmp eax, edx
jg 0x10079913
cmp eax, ecx
jle 0x10079922
mov eax, dword [esp + 0x48]
cmp edx, ecx
cmovle eax, dword [esp + 0x64]
mov dword [esp + 0x44], eax
mov edx, dword [esp + 0x40]
mov al, byte [edx]
inc edx
add al, byte [esp + 0x44]
mov byte [ebx + ebp], al
inc ebp
sub dword [esp + 0x38], 1
mov eax, dword [esp + 0x60]
mov dword [esp + 0x40], edx
jne 0x100798c0
jmp 0x10079679
mov edi, dword [esp + 0x24]
xor esi, esi
test edi, edi
jle 0x1007967d
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x6c], eax
mov eax, ebp
mov ebx, dword [esp + 0x6c]
sub eax, ecx
mov dword [esp + 0x68], eax
mov ebp, eax
nop dword [eax]
mov al, byte [ebx + esi]
lea edx, [ecx + esi]
shr al, 1
inc esi
add al, byte [edx + ebp]
mov byte [edx], al
cmp esi, edi
jl 0x10079970
jmp 0x10079675
xor edi, edi
test esi, esi
jle case.default.0x10079631
mov eax, ecx
mov dword [esp + 0x6c], ebp
sub eax, ebx
sub ebp, ecx
mov dword [esp + 0x68], eax
mov ebx, eax
lea esi, [ecx + edi]
mov al, byte [esi + ebp]
add al, byte [ebx + edi]
inc edi
mov byte [esi], al
mov esi, dword [esp + 0x24]
cmp edi, esi
jl 0x100799a1
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
jmp case.default.0x10079631
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebp
mov eax, dword [eax + ecx*4]
pop ebx
mov dword [eax + 0x10], str.invalid_width
xor eax, eax
add esp, 0x60
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebp
mov eax, dword [eax + ecx*4]
pop ebx
mov dword [eax + 0x10], str.invalid_filter
xor eax, eax
add esp, 0x60
ret
mov bl, 1
mov dword [esp + 0x28], ecx
cmp edi, 4
jne 0x10079a82
mov eax, ecx
mov dword [esp + 0x3c], eax
cmp eax, 2
jl 0x10079a70
mov edi, eax
mov dword [esp + 0x28], ecx
shr edi, 1
mov ebp, ecx
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x20]
nop dword [eax + eax]
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 0x10079a40
mov eax, dword [esp + 0x3c]
test eax, eax
jle 0x10079cd0
mov cl, byte [esi]
shr cl, 4
jmp 0x10079cc5
cmp edi, 2
jne 0x10079b4e
mov edi, ecx
mov dword [esp + 0x3c], edi
cmp edi, 4
jl 0x10079b0a
shr edi, 2
mov ebp, ecx
mov eax, edi
mov dword [esp + 0x28], ecx
neg eax
lea ebp, [ebp + eax*4]
mov dword [esp + 0x3c], ebp
mov ebp, dword [esp + 0x20]
nop
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 0x10079ab0
mov edi, dword [esp + 0x3c]
test edi, edi
jle 0x10079b1f
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 0x10079b38
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 0x10079cd0
mov cl, byte [esi]
shr cl, 2
and cl, 3
jmp 0x10079cc5
cmp edi, 1
jne 0x10079cd4
mov edi, ecx
mov dword [esp + 0x28], ecx
cmp edi, 8
jl 0x10079c27
mov ebp, edi
mov dword [esp + 0x28], ecx
shr ebp, 3
mov eax, ebp
neg eax
lea edi, [edi + eax*8]
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 ebp, 1
jne 0x10079b76
mov ebp, dword [esp + 0x20]
test edi, edi
jle 0x10079c3c
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 0x10079c55
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 0x10079c6e
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 0x10079c87
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 0x10079ca0
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 0x10079cb9
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 0x10079cd0
mov cl, byte [esi]
shr cl, 1
and cl, 1
movzx eax, bl
movzx ecx, cl
imul ecx, eax
mov byte [edx], cl
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
cmp edx, dword [esp + 0x78]
je 0x10079d47
mov ecx, dword [esp + 0x7c]
dec ecx
cmp edx, 1
jne 0x10079d03
test ecx, ecx
js 0x10079d47
nop dword [eax]
mov byte [ebp + ecx*2 + 1], 0xff
mov al, byte [ecx + ebp]
mov byte [ebp + ecx*2], al
sub ecx, 1
jns 0x10079cf0
jmp 0x10079d43
test ecx, ecx
js 0x10079d47
lea esi, [ecx*2 + 1]
add esi, ebp
lea edx, [ecx*4 + 2]
add esi, ecx
add edx, ebp
nop dword [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 0x10079d20
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x30]
add ebp, dword [esp + 0x30]
sub dword [esp + 0x80], 1
mov edi, dword [esp + 0x84]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x24], eax
mov dword [esp + 0x20], ebp
jne 0x100796e0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x60
ret
cmp edi, 0x10
jne 0x10079dbd
mov ebx, dword [esp + 0x78]
imul ebx, dword [esp + 0x7c]
mov eax, dword [esp + 0x34]
imul ebx, dword [esp + 0x80]
mov esi, dword [eax + 0xc]
mov edx, esi
test ebx, ebx
je 0x10079dbd
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 0x10079da0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x60
ret
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebp
mov eax, dword [eax + ecx*4]
pop ebx
mov dword [eax + 0x10], str.too_large
xor eax, eax
add esp, 0x60
ret
mov eax, dword [esp + 0x34]
mov dword [eax + 0xc], 0
mov ecx, dword [0x10203278]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebp
mov eax, dword [eax + ecx*4]
pop ebx
mov dword [eax + 0x10], str.outofmem
xor eax, eax
add esp, 0x60
ret