Function at 0x450b90
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
sub esp, 0x3c
mov edx, dword [esp + 0x50]
xor eax, eax
cmp dword [esp + 0x58], 0x10
push ebx
sete al
push ebp
mov ebp, dword [esp + 0x4c]
push esi
mov esi, dword [esp + 0x60]
push edi
mov dword [esp + 0x40], edx
inc eax
mov ecx, eax
imul ecx, dword [esp + 0x5c]
mov edi, ecx
imul edi, edx
mov dword [esp + 0x34], edi
mov edi, dword [esp + 0x50]
mov edi, dword [edi]
mov edi, dword [edi + 8]
mov dword [esp + 0x1c], edi
imul edi, eax
mov dword [esp + 0x10], ecx
test edx, edx
jl 0x450c2d
test esi, esi
jl 0x450c2d
je 0x450bf7
mov eax, closesocket
cdq
idiv esi
xor edx, edx
cmp dword [esp + 0x60], eax
setle dl
mov eax, edx
test eax, eax
je 0x450c2d
mov ebx, dword [esp + 0x60]
imul ebx, esi
test ebx, ebx
jl 0x450c2d
test ecx, ecx
jl 0x450c2d
je 0x450c1d
mov eax, closesocket
cdq
idiv ecx
xor edx, edx
cmp ebx, eax
setle dl
mov eax, edx
test eax, eax
je 0x450c2d
imul ecx, dword [esp + 0x60]
imul ecx, esi
cmp ecx, 0x7fffffff
jle 0x450c35
xor ecx, ecx
mov dword [esp + 0x30], ecx
jmp 0x450c44
push ecx
call fcn.0049b122
add esp, 4
mov ecx, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x50]
mov dword [eax + 0xc], ecx
test ecx, ecx
jne 0x450c69
mov ecx, dword fs:[0x2c]
mov edx, dword [ecx]
pop edi
pop esi
pop ebp
mov dword [edx + 4], str.outofmem
xor eax, eax
pop ebx
add esp, 0x3c
ret
cmp dword [esp + 0x1c], 0
jl 0x450cd9
mov ebx, dword [esp + 0x60]
test ebx, ebx
jl 0x450cd9
je 0x450c91
mov eax, closesocket
cdq
idiv ebx
xor edx, edx
cmp dword [esp + 0x1c], eax
setle dl
mov eax, edx
test eax, eax
je 0x450cd9
mov ebx, dword [esp + 0x1c]
imul ebx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x28], ebx
test ebx, ebx
jl 0x450cd9
mov eax, dword [esp + 0x68]
test eax, eax
jl 0x450cd9
je 0x450ccb
mov eax, closesocket
cdq
idiv dword [esp + 0x68]
xor edx, edx
cmp ebx, eax
setle dl
mov eax, edx
test eax, eax
je 0x450cd9
mov edx, dword [esp + 0x5c]
mov eax, ebx
imul eax, dword [esp + 0x68]
cmp eax, 0x7ffffff8
jle 0x450cf2
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
pop edi
pop esi
pop ebp
mov dword [ecx + 4], str.too_large
xor eax, eax
pop ebx
add esp, 0x3c
ret
add eax, 7
shr eax, 3
lea ebx, [eax + 1]
imul ebx, esi
mov dword [esp + 0x44], eax
cmp dword [esp + 0x58], ebx
jae 0x450d22
mov edx, dword fs:[0x2c]
mov eax, dword [edx]
pop edi
pop esi
pop ebp
mov dword [eax + 4], str.not_enough_pixels
xor eax, eax
pop ebx
add esp, 0x3c
ret
mov dword [esp + 0x24], 0
test esi, esi
jbe 0x4513d0
mov ecx, dword [esp + 0x24]
imul ecx, dword [esp + 0x34]
movzx ebx, byte [ebp]
mov edx, dword [esp + 0x30]
lea esi, [ecx + edx]
inc ebp
cmp ebx, 4
mov dword [esp + 0x48], esi
mov dword [esp + 0x18], ebx
jg 0x451419
cmp dword [esp + 0x68], 8
mov ecx, dword [esp + 0x5c]
jge 0x450d7b
mov eax, dword [esp + 0x44]
mov edx, ecx
imul edx, dword [esp + 0x60]
sub edx, eax
add esi, edx
mov edi, 1
mov dword [esp + 0x40], eax
mov edx, esi
sub edx, dword [esp + 0x34]
cmp dword [esp + 0x24], 0
mov dword [esp + 0x14], edx
jne 0x450d97
movzx eax, byte [ebx + 0x664954]
mov dword [esp + 0x18], eax
test edi, edi
jle 0x450e10
mov eax, edx
sub eax, ebp
mov dword [esp + 0x50], eax
mov eax, esi
sub eax, ebp
mov ebx, ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x2c], edi
mov ecx, dword [esp + 0x18]
cmp ecx, 6
ja case.default.0x450dba
jmp dword [ecx*4 + 0x4516ec]
mov ecx, dword [esp + 0x50]
mov cl, byte [ecx + ebx]
add cl, byte [ebx]
jmp 0x450e01
mov ecx, dword [esp + 0x50]
mov cl, byte [ecx + ebx]
shr cl, 1
add cl, byte [ebx]
jmp 0x450e01
mov edx, dword [esp + 0x50]
movzx eax, byte [edx + ebx]
push 0
push eax
push 0
call fcn.00450b30
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x20]
add esp, 0xc
add al, byte [ebx]
mov byte [ecx + ebx], al
mov eax, ecx
jmp case.default.0x450dba
mov cl, byte [ebx]
mov byte [eax + ebx], cl
inc ebx
sub dword [esp + 0x2c], 1
jne 0x450db1
mov ecx, dword [esp + 0x5c]
mov eax, dword [esp + 0x68]
cmp eax, 8
jne 0x450e31
mov ebx, dword [esp + 0x1c]
cmp ebx, ecx
je 0x450e25
mov byte [esi + ebx], 0xff
add ebp, ebx
add esi, ecx
add edx, ecx
mov dword [esp + 0x14], edx
jmp 0x450e6b
cmp eax, 0x10
jne 0x450e57
mov ebx, dword [esp + 0x1c]
cmp ebx, ecx
je 0x450e47
mov byte [esi + edi], 0xff
mov byte [esi + edi + 1], 0xff
mov eax, dword [esp + 0x10]
add ebp, edi
add esi, eax
add edx, eax
mov dword [esp + 0x14], edx
jmp 0x450e6b
inc edx
inc ebp
inc esi
cmp eax, 8
mov dword [esp + 0x14], edx
jl 0x4511b6
mov ebx, dword [esp + 0x1c]
cmp ebx, ecx
je 0x4511b6
mov eax, dword [esp + 0x18]
cmp eax, 6
ja case.default.0x450e80
jmp dword [eax*4 + 0x451708]
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x450e80
mov dword [esp + 0x50], eax
lea esp, [esp]
test edi, edi
jle 0x450ebb
mov ecx, ebp
mov eax, esi
sub ecx, esi
mov edx, edi
lea esp, [esp]
mov bl, byte [ecx + eax]
mov byte [eax], bl
inc eax
sub edx, 1
jne 0x450eb0
mov byte [esi + edi], 0xff
add esi, dword [esp + 0x10]
add ebp, edi
sub dword [esp + 0x50], 1
jne 0x450ea0
jmp case.default.0x450e80
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x450e80
mov ecx, dword [esp + 0x10]
mov edx, esi
sub edx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x2c], eax
nop
xor eax, eax
test edi, edi
jle 0x450f18
mov edx, ebp
sub edx, esi
lea ebx, [ebx]
mov ebx, dword [esp + 0x50]
mov bl, byte [ebx + eax]
lea ecx, [eax + esi]
add bl, byte [edx + ecx]
inc eax
cmp eax, edi
mov byte [ecx], bl
jl 0x450f00
mov ecx, dword [esp + 0x10]
add dword [esp + 0x50], ecx
mov byte [esi + edi], 0xff
add ebp, edi
add esi, ecx
sub dword [esp + 0x2c], 1
jne 0x450ef0
jmp case.default.0x450e80
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x450e80
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
test edi, edi
jle 0x450f79
mov ebx, edx
sub ebx, ebp
mov ecx, esi
mov eax, ebp
mov dword [esp + 0x50], ebx
sub ecx, ebp
mov dword [esp + 0x2c], edi
jmp 0x450f64
mov ebx, dword [esp + 0x50]
mov bl, byte [eax + ebx]
add bl, byte [eax]
inc eax
sub dword [esp + 0x2c], 1
mov byte [eax + ecx - 1], bl
jne 0x450f60
mov eax, dword [esp + 0x10]
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
add edx, eax
sub dword [esp + 0x20], 1
jne 0x450f46
jmp case.default.0x450e80
mov ecx, dword [esp + 0x60]
dec ecx
cmp ecx, 1
jb case.default.0x450e80
mov eax, dword [esp + 0x10]
mov ebx, esi
sub ebx, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x2c], ecx
lea ecx, [ecx]
xor ecx, ecx
test edi, edi
jle 0x450ffb
sub edx, ebp
mov ebx, esi
sub ebx, ebp
mov eax, ebp
mov dword [esp + 0x50], edx
mov dword [esp + 0x20], ebx
jmp 0x450fd4
mov edx, dword [esp + 0x50]
movzx edx, byte [eax + edx]
mov ebx, dword [esp + 0x18]
movzx ebx, byte [ebx + ecx]
add ebx, edx
mov edx, dword [esp + 0x20]
sar ebx, 1
add bl, byte [eax]
inc ecx
mov byte [eax + edx], bl
inc eax
cmp ecx, edi
jl 0x450fd0
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
add dword [esp + 0x18], eax
mov byte [esi + edi], 0xff
add edx, eax
add ebp, edi
add esi, eax
sub dword [esp + 0x2c], 1
mov dword [esp + 0x14], edx
jne 0x450fb0
jmp case.default.0x450e80
mov ecx, dword [esp + 0x60]
dec ecx
cmp ecx, 1
jb case.default.0x450e80
mov eax, esi
sub eax, dword [esp + 0x10]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x18], eax
test edi, edi
jle 0x45109e
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x18]
mov ecx, eax
sub ecx, esi
sub eax, ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x50], eax
mov dword [esp + 0x38], edi
jmp 0x451060
mov eax, dword [esp + 0x2c]
movzx ecx, byte [eax + ebx]
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
push ecx
movzx ecx, byte [edx + eax]
movzx edx, byte [ebx]
push ecx
push edx
call fcn.00450b30
mov edx, dword [esp + 0x1c]
mov ecx, eax
mov eax, dword [esp + 0x2c]
add cl, byte [eax]
inc eax
mov byte [edx + ebx], cl
add esp, 0xc
inc ebx
sub dword [esp + 0x38], 1
mov dword [esp + 0x20], eax
jne 0x451060
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], eax
add dword [esp + 0x14], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x3c], 1
jne 0x451035
jmp case.default.0x450e80
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x450e80
mov ecx, dword [esp + 0x10]
mov edx, esi
sub edx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x3c], eax
xor eax, eax
test edi, edi
jle 0x45110a
mov edx, ebp
sub edx, esi
lea ebx, [ebx]
mov ebx, dword [esp + 0x50]
mov bl, byte [ebx + eax]
lea ecx, [eax + esi]
shr bl, 1
add bl, byte [edx + ecx]
inc eax
cmp eax, edi
mov byte [ecx], bl
jl 0x4510f0
mov ecx, dword [esp + 0x10]
add dword [esp + 0x50], ecx
mov byte [esi + edi], 0xff
add ebp, edi
add esi, ecx
sub dword [esp + 0x3c], 1
jne 0x4510e0
jmp case.default.0x450e80
mov eax, dword [esp + 0x60]
dec eax
cmp eax, 1
jb case.default.0x450e80
mov ecx, esi
sub ecx, dword [esp + 0x10]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x20], ecx
xor ebx, ebx
test edi, edi
jle 0x45116d
mov eax, ebp
sub eax, esi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
movzx ecx, byte [eax + ebx]
push 0
push 0
push ecx
call fcn.00450b30
mov ecx, dword [esp + 0x5c]
mov edx, eax
lea eax, [ebx + esi]
add dl, byte [ecx + eax]
inc ebx
add esp, 0xc
cmp ebx, edi
mov byte [eax], dl
jl 0x451145
mov eax, dword [esp + 0x10]
add dword [esp + 0x20], eax
mov byte [esi + edi], 0xff
add ebp, edi
add esi, eax
sub dword [esp + 0x3c], 1
jne 0x451137
cmp dword [esp + 0x68], 0x10
jne 0x4513ad
mov ecx, dword [esp + 0x60]
test ecx, ecx
jbe 0x4513ad
mov edx, dword [esp + 0x48]
lea eax, [edx + edi + 1]
mov edx, dword [esp + 0x10]
mov byte [eax], 0xff
add eax, edx
sub ecx, 1
jne 0x4511a7
jmp 0x4513ad
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x18]
dec ebx
imul ebx, edi
cmp eax, 6
ja case.default.0x4511cb
jmp dword [eax*4 + 0x451724]
push ebx
push ebp
push esi
call fcn.004a26d0
add esp, 0xc
jmp case.default.0x4511cb
xor eax, eax
mov dword [esp + 0x14], eax
test ebx, ebx
jle case.default.0x4511cb
mov edx, esi
sub edx, edi
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x50], ecx
jmp 0x451206
mov edx, dword [esp + 0x18]
lea ecx, [eax + esi]
mov al, byte [edx + eax]
mov edx, dword [esp + 0x50]
add al, byte [edx + ecx]
mov byte [ecx], al
mov eax, dword [esp + 0x14]
inc eax
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x451202
jmp case.default.0x4511cb
test ebx, ebx
jle case.default.0x4511cb
sub edx, ebp
mov eax, ebp
sub esi, ebp
mov dword [esp + 0x50], ebx
lea esp, [esp]
mov cl, byte [edx + eax]
add cl, byte [eax]
inc eax
sub dword [esp + 0x50], 1
mov byte [esi + eax - 1], cl
jne 0x451240
jmp case.default.0x4511cb
mov dword [esp + 0x14], 0
test ebx, ebx
jle case.default.0x4511cb
mov ecx, esi
sub ecx, edi
sub edx, ebp
sub esi, ebp
mov dword [esp + 0x20], esi
mov esi, dword [esp + 0x14]
mov eax, ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x50], edx
jmp 0x45128a
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x50]
movzx edx, byte [edx + eax]
movzx ecx, byte [ecx + esi]
add edx, ecx
mov ecx, dword [esp + 0x20]
sar edx, 1
add dl, byte [eax]
inc esi
mov byte [ecx + eax], dl
inc eax
cmp esi, ebx
jl 0x451282
jmp case.default.0x4511cb
test ebx, ebx
jle case.default.0x4511cb
mov eax, esi
sub eax, edi
mov dword [esp + 0x48], eax
mov eax, edx
sub eax, esi
mov esi, dword [esp + 0x48]
sub edx, ebp
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x50], edx
mov dword [esp + 0x3c], ebx
mov edx, dword [esp + 0x2c]
movzx eax, byte [esi + edx]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
push eax
movzx eax, byte [ecx + edx]
movzx ecx, byte [esi]
push eax
push ecx
call fcn.00450b30
mov edx, eax
mov eax, dword [esp + 0x2c]
add dl, byte [eax]
inc eax
mov byte [esi + edi], dl
add esp, 0xc
inc esi
sub dword [esp + 0x3c], 1
mov dword [esp + 0x20], eax
jne 0x4512d4
jmp case.default.0x4511cb
xor eax, eax
mov dword [esp + 0x14], eax
test ebx, ebx
jle case.default.0x4511cb
mov edx, esi
sub edx, edi
mov ecx, ebp
sub ecx, esi
mov dword [esp + 0x18], edx
mov dword [esp + 0x50], ecx
jmp 0x451337
mov edx, dword [esp + 0x18]
lea ecx, [eax + esi]
mov al, byte [edx + eax]
mov edx, dword [esp + 0x50]
shr al, 1
add al, byte [edx + ecx]
mov byte [ecx], al
mov eax, dword [esp + 0x14]
inc eax
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x451333
jmp case.default.0x4511cb
mov dword [esp + 0x14], 0
test ebx, ebx
jle case.default.0x4511cb
mov eax, esi
sub eax, edi
mov dword [esp + 0x18], eax
mov eax, ebp
sub eax, esi
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
movzx edx, byte [eax + ecx]
push 0
push 0
push edx
call fcn.00450b30
mov edx, dword [esp + 0x20]
mov ecx, eax
lea eax, [edx + esi]
mov edx, dword [esp + 0x5c]
add cl, byte [edx + eax]
add esp, 0xc
mov byte [eax], cl
mov eax, dword [esp + 0x14]
inc eax
cmp eax, ebx
mov dword [esp + 0x14], eax
jl 0x451373
add ebp, ebx
mov eax, dword [esp + 0x24]
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [esp + 0x64]
jb 0x450d32
mov esi, dword [esp + 0x64]
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x5c]
mov edi, dword [esp + 0x68]
cmp edi, 8
jge 0x4516a4
test esi, esi
jbe 0x4516de
mov edx, dword [esp + 0x5c]
imul edx, dword [esp + 0x60]
sub edx, eax
add edx, ecx
mov ebx, ecx
mov dword [esp + 0x50], edx
mov dword [esp + 0x44], esi
lea esp, [esp]
cmp dword [esp + 0x6c], 0
mov esi, dword [esp + 0x50]
mov eax, dword [esp + 0x68]
mov ecx, ebx
jne 0x451432
mov dl, byte [eax + 0x637c94]
jmp 0x451434
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
pop edi
pop esi
pop ebp
mov dword [ecx + 4], str.invalid_filter
xor eax, eax
pop ebx
add esp, 0x3c
ret
mov dl, 1
cmp eax, 4
jne 0x45147d
mov ebp, dword [esp + 0x28]
cmp ebp, 2
jl 0x45146b
mov edi, ebp
shr edi, 1
mov eax, edi
neg eax
lea ebp, [ebp + eax*2]
mov edi, edi
movzx eax, byte [esi]
shr al, 4
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
and al, 0xf
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x451450
test ebp, ebp
jle 0x45160f
mov al, byte [esi]
shr al, 4
jmp 0x45160b
cmp eax, 2
jne 0x45150a
mov ebp, dword [esp + 0x28]
cmp ebp, 4
jl 0x4514d6
mov edi, ebp
shr edi, 2
mov eax, edi
neg eax
lea ebp, [ebp + eax*4]
lea esp, [esp]
movzx eax, byte [esi]
shr al, 6
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
shr al, 4
and al, 3
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 2
and al, 3
imul dl
inc ecx
mov byte [ecx], al
movzx eax, byte [esi]
and al, 3
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x4514a0
test ebp, ebp
jle 0x4514e4
mov al, byte [esi]
shr al, 6
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 1
jle 0x4514f5
mov al, byte [esi]
shr al, 4
and al, 3
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 2
jle 0x45160f
mov al, byte [esi]
shr al, 2
and al, 3
jmp 0x45160b
cmp eax, 1
jne 0x45160f
mov ebp, dword [esp + 0x28]
cmp ebp, 8
jl 0x45159d
mov edi, ebp
shr edi, 3
mov eax, edi
neg eax
lea ebp, [ebp + eax*8]
lea ecx, [ecx]
movzx eax, byte [esi]
shr al, 7
imul dl
mov byte [ecx], al
movzx eax, byte [esi]
shr al, 6
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
shr al, 5
and al, 1
imul dl
inc ecx
mov byte [ecx + 1], al
movzx eax, byte [esi]
shr al, 4
inc ecx
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 3
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 2
and al, 1
imul dl
mov byte [ecx + 1], al
movzx eax, byte [esi]
inc ecx
shr al, 1
and al, 1
imul dl
inc ecx
mov byte [ecx], al
movzx eax, byte [esi]
and al, 1
imul dl
inc ecx
mov byte [ecx], al
inc ecx
inc esi
sub edi, 1
jne 0x451530
test ebp, ebp
jle 0x4515ab
mov al, byte [esi]
shr al, 7
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 1
jle 0x4515bc
mov al, byte [esi]
shr al, 6
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 2
jle 0x4515cd
mov al, byte [esi]
shr al, 5
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 3
jle 0x4515de
mov al, byte [esi]
shr al, 4
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 4
jle 0x4515ef
mov al, byte [esi]
shr al, 3
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 5
jle 0x451600
mov al, byte [esi]
shr al, 2
and al, 1
imul dl
mov byte [ecx], al
inc ecx
cmp ebp, 6
jle 0x45160f
mov al, byte [esi]
shr al, 1
and al, 1
imul dl
mov byte [ecx], al
mov eax, dword [esp + 0x1c]
cmp eax, dword [esp + 0x5c]
je 0x451682
cmp eax, 1
jne 0x451644
mov eax, dword [esp + 0x60]
add eax, 0xffffffff
js 0x451682
jmp 0x451630
sub eax, 1
mov byte [ebx + eax*2 + 3], 0xff
mov cl, byte [ebx + eax + 1]
mov byte [ebx + eax*2 + 2], cl
jns 0x451630
jmp 0x451682
mov esi, dword [esp + 0x60]
add esi, 0xffffffff
js 0x451682
lea edx, [ebx + esi*2]
lea ecx, [esi + edx + 1]
lea eax, [ebx + esi*4 + 2]
jmp 0x451660
mov byte [eax + 1], 0xff
movzx edx, byte [ecx + 1]
mov byte [eax], dl
movzx edx, byte [ecx]
mov byte [eax - 1], dl
movzx edx, byte [ecx - 1]
mov byte [eax - 2], dl
dec esi
sub ecx, 3
sub eax, 4
test esi, esi
jge 0x451660
mov eax, dword [esp + 0x34]
add dword [esp + 0x50], eax
add ebx, eax
sub dword [esp + 0x44], 1
jne 0x451400
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3c
ret
cmp edi, 0x10
jne 0x4516de
imul edx, dword [esp + 0x60]
imul edx, esi
mov eax, ecx
test edx, edx
jbe 0x4516de
jmp 0x4516c0
movzx si, byte [ecx]
movzx di, byte [eax + 1]
shl si, 8
or si, di
mov word [eax], si
add eax, 2
add ecx, 2
sub edx, 1
jne 0x4516c0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3c
ret