Function at 0x44e270
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.0044eec0
add esp, 8
test eax, eax
je 0x44eeb2
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 0x44e328
cmp edi, 0x18
jge 0x44e33a
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 0x44e334
cmp edi, 0x10
jge 0x44e337
sub ebx, edx
sub ebx, eax
sar ebx, 2
mov dword [ebp - 8], ebx
cmp edi, 0x18
jne 0x44e34b
cmp ecx, 0xff000000
jne 0x44e34b
mov ecx, 3
jmp 0x44e356
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 0x44e36d
cmp eax, 3
jl 0x44e36d
mov ecx, eax
mov dword [ebp - 0x10], ecx
mov ebx, dword [esi + 4]
mov edi, dword [esi]
test ecx, ecx
js 0x44ee99
test edi, edi
js 0x44ee99
je 0x44e394
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x44ee99
mov eax, edi
imul eax, ecx
mov dword [ebp - 4], eax
test eax, eax
js 0x44ee99
test ebx, ebx
js 0x44ee99
je 0x44e3bf
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x44ee99
test edi, edi
js 0x44ee77
je 0x44e3d9
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x44ee77
cmp dword [ebp - 4], 0
jl 0x44ee77
test ebx, ebx
js 0x44ee77
je 0x44e3fe
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x44ee77
imul edi, ebx
imul edi, ecx
push edi
call fcn.004c1cc2
mov ebx, eax
add esp, 4
mov dword [ebp - 0x58], ebx
test ebx, ebx
je 0x44ee77
xor edi, edi
cmp dword [ebp - 0x20], 0x10
jge 0x44e90c
mov eax, dword [ebp - 8]
test eax, eax
je 0x44e8e1
cmp eax, 0x100
jg 0x44e8e1
mov dword [ebp - 0xc], edi
test eax, eax
jle 0x44e55e
mov eax, dword [esi + 0xa8]
mov ebx, dword [ebp - 8]
mov ecx, dword [esi + 0xac]
cmp eax, ecx
jae 0x44e465
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e48d
cmp dword [esi + 0x20], 0
je 0x44e48b
push esi
call fcn.0045a910
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 0x44e48d
xor dl, dl
mov edi, dword [ebp - 0xc]
mov byte [ebp + edi*4 - 0x49e], dl
cmp eax, ecx
jae 0x44e4a6
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e4ce
cmp dword [esi + 0x20], 0
je 0x44e4cc
push esi
call fcn.0045a910
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 0x44e4ce
xor dl, dl
mov byte [ebp + edi*4 - 0x49f], dl
cmp eax, ecx
jae 0x44e4e4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e506
cmp dword [esi + 0x20], 0
je 0x44e504
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e506
xor cl, cl
cmp dword [ebp - 0x2c], 0xc
mov edx, dword [ebp - 0xc]
mov byte [ebp + edx*4 - 0x4a0], cl
je 0x44e545
cmp eax, dword [esi + 0xac]
jae 0x44e527
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e545
cmp dword [esi + 0x20], 0
je 0x44e545
push esi
call fcn.0045a910
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 0x44e450
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.0045af80
mov eax, dword [ebp - 0x20]
add esp, 8
cmp eax, 1
jne 0x44e595
mov edx, dword [esi]
add edx, 7
shr edx, 3
jmp 0x44e5ac
cmp eax, 4
jne 0x44e5a1
mov edx, dword [esi]
inc edx
shr edx, 1
jmp 0x44e5ac
cmp eax, 8
jne 0x44e8b6
mov edx, dword [esi]
mov ecx, dword [esi + 4]
neg edx
and edx, 3
mov dword [ebp - 0xc], edx
cmp eax, 1
jne 0x44e72b
mov dword [ebp - 0x30], 0
test ecx, ecx
jle 0x44ed62
nop
mov eax, dword [esi + 0xa8]
mov ecx, 7
mov dword [ebp - 0x14], ecx
cmp eax, dword [esi + 0xac]
jae 0x44e5f1
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e616
cmp dword [esi + 0x20], 0
je 0x44e614
push esi
call fcn.0045a910
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 0x44e616
xor dl, dl
movzx eax, dl
xor edx, edx
mov dword [ebp - 0x18], eax
cmp dword [esi], edx
jle 0x44e6dd
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 0x44e66d
mov byte [edi + ebx], 0xff
inc edi
mov eax, dword [esi]
inc edx
mov dword [ebp - 0x44], edx
cmp edx, eax
je 0x44e6dd
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
jns 0x44e6d2
mov eax, dword [esi + 0xa8]
mov dword [ebp - 0x14], 7
cmp eax, dword [esi + 0xac]
jae 0x44e6a2
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e6c7
cmp dword [esi + 0x20], 0
je 0x44e6c5
push esi
call fcn.0045a910
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 0x44e6c7
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 0x44e630
cmp dword [esi + 0x10], 0
mov edx, dword [ebp - 0xc]
je 0x44e70e
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x44e70e
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 0x44e714
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 0x44e5d0
jmp 0x44ed62
mov dword [ebp - 0x18], 0
test ecx, ecx
jle 0x44ed62
nop word [eax + eax]
cmp dword [esi], 0
mov dword [ebp - 4], 0
jle 0x44e866
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e769
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e78b
cmp dword [esi + 0x20], 0
je 0x44e789
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e78b
xor cl, cl
xor edx, edx
movzx ecx, cl
cmp dword [ebp - 0x20], 4
jne 0x44e79e
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 0x44e7cf
mov byte [edi + ebx], 0xff
inc edi
mov ecx, dword [ebp - 4]
lea eax, [ecx + 1]
cmp eax, dword [esi]
je 0x44e863
cmp dword [ebp - 0x20], 8
jne 0x44e824
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e7fc
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e81e
cmp dword [esi + 0x20], 0
je 0x44e81c
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e81e
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 0x44e855
mov byte [edi + ebx], 0xff
inc edi
add ecx, 2
mov dword [ebp - 4], ecx
cmp ecx, dword [esi]
jl 0x44e750
mov edx, dword [ebp - 0xc]
cmp dword [esi + 0x10], 0
je 0x44e899
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x44e899
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 0x44e89f
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 0x44e740
jmp 0x44ed62
push ebx
call fcn.004c1cbd
mov ecx, dword [0x51d614]
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.004c1cbd
mov ecx, dword [0x51d614]
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.0045af80
mov ecx, dword [ebp - 0x20]
add esp, 8
cmp ecx, 0x18
jne 0x44e96c
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x44e979
cmp ecx, 0x10
jne 0x44e977
mov eax, dword [esi]
add eax, eax
jmp 0x44e979
xor eax, eax
neg eax
and eax, 3
mov dword [ebp - 0x7c], eax
cmp ecx, 0x18
jne 0x44e996
xor edx, edx
mov dword [ebp - 0x3c], 1
xor eax, eax
jmp 0x44ea4e
mov edx, dword [ebp - 0xc]
cmp ecx, 0x20
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
jne 0x44e9d1
cmp edx, 0xff
jne 0x44e9d1
cmp ecx, 0xff00
jne 0x44e9d1
cmp eax, 0xff0000
jne 0x44e9d1
cmp dword [ebp - 0x14], 0xff000000
jne 0x44e9e9
xor edx, edx
mov dword [ebp - 0x3c], 2
xor eax, eax
jmp 0x44ea4e
test eax, eax
je 0x44ee4c
test ecx, ecx
je 0x44ee4c
test edx, edx
je 0x44ee4c
push eax
call fcn.00453920
push dword [ebp - 0x24]
sub eax, 7
mov dword [ebp - 0x40], eax
call fcn.0044e220
push dword [ebp - 0x28]
mov dword [ebp - 0x48], eax
call fcn.00453920
push dword [ebp - 0x28]
sub eax, 7
mov dword [ebp - 4], eax
call fcn.0044e220
push dword [ebp - 0xc]
mov dword [ebp - 0x4c], eax
call fcn.00453920
push dword [ebp - 0xc]
sub eax, 7
mov dword [ebp - 0x50], eax
call fcn.0044e220
push dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
call fcn.00453920
push dword [ebp - 0x14]
lea edx, [eax - 7]
mov dword [ebp - 0x18], edx
call fcn.0044e220
add esp, 0x20
mov dword [ebp - 0x44], eax
mov ecx, dword [esi + 4]
mov dword [ebp - 0x2c], edi
test ecx, ecx
jle 0x44ed62
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 0x44ebfc
mov dword [ebp - 0x1c], 0
test eax, eax
jle 0x44ed44
nop dword [eax + eax]
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44eae9
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb0b
cmp dword [esi + 0x20], 0
je 0x44eb09
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb0b
xor cl, cl
mov byte [ebx + edi + 2], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44eb28
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb4a
cmp dword [esi + 0x20], 0
je 0x44eb48
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb4a
xor cl, cl
mov byte [ebx + edi + 1], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44eb67
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb89
cmp dword [esi + 0x20], 0
je 0x44eb87
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44eb89
xor cl, cl
mov byte [edi + ebx], cl
add edi, 3
cmp dword [ebp - 0x3c], 2
jne 0x44ebd2
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44ebae
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44ebd5
cmp dword [esi + 0x20], 0
je 0x44ebce
push esi
call fcn.0045a910
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44ebd5
xor cl, cl
jmp 0x44ebd5
or cl, 0xff
movzx eax, cl
or dword [ebp - 0x34], eax
cmp dword [ebp - 0x10], 4
jne 0x44ebe5
mov byte [edi + ebx], cl
inc edi
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [esi]
jl 0x44ead0
mov dword [ebp - 8], edi
jmp 0x44ed44
mov dword [ebp - 0x38], 0
test eax, eax
jle 0x44ed44
nop dword [eax + eax]
push esi
call fcn.00451900
add esp, 4
mov edi, eax
cmp dword [ebp - 0x20], 0x10
mov dword [ebp - 0x1c], edi
je 0x44ec35
push esi
call fcn.00451900
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 + 0x51a17c]
mov ecx, dword [eax*4 + 0x51a1a0]
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 + 0x51a17c]
mov ecx, dword [eax*4 + 0x51a1a0]
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 + 0x51a17c]
mov ecx, dword [eax*4 + 0x51a1a0]
mov eax, dword [ebp - 0x14]
sar edx, cl
mov byte [edi + ebx], dl
inc edi
mov dword [ebp - 8], edi
test eax, eax
je 0x44ed20
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 + 0x51a17c]
mov ecx, dword [eax*4 + 0x51a1a0]
sar edx, cl
jmp 0x44ed25
mov edx, 0xff
or dword [ebp - 0x34], edx
cmp dword [ebp - 0x10], 4
jne 0x44ed35
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 0x44ec10
push dword [ebp - 0x7c]
push esi
call fcn.0045af80
mov eax, dword [ebp - 0x2c]
add esp, 8
mov ecx, dword [esi + 4]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, ecx
jl 0x44eab0
mov edi, dword [ebp - 0x10]
cmp edi, 4
jne 0x44ed89
cmp dword [ebp - 0x34], 0
jne 0x44ed89
mov eax, dword [esi]
imul eax, ecx
lea eax, [eax*4 - 1]
test eax, eax
js 0x44ed89
mov byte [eax + ebx], 0xff
sub eax, 4
jns 0x44ed80
cmp dword [ebp - 0x54], 0
jle 0x44ee03
mov ecx, dword [esi + 4]
mov dword [ebp - 4], 0
test ecx, 0xfffffffe
jle 0x44ee03
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 0x44edee
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 0x44edd0
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 0x44eda1
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x44ee28
cmp eax, edi
je 0x44ee28
push dword [esi + 4]
push dword [esi]
push eax
push edi
push ebx
call fcn.0044fca0
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x44eeb2
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 0x44ee43
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.004c1cbd
mov ecx, dword [0x51d614]
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 [0x51d614]
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 [0x51d614]
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