Function at 0x48816f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x14c
mov ebx, eax
mov eax, dword [eax + 0x9c]
mov dword [ebp - 0x11c], eax
imul eax, dword [ebx + 0xa0]
add eax, 0x1e
and eax, 0xfffffff0
call fcn.004949f0
lea edx, [esp + 0xf]
and edx, 0xfffffff0
mov dword [ebp - 0x120], edx
mov ecx, dword [ebx + 0xa0]
mov dword [ebp - 0x10c], ecx
mov esi, dword [ebx + 0x98]
mov dword [ebp - 0x108], esi
cmp dword [ebx + 0x30], 0x1c
jne 0x4881de
mov edi, dword [ebx + 0x2e94]
mov dword [ebp - 0x100], edi
mov dword [ebp - 0x104], 4
jmp 0x4881f4
mov eax, dword [ebx + 0xa4]
mov dword [ebp - 0x100], eax
mov dword [ebp - 0x104], 2
xor esi, esi
xor edi, edi
jmp 0x48823f
mov eax, dword [ebx + 0x2018]
mov ecx, dword [eax + esi*4]
mov edx, dword [ebx + 0x26c4]
mov eax, dword [ebx + 0x828]
mov eax, dword [eax + ecx*4]
and eax, 7
cmp eax, 1
sbb eax, eax
not eax
and eax, 3
test byte [edx + ecx], 8
jne 0x48822a
mov eax, 3
mov edx, dword [ebp - 0x120]
mov byte [edx + ecx], al
cmp eax, 3
sete al
movzx eax, al
add edi, eax
inc esi
cmp esi, dword [ebx + 0xb4]
jl 0x4881fa
mov eax, dword [ebx]
test byte [eax + 0x178], 1
je 0x48834c
mov ecx, 2
mov eax, dword [ebp - 0x108]
cdq
idiv ecx
cmp edi, eax
jle 0x48834c
mov edx, dword [ebp - 0x100]
imul edx, dword [ebp - 0x104]
mov dword [ebp - 0x114], edx
mov dword [ebp - 0xfc], 1
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0xf4], 1
shl edx, 2
mov dword [ebp - 0x14c], edx
jmp 0x488cc1
mov eax, edi
imul eax, dword [ebx + 0xa0]
lea edx, [esi + eax]
mov eax, dword [ebx + 0x828]
test byte [eax + edx*4], 7
jne 0x48833c
mov eax, dword [ebx + 0x26c4]
test byte [eax + edx], 8
je 0x48833c
cmp dword [ebx + 0x118], 1
sbb eax, eax
not eax
add eax, 2
mov dword [ebx + 0x1cec], eax
mov dword [ebx + 0x1fd4], 0
mov dword [ebx + 0x1cf0], 0
mov dword [ebx + 0xa88], 0
sub esp, 0xc
push dword [ebx + 0x29a8]
call dword [ebx + 0xb38]
mov dword [ebx + 0x1fc8], esi
mov dword [ebx + 0x1fcc], edi
mov dword [ebx + 0x1cf4], 0
mov dword [ebx + 0x1cf8], 0
xor edx, edx
mov eax, ebx
call fcn.0048802b
add esp, 0x10
inc esi
cmp esi, dword [ebx + 0x98]
jl 0x4882ab
inc edi
jmp 0x48834e
xor edi, edi
cmp edi, dword [ebx + 0x9c]
jge 0x488d76
xor esi, esi
jmp 0x48833d
mov ecx, dword [ebx + 0xa0]
mov dword [ebp - 0x8c], ecx
lea edi, [ebp - 0x6c]
xor eax, eax
mov ecx, 0x10
rep stosd dword es:[edi], eax
lea edi, [ebp - 0x2c]
mov cl, 8
rep stosd dword es:[edi], eax
mov esi, dword [ebx + 0x820]
mov edi, dword [ebp - 0x80]
lea eax, [esi + edi]
mov dx, word [eax]
mov word [ebp - 0x118], dx
mov ax, word [eax + 2]
mov word [ebp - 0x116], ax
mov eax, dword [ebp - 0xec]
xor eax, dword [ebp - 0xf8]
xor eax, dword [ebp - 0xf0]
test al, 1
jne 0x488bfa
mov eax, dword [ebp - 0xec]
imul eax, dword [ebp - 0x8c]
add eax, dword [ebp - 0xf0]
mov dword [ebp - 0xe8], eax
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + eax], 3
je 0x488bfa
xor edx, edx
cmp dword [ebp - 0xf0], 0
jle 0x488402
mov eax, dword [ebp - 0x120]
mov edi, dword [ebp - 0xe8]
xor edx, edx
cmp byte [eax + edi - 1], 3
sete dl
mov ecx, dword [ebp - 0x108]
cmp dword [ebp - 0xa0], ecx
jge 0x488428
mov eax, dword [ebp - 0x120]
mov edi, dword [ebp - 0xe8]
cmp byte [eax + edi + 1], 3
jne 0x488428
mov edx, 1
cmp dword [ebp - 0xec], 0
jle 0x48844e
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + eax], 3
jne 0x48844e
mov edx, 1
mov edi, dword [ebp - 0x11c]
cmp dword [ebp - 0x90], edi
jge 0x488474
mov eax, dword [ebp - 0x120]
add eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x10c]
cmp byte [eax + ecx], 3
je 0x48847c
test edx, edx
je 0x488bfa
xor edx, edx
cmp dword [ebp - 0xf0], 0
jle 0x48849d
mov eax, dword [ebp - 0x120]
mov edi, dword [ebp - 0xe8]
xor edx, edx
cmp byte [eax + edi - 1], 2
sete dl
mov ecx, dword [ebp - 0x108]
cmp dword [ebp - 0xa0], ecx
jge 0x4884c3
mov eax, dword [ebp - 0x120]
mov edi, dword [ebp - 0xe8]
cmp byte [eax + edi + 1], 2
jne 0x4884c3
mov edx, 1
cmp dword [ebp - 0xec], 0
jle 0x4884e9
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + eax], 2
jne 0x4884e9
mov edx, 1
mov edi, dword [ebp - 0x11c]
cmp dword [ebp - 0x90], edi
jge 0x48850f
mov eax, dword [ebp - 0x120]
add eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x10c]
cmp byte [eax + ecx], 2
je 0x488520
test edx, edx
jne 0x488520
cmp dword [ebp - 0xf8], 1
jg 0x488bfa
cmp dword [ebp - 0xf0], 0
jle 0x488573
mov ecx, dword [ebp - 0xe8]
dec ecx
mov eax, dword [ebp - 0xe8]
mov edi, dword [ebp - 0x120]
cmp byte [eax + edi - 1], 0
je 0x488573
mov eax, dword [ebp - 0x98]
add eax, dword [ebp - 0x144]
lea eax, [esi + eax]
movsx edx, word [eax]
mov dword [ebp - 0x6c], edx
movsx eax, word [eax + 2]
mov dword [ebp - 0x68], eax
mov eax, dword [ebx + 0x87c]
movsx eax, byte [eax + ecx*4]
mov dword [ebp - 0x2c], eax
mov edi, 1
jmp 0x488575
xor edi, edi
mov edx, dword [ebp - 0x108]
cmp dword [ebp - 0xa0], edx
jge 0x4885d0
mov ecx, dword [ebp - 0xe8]
inc ecx
mov edx, dword [ebp - 0xe8]
mov eax, dword [ebp - 0x120]
cmp byte [edx + eax + 1], 0
je 0x4885d0
mov eax, dword [ebp - 0xac]
add eax, dword [ebp - 0x9c]
add eax, dword [ebp - 0x98]
lea eax, [esi + eax]
movsx edx, word [eax]
mov dword [ebp + edi*8 - 0x6c], edx
movsx eax, word [eax + 2]
mov dword [ebp + edi*8 - 0x68], eax
mov eax, dword [ebx + 0x87c]
movsx eax, byte [eax + ecx*4]
mov dword [ebp + edi*4 - 0x2c], eax
inc edi
cmp dword [ebp - 0xec], 0
jle 0x488621
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0x10c]
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + eax], 0
je 0x488621
mov eax, dword [ebp - 0x74]
lea edx, [esi + eax]
movsx eax, word [edx]
mov dword [ebp + edi*8 - 0x6c], eax
movsx eax, word [edx + 2]
mov dword [ebp + edi*8 - 0x68], eax
mov edx, dword [ebp - 0xe8]
sub edx, dword [ebp - 0x8c]
mov eax, dword [ebx + 0x87c]
movsx eax, byte [eax + edx*4]
mov dword [ebp + edi*4 - 0x2c], eax
inc edi
mov edx, dword [ebp - 0x11c]
cmp dword [ebp - 0x90], edx
jge 0x48867c
mov eax, dword [ebp - 0x120]
add eax, dword [ebp - 0xe8]
mov ecx, dword [ebp - 0x10c]
cmp byte [eax + ecx], 0
je 0x48867c
mov eax, dword [ebp - 0x84]
lea edx, [esi + eax]
movsx eax, word [edx]
mov dword [ebp + edi*8 - 0x6c], eax
movsx eax, word [edx + 2]
mov dword [ebp + edi*8 - 0x68], eax
mov edx, dword [ebp - 0xe8]
add edx, dword [ebp - 0x8c]
mov eax, dword [ebx + 0x87c]
movsx eax, byte [eax + edx*4]
mov dword [ebp + edi*4 - 0x2c], eax
inc edi
jmp 0x48868e
mov dword [ebp - 0xf4], 0
test edi, edi
je 0x488bfa
cmp edi, 1
je 0x4888a7
mov dword [ebp - 0x150], 0
mov dword [ebp - 0xd4], 0
mov dword [ebp - 0xd0], 0
mov dword [ebp - 0xcc], 0
mov edx, dword [ebp - 0x150]
mov esi, dword [ebp + edx*8 - 0x6c]
mov ecx, dword [ebp + edx*8 - 0x68]
mov eax, dword [ebp + edx*4 - 0x2c]
test edx, edx
je 0x4886df
cmp eax, dword [ebp + edx*4 - 0x30]
jne 0x4888a7
add dword [ebp - 0xd4], esi
add dword [ebp - 0xd0], ecx
add dword [ebp - 0xcc], eax
inc dword [ebp - 0x150]
cmp dword [ebp - 0x150], edi
jl 0x4886bf
mov eax, dword [ebp - 0xd4]
cdq
idiv dword [ebp - 0x150]
mov dword [ebp + edi*8 - 0x6c], eax
mov eax, dword [ebp - 0xd0]
cdq
idiv dword [ebp - 0x150]
mov dword [ebp + edi*8 - 0x68], eax
mov eax, dword [ebp - 0xcc]
cdq
idiv dword [ebp - 0x150]
mov dword [ebp + edi*4 - 0x2c], eax
cmp edi, 2
sete al
movzx ecx, al
dec ecx
and ecx, 0xfffe7961
mov dword [ebp - 0xc8], ecx
mov dword [ebp - 0xc4], ecx
movzx edx, al
dec edx
and edx, 0x1869f
mov dword [ebp - 0xc0], edx
mov dword [ebp - 0xbc], edx
movzx esi, al
dec esi
and esi, 0xfffe7961
mov dword [ebp - 0xb8], esi
mov dword [ebp - 0xb4], edx
xor esi, esi
mov eax, dword [ebp + esi*8 - 0x6c]
cmp dword [ebp - 0xc8], eax
jge 0x48878e
mov dword [ebp - 0xc8], eax
mov ecx, dword [ebp + esi*8 - 0x68]
cmp dword [ebp - 0xc4], ecx
jge 0x4887a0
mov dword [ebp - 0xc4], ecx
mov edx, dword [ebp + esi*4 - 0x2c]
cmp dword [ebp - 0xb8], edx
jge 0x4887b2
mov dword [ebp - 0xb8], edx
cmp dword [ebp - 0xc0], eax
jle 0x4887c0
mov dword [ebp - 0xc0], eax
cmp dword [ebp - 0xbc], ecx
jle 0x4887ce
mov dword [ebp - 0xbc], ecx
cmp dword [ebp - 0xb4], edx
jle 0x4887dc
mov dword [ebp - 0xb4], edx
inc esi
cmp esi, edi
jl 0x48877c
lea eax, [edi + 1]
mov dword [ebp - 0x154], eax
mov edx, dword [ebp - 0xc8]
sub dword [ebp - 0xd4], edx
mov ecx, dword [ebp - 0xc0]
sub dword [ebp - 0xd4], ecx
mov esi, dword [ebp - 0xd4]
mov dword [ebp + eax*8 - 0x6c], esi
lea eax, [eax + eax + 1]
mov dword [ebp - 0x130], eax
mov edx, dword [ebp - 0xc4]
sub dword [ebp - 0xd0], edx
mov ecx, dword [ebp - 0xbc]
sub dword [ebp - 0xd0], ecx
mov esi, dword [ebp - 0xd0]
mov dword [ebp + eax*4 - 0x6c], esi
mov ecx, dword [ebp - 0xcc]
sub ecx, dword [ebp - 0xb8]
sub ecx, dword [ebp - 0xb4]
mov eax, dword [ebp - 0x154]
mov dword [ebp + eax*4 - 0x2c], ecx
cmp edi, 4
jne 0x4888a4
mov edx, dword [ebp + eax*8 - 0x6c]
mov eax, edx
mov esi, 2
cdq
idiv esi
mov edx, dword [ebp - 0x154]
mov dword [ebp + edx*8 - 0x6c], eax
mov esi, dword [ebp - 0x130]
mov esi, dword [ebp + esi*4 - 0x6c]
mov eax, esi
mov esi, 2
cdq
idiv esi
mov dword [ebp - 0x158], eax
mov edx, dword [ebp - 0x130]
mov dword [ebp + edx*4 - 0x6c], eax
mov eax, ecx
cdq
idiv esi
mov esi, dword [ebp - 0x154]
mov dword [ebp + esi*4 - 0x2c], eax
add edi, 2
movsx eax, word [ebp - 0x118]
mov dword [ebp - 0xdc], eax
movsx edx, word [ebp - 0x116]
mov dword [ebp - 0xd8], edx
inc edi
mov dword [ebp - 0x88], edi
mov dword [ebp + edi*8 - 0x6c], eax
mov dword [ebp + edi*8 - 0x68], edx
mov eax, dword [ebx + 0x87c]
mov ecx, dword [ebp - 0xe8]
movsx eax, byte [eax + ecx*4]
mov dword [ebp + edi*4 - 0x2c], eax
mov dword [ebx + 0x1cec], 1
mov dword [ebx + 0x1fd4], 0
mov dword [ebx + 0x1cf0], 0
mov dword [ebx + 0xa88], 0
sub esp, 0xc
push dword [ebx + 0x29a8]
call dword [ebx + 0xb38]
mov esi, dword [ebp - 0xf0]
mov dword [ebx + 0x1fc8], esi
mov edi, dword [ebp - 0xec]
mov dword [ebx + 0x1fcc], edi
shl esi, 4
mov dword [ebp - 0x110], esi
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0xe4], 0x40000000
mov dword [ebp - 0xe0], 0
add esp, 0x10
mov esi, dword [ebx + 0x7c0]
mov ecx, dword [ebx + 0xb8]
mov eax, dword [ebp - 0x80]
add eax, dword [ebx + 0x820]
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp + edi*8 - 0x6c]
mov dword [ebx + 0x1cf4], edx
mov word [eax], dx
mov edx, dword [ebp + edi*8 - 0x68]
mov dword [ebx + 0x1cf8], edx
mov word [eax + 2], dx
mov edx, dword [ebp + edi*4 - 0x2c]
test edx, edx
js 0x488b27
shl ecx, 4
imul ecx, dword [ebp - 0xec]
mov eax, dword [ebp - 0x110]
add eax, ecx
lea eax, [esi + eax]
mov dword [ebp - 0xb0], eax
mov eax, ebx
call fcn.0048802b
cmp dword [ebp - 0xf0], 0
jle 0x488a0b
mov edx, dword [ebp - 0x120]
mov eax, dword [ebp - 0xe8]
cmp byte [edx + eax - 1], 0
je 0x488a0b
mov ecx, dword [ebx + 0xb8]
mov dword [ebp - 0xa4], ecx
mov ecx, dword [ebp - 0xb0]
xor edi, edi
xor esi, esi
movzx eax, byte [ecx - 1]
movzx edx, byte [ecx]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
inc esi
add ecx, dword [ebp - 0xa4]
cmp esi, 0x10
jne 0x4889ed
jmp 0x488a0d
xor edi, edi
mov esi, dword [ebp - 0x108]
cmp dword [ebp - 0xa0], esi
jge 0x488a5f
mov edx, dword [ebp - 0x120]
mov eax, dword [ebp - 0xe8]
cmp byte [edx + eax + 1], 0
je 0x488a5f
mov ecx, dword [ebx + 0xb8]
mov dword [ebp - 0xa8], ecx
mov ecx, dword [ebp - 0xb0]
xor esi, esi
movzx eax, byte [ecx + 0xf]
movzx edx, byte [ecx + 0x10]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
inc esi
add ecx, dword [ebp - 0xa8]
cmp esi, 0x10
jne 0x488a42
cmp dword [ebp - 0xec], 0
jle 0x488aab
mov eax, dword [ebp - 0xe8]
sub eax, dword [ebp - 0x10c]
mov esi, dword [ebp - 0x120]
cmp byte [esi + eax], 0
je 0x488aab
mov esi, dword [ebp - 0xb0]
sub esi, dword [ebx + 0xb8]
xor ecx, ecx
movzx eax, byte [esi]
mov edx, dword [ebp - 0xb0]
movzx edx, byte [edx + ecx]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
inc ecx
inc esi
cmp ecx, 0x10
jne 0x488a8e
mov ecx, dword [ebp - 0x11c]
cmp dword [ebp - 0x90], ecx
jge 0x488b10
mov eax, dword [ebp - 0x120]
add eax, dword [ebp - 0xe8]
mov esi, dword [ebp - 0x10c]
cmp byte [eax + esi], 0
je 0x488b10
mov eax, dword [ebx + 0xb8]
imul edx, eax, 0xf
shl eax, 4
xor ecx, ecx
add edx, dword [ebp - 0xb0]
mov dword [ebp - 0x140], edx
mov esi, dword [ebp - 0xb0]
add esi, eax
mov edx, dword [ebp - 0x140]
movzx eax, byte [edx + ecx]
movzx edx, byte [esi + ecx]
sub eax, edx
cdq
xor eax, edx
sub eax, edx
add edi, eax
inc ecx
cmp ecx, 0x10
jne 0x488af3
cmp edi, dword [ebp - 0xe4]
jg 0x488b27
mov dword [ebp - 0xe4], edi
mov ecx, dword [ebp - 0x7c]
mov dword [ebp - 0xe0], ecx
inc dword [ebp - 0x7c]
mov esi, dword [ebp - 0x7c]
cmp dword [ebp - 0x88], esi
jge 0x48895a
mov edi, dword [ebp - 0xe0]
mov eax, dword [ebp + edi*8 - 0x6c]
mov dword [ebx + 0x1cf4], eax
mov eax, dword [ebp + edi*8 - 0x68]
mov dword [ebx + 0x1cf8], eax
mov eax, dword [ebp - 0x80]
mov dword [ebp - 0x78], eax
xor esi, esi
jmp 0x488b94
mov eax, dword [ebx + 0x820]
mov edx, dword [ebx + 0x1cf4]
mov word [eax + ecx], dx
mov edx, dword [ebx + 0x1cf8]
mov word [eax + ecx + 2], dx
inc edi
add ecx, dword [ebp - 0x148]
cmp edi, dword [ebp - 0x104]
jl 0x488b5d
inc esi
add dword [ebp - 0x78], 4
cmp esi, dword [ebp - 0x104]
jge 0x488b9b
mov ecx, dword [ebp - 0x78]
xor edi, edi
jmp 0x488b5d
mov ecx, dword [ebp - 0xe0]
mov edx, dword [ebp + ecx*4 - 0x2c]
mov eax, ebx
call fcn.0048802b
mov esi, dword [ebp - 0xdc]
cmp dword [ebx + 0x1cf4], esi
jne 0x488bc8
mov edi, dword [ebp - 0xd8]
cmp dword [ebx + 0x1cf8], edi
je 0x488be0
mov edx, dword [ebp - 0x120]
mov eax, dword [ebp - 0xe8]
mov byte [edx + eax], 2
inc dword [ebp - 0xfc]
jmp 0x488bf0
mov esi, dword [ebp - 0x120]
mov ecx, dword [ebp - 0xe8]
mov byte [esi + ecx], 1
mov dword [ebp - 0xf4], 0
inc dword [ebp - 0xf0]
inc dword [ebp - 0xa0]
mov edi, dword [ebp - 0x9c]
add dword [ebp - 0x80], edi
add dword [ebp - 0x98], edi
add dword [ebp - 0x84], edi
add dword [ebp - 0x74], edi
mov eax, dword [ebp - 0xf0]
cmp eax, dword [ebx + 0x98]
jl 0x48835e
inc dword [ebp - 0xec]
inc dword [ebp - 0x90]
mov edx, dword [ebp - 0x14c]
add dword [ebp - 0x94], edx
add dword [ebp - 0xac], edx
add dword [ebp - 0x70], edx
mov ecx, dword [ebp - 0xec]
cmp ecx, dword [ebx + 0x9c]
jge 0x488cbb
mov esi, dword [ebp - 0x104]
shl esi, 2
mov dword [ebp - 0x9c], esi
mov edi, dword [ebp - 0xac]
mov dword [ebp - 0x80], edi
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x84], eax
mov edx, dword [ebp - 0x94]
mov dword [ebp - 0x74], edx
mov dword [ebp - 0xf0], 0
mov dword [ebp - 0xa0], 1
mov dword [ebp - 0x98], 0
imul eax, dword [ebp - 0x104], 0xfffffffc
add eax, edi
mov dword [ebp - 0x144], eax
jmp 0x488c1e
inc dword [ebp - 0xf8]
cmp dword [ebp - 0xfc], 0
jne 0x488cd3
cmp dword [ebp - 0xf8], 1
jg 0x488d2e
cmp dword [ebp - 0xf8], 9
jg 0x488d2e
imul ecx, dword [ebp - 0x114], 0xfffffffc
mov dword [ebp - 0x94], ecx
mov esi, dword [ebp - 0x14c]
mov dword [ebp - 0x70], esi
mov dword [ebp - 0xfc], 0
mov dword [ebp - 0xec], 0
mov dword [ebp - 0x90], 1
mov dword [ebp - 0xac], 0
mov edi, dword [ebp - 0x100]
shl edi, 2
mov dword [ebp - 0x148], edi
jmp 0x488c51
cmp dword [ebp - 0xf4], 0
jne 0x488d76
xor edx, edx
jmp 0x488d55
mov eax, dword [ebx + 0x2018]
mov eax, dword [eax + edx*4]
mov ecx, dword [ebp - 0x120]
cmp byte [ecx + eax], 0
je 0x488d54
mov byte [ecx + eax], 3
inc edx
cmp edx, dword [ebx + 0xb4]
jl 0x488d3b
mov dword [ebp - 0xf8], 0
mov dword [ebp - 0xf4], 1
jmp 0x488cdc
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
leave
ret