Function at 0x452430
Capabilities:
Encrypt data using rc4 ksa

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4a0
push ebx
push esi
mov esi, dword [ebp + 8]
lea eax, [ebp - 0xa0]
push edi
push eax
push esi
mov dword [ebp - 8], 0
mov dword [ebp - 0x84], 0xff
call fcn.00453080
add esp, 8
test eax, eax
je 0x453072
mov eax, dword [esi + 4]
mov ecx, dword [ebp - 0x88]
mov ebx, dword [ebp - 0x9c]
mov edi, dword [ebp - 0xa0]
mov dword [ebp - 0x54], eax
cdq
xor eax, edx
mov dword [ebp - 0x14], ecx
sub eax, edx
mov dword [ebp - 0x38], ebx
mov edx, dword [ebp - 0x80]
mov dword [esi + 4], eax
mov eax, dword [ebp - 0x94]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x90]
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x8c]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x98]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x20], edi
cmp eax, 0xc
jne 0x4524e8
cmp edi, 0x18
jge 0x4524fa
mov ecx, ebx
mov eax, 0x55555556
sub ecx, edx
sub ecx, 0x18
imul ecx
mov ecx, dword [ebp - 0x14]
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
jmp 0x4524f4
cmp edi, 0x10
jge 0x4524f7
sub ebx, edx
sub ebx, eax
sar ebx, 2
mov dword [ebp - 8], ebx
cmp edi, 0x18
jne 0x45250b
cmp ecx, 0xff000000
jne 0x45250b
mov ecx, 3
jmp 0x452516
xor ecx, ecx
cmp dword [ebp - 0x14], ecx
setne cl
add ecx, 3
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x10], ecx
mov dword [esi + 8], ecx
test eax, eax
je 0x45252d
cmp eax, 3
jl 0x45252d
mov ecx, eax
mov dword [ebp - 0x10], ecx
mov ebx, dword [esi + 4]
mov edi, dword [esi]
test ecx, ecx
js 0x453059
test edi, edi
js 0x453059
je 0x452554
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x453059
mov eax, edi
imul eax, ecx
mov dword [ebp - 4], eax
test eax, eax
js 0x453059
test ebx, ebx
js 0x453059
je 0x45257f
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x453059
test edi, edi
js 0x453037
je 0x452599
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x453037
cmp dword [ebp - 4], 0
jl 0x453037
test ebx, ebx
js 0x453037
je 0x4525be
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x453037
imul edi, ebx
imul edi, ecx
push edi
call fcn.004cf70e
mov ebx, eax
add esp, 4
mov dword [ebp - 0x58], ebx
test ebx, ebx
je 0x453037
xor edi, edi
cmp dword [ebp - 0x20], 0x10
jge 0x452acc
mov eax, dword [ebp - 8]
test eax, eax
je 0x452aa1
cmp eax, 0x100
jg 0x452aa1
mov dword [ebp - 0xc], edi
test eax, eax
jle 0x45271e
mov eax, dword [esi + 0xa8]
mov ebx, dword [ebp - 8]
mov ecx, dword [esi + 0xac]
cmp eax, ecx
jae 0x452625
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45264d
cmp dword [esi + 0x20], 0
je 0x45264b
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov ecx, dword [esi + 0xac]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45264d
xor dl, dl
mov edi, dword [ebp - 0xc]
mov byte [ebp + edi*4 - 0x49e], dl
cmp eax, ecx
jae 0x452666
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45268e
cmp dword [esi + 0x20], 0
je 0x45268c
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov ecx, dword [esi + 0xac]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45268e
xor dl, dl
mov byte [ebp + edi*4 - 0x49f], dl
cmp eax, ecx
jae 0x4526a4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4526c6
cmp dword [esi + 0x20], 0
je 0x4526c4
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4526c6
xor cl, cl
cmp dword [ebp - 0x2c], 0xc
mov edx, dword [ebp - 0xc]
mov byte [ebp + edx*4 - 0x4a0], cl
je 0x452705
cmp eax, dword [esi + 0xac]
jae 0x4526e7
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452705
cmp dword [esi + 0x20], 0
je 0x452705
push esi
call fcn.0045ead0
mov edx, dword [ebp - 0xc]
add esp, 4
inc dword [esi + 0xa8]
mov eax, dword [esi + 0xa8]
mov byte [ebp + edx*4 - 0x49d], 0xff
inc edx
mov dword [ebp - 0xc], edx
cmp edx, ebx
jl 0x452610
mov ebx, dword [ebp - 0x58]
xor edi, edi
mov ecx, dword [ebp - 0x38]
xor eax, eax
cmp dword [ebp - 0x2c], 0xc
setne al
add eax, 3
imul eax, dword [ebp - 8]
sub ecx, eax
sub ecx, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0x2c]
push ecx
push esi
call fcn.0045f140
mov eax, dword [ebp - 0x20]
add esp, 8
cmp eax, 1
jne 0x452755
mov edx, dword [esi]
add edx, 7
shr edx, 3
jmp 0x45276c
cmp eax, 4
jne 0x452761
mov edx, dword [esi]
inc edx
shr edx, 1
jmp 0x45276c
cmp eax, 8
jne 0x452a76
mov edx, dword [esi]
mov ecx, dword [esi + 4]
neg edx
and edx, 3
mov dword [ebp - 0xc], edx
cmp eax, 1
jne 0x4528eb
mov dword [ebp - 0x30], 0
test ecx, ecx
jle 0x452f22
nop
mov eax, dword [esi + 0xa8]
mov ecx, 7
mov dword [ebp - 0x14], ecx
cmp eax, dword [esi + 0xac]
jae 0x4527b1
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4527d6
cmp dword [esi + 0x20], 0
je 0x4527d4
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov ecx, dword [ebp - 0x14]
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4527d6
xor dl, dl
movzx eax, dl
xor edx, edx
mov dword [ebp - 0x18], eax
cmp dword [esi], edx
jle 0x45289d
nop word [eax + eax]
sar eax, cl
and eax, 1
lea ecx, [eax*4]
movzx eax, byte [ebp + ecx - 0x4a0]
mov byte [edi + ebx], al
movzx eax, byte [ebp + ecx - 0x49f]
mov byte [edi + ebx + 1], al
movzx eax, byte [ebp + ecx - 0x49e]
mov byte [edi + ebx + 2], al
add edi, 3
cmp dword [ebp - 0x10], 4
jne 0x45282d
mov byte [edi + ebx], 0xff
inc edi
mov eax, dword [esi]
inc edx
mov dword [ebp - 0x44], edx
cmp edx, eax
je 0x45289d
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
jns 0x452892
mov eax, dword [esi + 0xa8]
mov dword [ebp - 0x14], 7
cmp eax, dword [esi + 0xac]
jae 0x452862
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452887
cmp dword [esi + 0x20], 0
je 0x452885
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov edx, dword [ebp - 0x44]
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452887
xor cl, cl
mov eax, dword [esi]
movzx ecx, cl
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp - 0x14]
cmp edx, eax
mov eax, dword [ebp - 0x18]
jl 0x4527f0
cmp dword [esi + 0x10], 0
mov edx, dword [ebp - 0xc]
je 0x4528ce
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x4528ce
sub edx, ecx
mov dword [esi + 0xa8], eax
mov eax, dword [esi + 0x14]
push edx
push dword [esi + 0x1c]
call eax
add esp, 8
jmp 0x4528d4
add dword [esi + 0xa8], edx
mov edx, dword [ebp - 0x30]
mov ecx, dword [esi + 4]
inc edx
mov dword [ebp - 0x30], edx
cmp edx, ecx
jl 0x452790
jmp 0x452f22
mov dword [ebp - 0x18], 0
test ecx, ecx
jle 0x452f22
nop word [eax + eax]
cmp dword [esi], 0
mov dword [ebp - 4], 0
jle 0x452a26
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x452929
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45294b
cmp dword [esi + 0x20], 0
je 0x452949
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x45294b
xor cl, cl
xor edx, edx
movzx ecx, cl
cmp dword [ebp - 0x20], 4
jne 0x45295e
mov edx, ecx
and edx, 0xf
shr ecx, 4
movzx eax, byte [ebp + ecx*4 - 0x4a0]
mov byte [edi + ebx], al
movzx eax, byte [ebp + ecx*4 - 0x49f]
mov byte [edi + ebx + 1], al
movzx eax, byte [ebp + ecx*4 - 0x49e]
mov byte [edi + ebx + 2], al
add edi, 3
cmp dword [ebp - 0x10], 4
jne 0x45298f
mov byte [edi + ebx], 0xff
inc edi
mov ecx, dword [ebp - 4]
lea eax, [ecx + 1]
cmp eax, dword [esi]
je 0x452a23
cmp dword [ebp - 0x20], 8
jne 0x4529e4
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x4529bc
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4529de
cmp dword [esi + 0x20], 0
je 0x4529dc
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x4529de
xor cl, cl
movzx edx, cl
mov ecx, dword [ebp - 4]
movzx eax, byte [ebp + edx*4 - 0x4a0]
mov byte [edi + ebx], al
movzx eax, byte [ebp + edx*4 - 0x49f]
mov byte [edi + ebx + 1], al
movzx eax, byte [ebp + edx*4 - 0x49e]
mov byte [edi + ebx + 2], al
add edi, 3
cmp dword [ebp - 0x10], 4
jne 0x452a15
mov byte [edi + ebx], 0xff
inc edi
add ecx, 2
mov dword [ebp - 4], ecx
cmp ecx, dword [esi]
jl 0x452910
mov edx, dword [ebp - 0xc]
cmp dword [esi + 0x10], 0
je 0x452a59
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x452a59
mov dword [esi + 0xa8], eax
mov eax, edx
sub eax, ecx
push eax
push dword [esi + 0x1c]
mov eax, dword [esi + 0x14]
call eax
mov edx, dword [ebp - 0xc]
add esp, 8
jmp 0x452a5f
add dword [esi + 0xa8], edx
mov eax, dword [ebp - 0x18]
mov ecx, dword [esi + 4]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, ecx
jl 0x452900
jmp 0x452f22
push ebx
call fcn.004cf709
mov ecx, dword [0x561180]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop esi
pop ebx
mov dword [eax + 0xc], str.bad_bpp
xor eax, eax
mov esp, ebp
pop ebp
ret
push ebx
call fcn.004cf709
mov ecx, dword [0x561180]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop esi
pop ebx
mov dword [eax + 0xc], str.invalid
xor eax, eax
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x38]
sub eax, dword [ebp - 0x1c]
sub eax, dword [ebp - 0x2c]
push eax
push esi
mov dword [ebp - 0x40], 0
mov dword [ebp - 4], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x48], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x44], 0
mov dword [ebp - 8], edi
mov dword [ebp - 0x3c], edi
call fcn.0045f140
mov ecx, dword [ebp - 0x20]
add esp, 8
cmp ecx, 0x18
jne 0x452b2c
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x452b39
cmp ecx, 0x10
jne 0x452b37
mov eax, dword [esi]
add eax, eax
jmp 0x452b39
xor eax, eax
neg eax
and eax, 3
mov dword [ebp - 0x7c], eax
cmp ecx, 0x18
jne 0x452b56
xor edx, edx
mov dword [ebp - 0x3c], 1
xor eax, eax
jmp 0x452c0e
mov edx, dword [ebp - 0xc]
cmp ecx, 0x20
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
jne 0x452b91
cmp edx, 0xff
jne 0x452b91
cmp ecx, 0xff00
jne 0x452b91
cmp eax, 0xff0000
jne 0x452b91
cmp dword [ebp - 0x14], 0xff000000
jne 0x452ba9
xor edx, edx
mov dword [ebp - 0x3c], 2
xor eax, eax
jmp 0x452c0e
test eax, eax
je 0x45300c
test ecx, ecx
je 0x45300c
test edx, edx
je 0x45300c
push eax
call fcn.00457ae0
push dword [ebp - 0x24]
sub eax, 7
mov dword [ebp - 0x40], eax
call fcn.004523e0
push dword [ebp - 0x28]
mov dword [ebp - 0x48], eax
call fcn.00457ae0
push dword [ebp - 0x28]
sub eax, 7
mov dword [ebp - 4], eax
call fcn.004523e0
push dword [ebp - 0xc]
mov dword [ebp - 0x4c], eax
call fcn.00457ae0
push dword [ebp - 0xc]
sub eax, 7
mov dword [ebp - 0x50], eax
call fcn.004523e0
push dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
call fcn.00457ae0
push dword [ebp - 0x14]
lea edx, [eax - 7]
mov dword [ebp - 0x18], edx
call fcn.004523e0
add esp, 0x20
mov dword [ebp - 0x44], eax
mov ecx, dword [esi + 4]
mov dword [ebp - 0x2c], edi
test ecx, ecx
jle 0x452f22
mov ecx, dword [ebp - 0x40]
neg ecx
mov dword [ebp - 0x5c], ecx
mov ecx, 8
sub ecx, dword [ebp - 0x48]
mov dword [ebp - 0x60], ecx
mov ecx, dword [ebp - 4]
neg ecx
mov dword [ebp - 0x64], ecx
mov ecx, 8
sub ecx, dword [ebp - 0x4c]
mov dword [ebp - 0x68], ecx
mov ecx, dword [ebp - 0x50]
neg ecx
mov dword [ebp - 0x6c], ecx
mov ecx, 8
sub ecx, dword [ebp - 0x30]
mov dword [ebp - 0x70], ecx
mov ecx, edx
neg ecx
mov dword [ebp - 0x74], ecx
mov ecx, 8
sub ecx, eax
mov dword [ebp - 0x78], ecx
nop word [eax + eax]
cmp dword [ebp - 0x3c], 0
mov eax, dword [esi]
je 0x452dbc
mov dword [ebp - 0x1c], 0
test eax, eax
jle 0x452f04
nop dword [eax + eax]
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x452ca9
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452ccb
cmp dword [esi + 0x20], 0
je 0x452cc9
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452ccb
xor cl, cl
mov byte [ebx + edi + 2], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x452ce8
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d0a
cmp dword [esi + 0x20], 0
je 0x452d08
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d0a
xor cl, cl
mov byte [ebx + edi + 1], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x452d27
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d49
cmp dword [esi + 0x20], 0
je 0x452d47
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d49
xor cl, cl
mov byte [edi + ebx], cl
add edi, 3
cmp dword [ebp - 0x3c], 2
jne 0x452d92
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x452d6e
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d95
cmp dword [esi + 0x20], 0
je 0x452d8e
push esi
call fcn.0045ead0
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x452d95
xor cl, cl
jmp 0x452d95
or cl, 0xff
movzx eax, cl
or dword [ebp - 0x34], eax
cmp dword [ebp - 0x10], 4
jne 0x452da5
mov byte [edi + ebx], cl
inc edi
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [esi]
jl 0x452c90
mov dword [ebp - 8], edi
jmp 0x452f04
mov dword [ebp - 0x38], 0
test eax, eax
jle 0x452f04
nop dword [eax + eax]
push esi
call fcn.00455ac0
add esp, 4
mov edi, eax
cmp dword [ebp - 0x20], 0x10
mov dword [ebp - 0x1c], edi
je 0x452df5
push esi
call fcn.00455ac0
shl eax, 0x10
add esp, 4
add edi, eax
mov dword [ebp - 0x1c], edi
mov ecx, dword [ebp - 0x40]
mov edx, edi
and edx, dword [ebp - 0x24]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x5c]
shl edx, cl
cmp dword [ebp - 0x40], 0
mov ecx, dword [ebp - 0x60]
cmovge edx, eax
mov eax, dword [ebp - 0x48]
shr edx, cl
imul edx, dword [eax*4 + 0x55d0c8]
mov ecx, dword [eax*4 + 0x55d0ec]
mov eax, dword [ebp - 8]
sar edx, cl
mov ecx, dword [ebp - 4]
mov byte [eax + ebx], dl
inc eax
mov dword [ebp - 8], eax
mov edx, edi
and edx, dword [ebp - 0x28]
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x64]
shl edx, cl
cmp dword [ebp - 4], 0
mov ecx, dword [ebp - 0x68]
cmovge edx, eax
mov eax, dword [ebp - 0x4c]
shr edx, cl
imul edx, dword [eax*4 + 0x55d0c8]
mov ecx, dword [eax*4 + 0x55d0ec]
mov eax, dword [ebp - 8]
sar edx, cl
mov byte [eax + ebx], dl
inc eax
mov edx, edi
mov dword [ebp - 8], eax
and edx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x50]
mov eax, edx
mov ecx, edi
shr eax, cl
mov ecx, dword [ebp - 0x6c]
shl edx, cl
test edi, edi
mov ecx, dword [ebp - 0x70]
mov edi, dword [ebp - 8]
cmovns edx, eax
mov eax, dword [ebp - 0x30]
shr edx, cl
imul edx, dword [eax*4 + 0x55d0c8]
mov ecx, dword [eax*4 + 0x55d0ec]
mov eax, dword [ebp - 0x14]
sar edx, cl
mov byte [edi + ebx], dl
inc edi
mov dword [ebp - 8], edi
test eax, eax
je 0x452ee0
mov edx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x18]
and edx, eax
mov eax, edx
shr eax, cl
mov ecx, dword [ebp - 0x74]
shl edx, cl
cmp dword [ebp - 0x18], 0
mov ecx, dword [ebp - 0x78]
cmovge edx, eax
mov eax, dword [ebp - 0x44]
shr edx, cl
imul edx, dword [eax*4 + 0x55d0c8]
mov ecx, dword [eax*4 + 0x55d0ec]
sar edx, cl
jmp 0x452ee5
mov edx, 0xff
or dword [ebp - 0x34], edx
cmp dword [ebp - 0x10], 4
jne 0x452ef5
mov byte [edi + ebx], dl
inc edi
mov dword [ebp - 8], edi
mov eax, dword [ebp - 0x38]
inc eax
mov dword [ebp - 0x38], eax
cmp eax, dword [esi]
jl 0x452dd0
push dword [ebp - 0x7c]
push esi
call fcn.0045f140
mov eax, dword [ebp - 0x2c]
add esp, 8
mov ecx, dword [esi + 4]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, ecx
jl 0x452c70
mov edi, dword [ebp - 0x10]
cmp edi, 4
jne 0x452f49
cmp dword [ebp - 0x34], 0
jne 0x452f49
mov eax, dword [esi]
imul eax, ecx
lea eax, [eax*4 - 1]
test eax, eax
js 0x452f49
mov byte [eax + ebx], 0xff
sub eax, 4
jns 0x452f40
cmp dword [ebp - 0x54], 0
jle 0x452fc3
mov ecx, dword [esi + 4]
mov dword [ebp - 4], 0
test ecx, 0xfffffffe
jle 0x452fc3
sub ecx, dword [ebp - 4]
mov eax, dword [esi]
dec ecx
imul ecx, eax
mov edx, eax
imul edx, dword [ebp - 4]
imul eax, dword [ebp - 0x10]
imul ecx, edi
imul edx, edi
xor edi, edi
mov dword [ebp - 0x54], edx
lea edx, [ecx + ebx]
test eax, eax
jle 0x452fae
mov ebx, dword [ebp - 0x54]
sub ebx, ecx
nop dword [eax + eax]
mov al, byte [edx]
lea edx, [edx + 1]
mov cl, byte [edx + ebx - 1]
inc edi
mov byte [edx + ebx - 1], al
mov byte [edx - 1], cl
mov eax, dword [esi]
imul eax, dword [ebp - 0x10]
cmp edi, eax
jl 0x452f90
mov ebx, dword [ebp - 0x58]
mov edx, dword [ebp - 4]
mov ecx, dword [esi + 4]
inc edx
mov edi, dword [ebp - 0x10]
mov eax, ecx
sar eax, 1
mov dword [ebp - 4], edx
cmp edx, eax
jl 0x452f61
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x452fe8
cmp eax, edi
je 0x452fe8
push dword [esi + 4]
push dword [esi]
push eax
push edi
push ebx
call fcn.00453e60
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x453072
mov eax, dword [ebp + 0xc]
mov ecx, dword [esi]
mov dword [eax], ecx
mov eax, dword [ebp + 0x10]
mov ecx, dword [esi + 4]
mov dword [eax], ecx
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x453003
mov eax, dword [esi + 8]
mov dword [ecx], eax
pop edi
pop esi
mov eax, ebx
pop ebx
mov esp, ebp
pop ebp
ret
push ebx
call fcn.004cf709
mov ecx, dword [0x561180]
add esp, 4
mov eax, dword fs:[0x2c]
pop edi
mov eax, dword [eax + ecx*4]
pop esi
pop ebx
mov dword [eax + 0xc], str.bad_masks
xor eax, eax
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x561180]
mov eax, dword fs:[0x2c]
pop edi
pop esi
pop ebx
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.outofmem
xor eax, eax
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x561180]
mov eax, dword fs:[0x2c]
mov eax, dword [eax + ecx*4]
mov dword [eax + 0xc], str.too_large
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret