Function at 0x48be20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov edi, edx
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
mov esi, ecx
test edi, edi
je 0x48be74
test ebx, ebx
js 0x48be47
movsx eax, word [edi + 0x28]
cmp eax, ebx
jne 0x48bec6
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x48beac
lea ecx, [eax + 1]
lea eax, [eax + eax*4]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
mov dword [ecx + eax*4], 0x7f
mov dword [ecx + eax*4 + 4], edx
mov dword [ecx + eax*4 + 8], ebp
mov dword [ecx + eax*4 + 0xc], 0
jmp 0x48be9f
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x48bf28
lea ecx, [eax + 1]
lea eax, [eax + eax*4]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
mov dword [ecx + eax*4], 0x59
mov dword [ecx + eax*4 + 4], edx
mov dword [ecx + eax*4 + 8], ebx
mov dword [ecx + eax*4 + 0xc], ebp
mov dword [ecx + eax*4 + 0x10], 0
add esp, 0x10
jmp 0x48bec1
mov eax, edx
mov ecx, esi
mov edx, 0x7f
push 0
push ebp
push eax
call fcn.0046c600
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [edi + 0x38], 0
mov dword [esp + 4], edx
mov edx, 0xa6
mov ecx, ebx
je 0x48bfc6
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x48bf3b
mov dword [esp], ecx
lea ecx, [eax + 1]
lea eax, [eax + eax*4]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
mov byte [ecx + eax*4], dl
mov edx, dword [esp + 4]
mov word [ecx + eax*4 + 2], 0
mov dword [ecx + eax*4 + 4], edx
mov edx, dword [esp]
mov dword [ecx + eax*4 + 8], edx
mov dword [ecx + eax*4 + 0xc], ebp
mov dword [ecx + eax*4 + 0x10], 0
mov byte [ecx + eax*4 + 1], 0
cmp dword [edi + 0xc], 0
jne 0x48c0f4
jmp 0x48bf57
mov ecx, esi
mov edx, 0x59
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
jmp fcn.0046c600
mov eax, ecx
mov ecx, esi
push ebp
push eax
push dword [esp + 0xc]
call fcn.0046c600
add esp, 0xc
cmp dword [edi + 0xc], 0
jne 0x48c0f4
mov dword [esp + 8], 0
mov dword [esp], ebp
lea ebp, [ebx + ebx*4]
mov eax, dword [edi + 4]
mov edx, dword [eax + ebp*4 + 4]
test edx, edx
je 0x48c0f1
mov ecx, dword [esi]
movzx eax, byte [eax + ebp*4 + 0xd]
movzx ebp, byte [ecx + 0x4e]
mov dword [esp + 4], ebp
lea ebp, [esp + 8]
push ebp
push eax
push dword [esp + 0xc]
call fcn.0048c1b0
add esp, 0xc
mov ebp, dword [esp + 8]
test ebp, ebp
je 0x48c0f1
mov ecx, dword [esi]
cmp byte [ecx + 0x51], 0
je 0x48c0c0
cmp dword [ecx + 0x1f8], 0
je 0x48c0d4
mov edx, ebp
call fcn.00448d60
jmp 0x48c0f1
mov ecx, dword [edi + 4]
mov dword [esp], ebp
lea ebp, [ebx + ebx*4]
movzx eax, word [ecx + ebp*4 + 0x10]
test al, 0x20
jne 0x48c03a
mov eax, dword [edi + 0x24]
test al, al
js 0x48c093
test al, 0x20
je 0x48c08c
test bx, bx
js 0x48c08c
movzx edx, word [ecx + 0x10]
and edx, 0x20
test bx, bx
je 0x48c189
movsx ebp, bx
mov eax, 1
test ebp, ebp
cmovg eax, ebp
add ecx, 0x24
xor ebp, ebp
mov dword [esp + 0xc], eax
movzx edx, dx
shr edx, 5
xor edx, 1
add ebp, edx
movzx edx, word [ecx]
add ecx, 0x14
and edx, 0x20
dec eax
jne 0x48c01a
mov eax, dword [esp + 0xc]
jmp 0x48c18d
mov esi, dword [esi + 0xc]
lea edx, [ecx + ebp*4]
test eax, 0x100
jne 0x48c07a
lea edi, [ecx + ebp*4 + 0x10]
mov ecx, dword [esp + 4]
mov ebx, dword [esi + 0x34]
or eax, 0x100
mov word [edi], ax
inc ecx
mov dword [esi + 0x34], ecx
mov ecx, esi
push dword [esp]
call fcn.00488130
add esp, 4
mov dword [esi + 0x34], ebx
and byte [edi + 1], 0xfe
add esp, 0x10
jmp 0x48bec1
push dword [edx]
push str.generated_column_loop_on___s_
push esi
call fcn.0042af90
jmp 0x48bebe
mov ebp, ebx
jmp 0x48c19a
mov eax, dword [edi + 8]
xor ecx, ecx
test eax, eax
je 0x48c14c
mov ebp, dword [esp]
movzx edx, word [eax + 0x37]
and edx, 3
cmp dx, 2
je 0x48c151
mov eax, dword [eax + 0x14]
test eax, eax
jne 0x48c0a3
jmp 0x48c153
mov ecx, dword [esi + 0x6c]
mov eax, dword [esi + 0x68]
lea ecx, [ecx + ecx*4]
mov byte [eax + ecx*4 - 0x13], 0xf5
mov dword [eax + ecx*4 - 4], ebp
jmp 0x48c0f1
test byte [ebp + 9], 0x24
jne 0x48c0e0
cmp dword [ebp + 0x18], 0
je 0x48c0e7
mov ecx, ebp
call fcn.0044b390
mov ecx, dword [ebp + 0x20]
mov edx, ebp
call fcn.004352c0
mov ebp, dword [esp]
mov eax, dword [edi + 4]
lea ecx, [ebx + ebx*4]
cmp byte [eax + ecx*4 + 0xd], 0x45
jne 0x48bea7
cmp dword [edi + 0x38], 0
jne 0x48bea7
mov eax, dword [esi + 0x6c]
cmp dword [esi + 0x70], eax
jle 0x48c13b
lea ecx, [eax + 1]
lea eax, [eax + eax*4]
mov dword [esi + 0x6c], ecx
mov ecx, dword [esi + 0x68]
mov dword [ecx + eax*4], 0x53
mov dword [ecx + eax*4 + 4], ebp
mov dword [ecx + eax*4 + 8], 0
jmp 0x48be6a
mov ecx, esi
mov edx, 0x53
push 0
push 0
push ebp
jmp 0x48beb9
mov ebp, dword [esp]
jmp 0x48c153
mov ecx, eax
movzx eax, word [ecx + 0x34]
mov edx, 0x59
test eax, eax
je 0x48c17a
mov ebp, dword [ecx + 4]
xor ecx, ecx
cmp word [ebp], bx
je 0x48c184
add ecx, 0x10000
add ebp, 2
dec eax
jne 0x48c165
mov ebp, dword [esp]
mov ecx, 0xffffffff
jmp 0x48bedb
sar ecx, 0x10
jmp 0x48c1a2
xor eax, eax
xor ebp, ebp
test dx, dx
je 0x48c19a
sub eax, ebp
add ax, word [edi + 0x2c]
mov ebp, eax
movsx ecx, bp
mov edx, 0x59
mov ebp, dword [esp]
jmp 0x48bedb