Function at 0x4144b0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 8
push esi
mov esi, dword [esp + 0x10]
test esi, esi
je 0x414807
mov eax, dword [esi + 0x14]
test eax, eax
je 0x414807
mov ecx, dword [esi + 0x18]
test ecx, ecx
je 0x414807
cmp eax, 0x100
jg 0x414807
push ebp
push edi
mov ecx, 0x16
xor eax, eax
mov edi, 0x4834d8
push 0x10
rep stosd dword es:[edi], eax
lea eax, [esi + 4]
push eax
push 0x4834dc
call fcn.00450dd0
mov ecx, dword [esi + 0x28]
add esp, 0xc
test ecx, ecx
mov dword [esp + 0x18], 0
mov ebp, 1
je 0x41457b
mov eax, dword [esi + 0x1c]
mov edx, 3
cmp eax, 0x8000
jne 0x414529
mov edx, ebp
cmp eax, 0x8888
jne 0x414535
mov edx, 4
mov eax, dword [esi + 0x20]
test eax, eax
ja 0x41453f
mov dword [esi + 0x20], ebp
mov eax, dword [esi + 0x20]
mov dword [esp + 0x10], ecx
imul eax, dword [esi + 0x18]
imul eax, dword [esi + 0x14]
imul eax, edx
push eax
mov dword [esp + 0x10], eax
call fcn.00450d2b
lea ecx, [esp + 0x10]
lea edx, [esp + 0x14]
mov edi, eax
mov eax, dword [esi + 0x2c]
push ecx
push edx
push edi
push eax
mov dword [esp + 0x2c], edi
call fcn.004081c0
add esp, 0x14
mov dword [esi + 0x2c], edi
mov eax, dword [esi + 0x20]
test eax, eax
ja 0x414585
mov dword [esi + 0x20], ebp
mov edi, dword [esi + 0x14]
push ebx
mov dword [0x4834f4], edi
mov ebx, dword [esi + 0x18]
cmp edi, ebx
mov dword [0x4834f8], ebx
jl 0x4145b8
mov eax, edi
xor ecx, ecx
cdq
idiv ebx
test eax, eax
jne 0x4145af
mov dword [0x483518], ecx
jmp 0x4145d5
sar eax, 1
test eax, eax
jle 0x4145a7
inc ecx
jmp 0x4145af
mov eax, ebx
xor ecx, ecx
cdq
idiv edi
test eax, eax
je 0x4145ce
sar eax, 1
test eax, eax
jle 0x4145cc
inc ecx
jmp 0x4145c3
mov eax, ecx
neg eax
mov dword [0x483518], eax
cmp edi, ebx
mov eax, edi
jg 0x4145dd
mov eax, ebx
xor ecx, ecx
test eax, eax
je 0x4145ee
sar eax, 1
test eax, eax
jle 0x4145ec
inc ecx
jmp 0x4145e3
mov eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [0x483510], eax
mov dword [0x483514], eax
inc eax
cmp ecx, eax
jle 0x414605
mov dword [esp + 0x20], eax
mov dword [0x48350c], ebp
mov edx, dword [esi + 0x20]
mov dword [0x483508], edx
mov ecx, dword [esi + 0x2c]
cmp edx, ebp
mov dword [0x48352c], ecx
mov dword [0x4834ec], 0
jbe 0x414649
mov ecx, dword [esi + 0x24]
mov eax, 0xa
test ecx, ecx
jbe 0x414639
mov eax, ecx
and eax, 0xff
or ah, 1
shl eax, 0x10
mov dword [0x4834ec], eax
mov eax, 0x888
mov dword [0x4834fc], eax
mov esi, dword [esi + 0x1c]
test esi, esi
jbe 0x4146a0
cmp esi, 0x8000
jne 0x414674
mov ecx, dword [0x4834ec]
mov eax, esi
mov dword [0x4834fc], eax
or ecx, 0x50
jmp 0x41469a
cmp esi, 0x888
jne 0x414687
mov ecx, dword [0x4834ec]
or ecx, 0x30
jmp 0x41469a
mov ecx, dword [0x4834ec]
mov eax, 0x8888
mov dword [0x4834fc], eax
or ecx, 0x10
mov dword [0x4834ec], ecx
mov ecx, eax
mov esi, eax
shr ecx, 0xc
shr esi, 8
and ecx, 0xf
and esi, 0xf
add ecx, esi
mov esi, eax
shr esi, 4
and esi, 0xf
and eax, 0xf
add ecx, esi
lea ecx, [ecx + eax + 7]
shr ecx, 3
mov eax, ecx
imul eax, ebx
imul eax, edi
mov dword [0x483500], eax
mov eax, dword [esp + 0x24]
test eax, eax
jbe 0x414756
cmp edi, ebx
mov esi, edi
jl 0x4146e3
mov esi, ebx
xor ebp, ebp
test esi, esi
jle 0x414715
mov edx, edi
mov eax, esi
imul edx, ebx
add ebp, edx
cdq
sub eax, edx
sar eax, 1
mov esi, eax
mov eax, edi
cdq
sub eax, edx
sar eax, 1
mov edi, eax
mov eax, ebx
cdq
sub eax, edx
sar eax, 1
test esi, esi
mov ebx, eax
jg 0x4146e9
mov edx, dword [0x483508]
mov eax, ecx
imul eax, edx
imul eax, ebp
cmp eax, dword [esp + 0x24]
jne 0x41474a
mov eax, dword [0x4834f4]
mov edx, dword [0x4834f8]
cmp eax, edx
jl 0x414734
mov eax, edx
xor edx, edx
test eax, eax
je 0x414745
sar eax, 1
test eax, eax
jle 0x414743
inc edx
jmp 0x41473a
mov eax, edx
mov dword [0x48350c], eax
mov edi, dword [0x4834f4]
mov ebx, dword [0x4834f8]
imul ecx, dword [0x48350c]
imul ecx, ebx
imul ecx, edi
mov dword [0x483504], ecx
mov ecx, dword [esp + 0x20]
push ecx
push 0x4834d8
call fcn.004142b0
add esp, 8
xor ecx, ecx
xor eax, eax
pop ebx
movsx edx, byte [eax + 0x4834dc]
mov esi, edx
imul esi, eax
add esi, ecx
xor esi, edx
inc eax
cmp eax, 0x10
mov ecx, esi
jl 0x414780
mov edx, dword [0x4834fc]
mov eax, dword [0x483504]
mov esi, dword [0x483508]
mov ebp, dword [0x4834f4]
add eax, edx
mov edx, dword [0x48350c]
add eax, esi
mov esi, dword [0x4834ec]
add eax, edx
mov edx, dword [0x4834f8]
add esi, edx
pop edi
add esi, ebp
pop ebp
xor eax, esi
mov edx, eax
and eax, 0xffff
shr edx, 0x10
shl eax, 0x10
xor edx, eax
mov eax, dword [esp + 0x10]
or edx, ecx
or edx, 0xa0000000
test eax, eax
mov dword [0x4834d8], edx
je 0x4147fd
push eax
call fcn.00450d9f
add esp, 4
mov eax, 0x4834d8
pop esi
add esp, 8
ret
xor eax, eax
pop esi
add esp, 8
ret