Function at 0x44d860
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.0044e4b0
add esp, 8
test eax, eax
je 0x44e4a2
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 0x44d918
cmp edi, 0x18
jge 0x44d92a
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 0x44d924
cmp edi, 0x10
jge 0x44d927
sub ebx, edx
sub ebx, eax
sar ebx, 2
mov dword [ebp - 8], ebx
cmp edi, 0x18
jne 0x44d93b
cmp ecx, 0xff000000
jne 0x44d93b
mov ecx, 3
jmp 0x44d946
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 0x44d95d
cmp eax, 3
jl 0x44d95d
mov ecx, eax
mov dword [ebp - 0x10], ecx
mov ebx, dword [esi + 4]
mov edi, dword [esi]
test ecx, ecx
js 0x44e489
test edi, edi
js 0x44e489
je 0x44d984
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x44e489
mov eax, edi
imul eax, ecx
mov dword [ebp - 4], eax
test eax, eax
js 0x44e489
test ebx, ebx
js 0x44e489
je 0x44d9af
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x44e489
test edi, edi
js 0x44e467
je 0x44d9c9
mov eax, SysReAllocString
cdq
idiv edi
cmp ecx, eax
jg 0x44e467
cmp dword [ebp - 4], 0
jl 0x44e467
test ebx, ebx
js 0x44e467
je 0x44d9ee
mov eax, SysReAllocString
cdq
idiv ebx
cmp dword [ebp - 4], eax
jg 0x44e467
imul edi, ebx
imul edi, ecx
push edi
call fcn.00495137
mov ebx, eax
add esp, 4
mov dword [ebp - 0x58], ebx
test ebx, ebx
je 0x44e467
xor edi, edi
cmp dword [ebp - 0x20], 0x10
jge 0x44defc
mov eax, dword [ebp - 8]
test eax, eax
je 0x44ded1
cmp eax, 0x100
jg 0x44ded1
mov dword [ebp - 0xc], edi
test eax, eax
jle 0x44db4e
mov eax, dword [esi + 0xa8]
mov ebx, dword [ebp - 8]
mov ecx, dword [esi + 0xac]
cmp eax, ecx
jae 0x44da55
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44da7d
cmp dword [esi + 0x20], 0
je 0x44da7b
push esi
call fcn.00459f00
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 0x44da7d
xor dl, dl
mov edi, dword [ebp - 0xc]
mov byte [ebp + edi*4 - 0x49e], dl
cmp eax, ecx
jae 0x44da96
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44dabe
cmp dword [esi + 0x20], 0
je 0x44dabc
push esi
call fcn.00459f00
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 0x44dabe
xor dl, dl
mov byte [ebp + edi*4 - 0x49f], dl
cmp eax, ecx
jae 0x44dad4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44daf6
cmp dword [esi + 0x20], 0
je 0x44daf4
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44daf6
xor cl, cl
cmp dword [ebp - 0x2c], 0xc
mov edx, dword [ebp - 0xc]
mov byte [ebp + edx*4 - 0x4a0], cl
je 0x44db35
cmp eax, dword [esi + 0xac]
jae 0x44db17
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44db35
cmp dword [esi + 0x20], 0
je 0x44db35
push esi
call fcn.00459f00
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 0x44da40
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.0045a570
mov eax, dword [ebp - 0x20]
add esp, 8
cmp eax, 1
jne 0x44db85
mov edx, dword [esi]
add edx, 7
shr edx, 3
jmp 0x44db9c
cmp eax, 4
jne 0x44db91
mov edx, dword [esi]
inc edx
shr edx, 1
jmp 0x44db9c
cmp eax, 8
jne 0x44dea6
mov edx, dword [esi]
mov ecx, dword [esi + 4]
neg edx
and edx, 3
mov dword [ebp - 0xc], edx
cmp eax, 1
jne 0x44dd1b
mov dword [ebp - 0x30], 0
test ecx, ecx
jle 0x44e352
nop
mov eax, dword [esi + 0xa8]
mov ecx, 7
mov dword [ebp - 0x14], ecx
cmp eax, dword [esi + 0xac]
jae 0x44dbe1
mov dl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44dc06
cmp dword [esi + 0x20], 0
je 0x44dc04
push esi
call fcn.00459f00
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 0x44dc06
xor dl, dl
movzx eax, dl
xor edx, edx
mov dword [ebp - 0x18], eax
cmp dword [esi], edx
jle 0x44dccd
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 0x44dc5d
mov byte [edi + ebx], 0xff
inc edi
mov eax, dword [esi]
inc edx
mov dword [ebp - 0x44], edx
cmp edx, eax
je 0x44dccd
mov ecx, dword [ebp - 0x14]
sub ecx, 1
mov dword [ebp - 0x14], ecx
jns 0x44dcc2
mov eax, dword [esi + 0xa8]
mov dword [ebp - 0x14], 7
cmp eax, dword [esi + 0xac]
jae 0x44dc92
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44dcb7
cmp dword [esi + 0x20], 0
je 0x44dcb5
push esi
call fcn.00459f00
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 0x44dcb7
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 0x44dc20
cmp dword [esi + 0x10], 0
mov edx, dword [ebp - 0xc]
je 0x44dcfe
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x44dcfe
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 0x44dd04
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 0x44dbc0
jmp 0x44e352
mov dword [ebp - 0x18], 0
test ecx, ecx
jle 0x44e352
nop word [eax + eax]
cmp dword [esi], 0
mov dword [ebp - 4], 0
jle 0x44de56
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44dd59
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44dd7b
cmp dword [esi + 0x20], 0
je 0x44dd79
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44dd7b
xor cl, cl
xor edx, edx
movzx ecx, cl
cmp dword [ebp - 0x20], 4
jne 0x44dd8e
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 0x44ddbf
mov byte [edi + ebx], 0xff
inc edi
mov ecx, dword [ebp - 4]
lea eax, [ecx + 1]
cmp eax, dword [esi]
je 0x44de53
cmp dword [ebp - 0x20], 8
jne 0x44de14
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44ddec
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44de0e
cmp dword [esi + 0x20], 0
je 0x44de0c
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44de0e
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 0x44de45
mov byte [edi + ebx], 0xff
inc edi
add ecx, 2
mov dword [ebp - 4], ecx
cmp ecx, dword [esi]
jl 0x44dd40
mov edx, dword [ebp - 0xc]
cmp dword [esi + 0x10], 0
je 0x44de89
mov eax, dword [esi + 0xac]
mov ecx, eax
sub ecx, dword [esi + 0xa8]
cmp ecx, edx
jge 0x44de89
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 0x44de8f
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 0x44dd30
jmp 0x44e352
push ebx
call fcn.00495142
mov ecx, dword [0x4e85a0]
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.00495142
mov ecx, dword [0x4e85a0]
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.0045a570
mov ecx, dword [ebp - 0x20]
add esp, 8
cmp ecx, 0x18
jne 0x44df5c
mov eax, dword [esi]
lea eax, [eax + eax*2]
jmp 0x44df69
cmp ecx, 0x10
jne 0x44df67
mov eax, dword [esi]
add eax, eax
jmp 0x44df69
xor eax, eax
neg eax
and eax, 3
mov dword [ebp - 0x7c], eax
cmp ecx, 0x18
jne 0x44df86
xor edx, edx
mov dword [ebp - 0x3c], 1
xor eax, eax
jmp 0x44e03e
mov edx, dword [ebp - 0xc]
cmp ecx, 0x20
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x24]
jne 0x44dfc1
cmp edx, 0xff
jne 0x44dfc1
cmp ecx, 0xff00
jne 0x44dfc1
cmp eax, 0xff0000
jne 0x44dfc1
cmp dword [ebp - 0x14], 0xff000000
jne 0x44dfd9
xor edx, edx
mov dword [ebp - 0x3c], 2
xor eax, eax
jmp 0x44e03e
test eax, eax
je 0x44e43c
test ecx, ecx
je 0x44e43c
test edx, edx
je 0x44e43c
push eax
call fcn.00452f10
push dword [ebp - 0x24]
sub eax, 7
mov dword [ebp - 0x40], eax
call fcn.0044d810
push dword [ebp - 0x28]
mov dword [ebp - 0x48], eax
call fcn.00452f10
push dword [ebp - 0x28]
sub eax, 7
mov dword [ebp - 4], eax
call fcn.0044d810
push dword [ebp - 0xc]
mov dword [ebp - 0x4c], eax
call fcn.00452f10
push dword [ebp - 0xc]
sub eax, 7
mov dword [ebp - 0x50], eax
call fcn.0044d810
push dword [ebp - 0x14]
mov dword [ebp - 0x30], eax
call fcn.00452f10
push dword [ebp - 0x14]
lea edx, [eax - 7]
mov dword [ebp - 0x18], edx
call fcn.0044d810
add esp, 0x20
mov dword [ebp - 0x44], eax
mov ecx, dword [esi + 4]
mov dword [ebp - 0x2c], edi
test ecx, ecx
jle 0x44e352
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 0x44e1ec
mov dword [ebp - 0x1c], 0
test eax, eax
jle 0x44e334
nop dword [eax + eax]
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e0d9
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e0fb
cmp dword [esi + 0x20], 0
je 0x44e0f9
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e0fb
xor cl, cl
mov byte [ebx + edi + 2], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e118
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e13a
cmp dword [esi + 0x20], 0
je 0x44e138
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e13a
xor cl, cl
mov byte [ebx + edi + 1], cl
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e157
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e179
cmp dword [esi + 0x20], 0
je 0x44e177
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e179
xor cl, cl
mov byte [edi + ebx], cl
add edi, 3
cmp dword [ebp - 0x3c], 2
jne 0x44e1c2
mov eax, dword [esi + 0xa8]
cmp eax, dword [esi + 0xac]
jae 0x44e19e
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e1c5
cmp dword [esi + 0x20], 0
je 0x44e1be
push esi
call fcn.00459f00
mov eax, dword [esi + 0xa8]
add esp, 4
mov cl, byte [eax]
inc eax
mov dword [esi + 0xa8], eax
jmp 0x44e1c5
xor cl, cl
jmp 0x44e1c5
or cl, 0xff
movzx eax, cl
or dword [ebp - 0x34], eax
cmp dword [ebp - 0x10], 4
jne 0x44e1d5
mov byte [edi + ebx], cl
inc edi
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, dword [esi]
jl 0x44e0c0
mov dword [ebp - 8], edi
jmp 0x44e334
mov dword [ebp - 0x38], 0
test eax, eax
jle 0x44e334
nop dword [eax + eax]
push esi
call fcn.00450ef0
add esp, 4
mov edi, eax
cmp dword [ebp - 0x20], 0x10
mov dword [ebp - 0x1c], edi
je 0x44e225
push esi
call fcn.00450ef0
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 + 0x4e505c]
mov ecx, dword [eax*4 + 0x4e5080]
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 + 0x4e505c]
mov ecx, dword [eax*4 + 0x4e5080]
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 + 0x4e505c]
mov ecx, dword [eax*4 + 0x4e5080]
mov eax, dword [ebp - 0x14]
sar edx, cl
mov byte [edi + ebx], dl
inc edi
mov dword [ebp - 8], edi
test eax, eax
je 0x44e310
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 + 0x4e505c]
mov ecx, dword [eax*4 + 0x4e5080]
sar edx, cl
jmp 0x44e315
mov edx, 0xff
or dword [ebp - 0x34], edx
cmp dword [ebp - 0x10], 4
jne 0x44e325
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 0x44e200
push dword [ebp - 0x7c]
push esi
call fcn.0045a570
mov eax, dword [ebp - 0x2c]
add esp, 8
mov ecx, dword [esi + 4]
inc eax
mov dword [ebp - 0x2c], eax
cmp eax, ecx
jl 0x44e0a0
mov edi, dword [ebp - 0x10]
cmp edi, 4
jne 0x44e379
cmp dword [ebp - 0x34], 0
jne 0x44e379
mov eax, dword [esi]
imul eax, ecx
lea eax, [eax*4 - 1]
test eax, eax
js 0x44e379
mov byte [eax + ebx], 0xff
sub eax, 4
jns 0x44e370
cmp dword [ebp - 0x54], 0
jle 0x44e3f3
mov ecx, dword [esi + 4]
mov dword [ebp - 4], 0
test ecx, 0xfffffffe
jle 0x44e3f3
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 0x44e3de
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 0x44e3c0
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 0x44e391
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x44e418
cmp eax, edi
je 0x44e418
push dword [esi + 4]
push dword [esi]
push eax
push edi
push ebx
call fcn.0044f290
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x44e4a2
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 0x44e433
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.00495142
mov ecx, dword [0x4e85a0]
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 [0x4e85a0]
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 [0x4e85a0]
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