Function at 0x1004a380
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100d3bb0
mov eax, dword fs:[0]
push eax
sub esp, 0xcc
mov eax, dword [0x10105230]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ebx, dword [ebp + 8]
xor esi, esi
xor ecx, ecx
mov dword [ebp - 0x9c], 0
mov byte [ebp - 0x89], 0
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x94], esi
mov dword [ebp - 0x90], ecx
cmp dword [ebx + 0x10], ecx
jbe 0x1004a617
cmp dword [ebx + 0x14], 0x10
mov eax, ebx
jb 0x1004a3ed
mov eax, dword [ebx]
cmp byte [ebp - 0x89], 0
mov al, byte [eax + ecx]
movzx edx, al
mov byte [ebp - 0x8a], al
movzx eax, byte [edx + 0x100eeee0]
mov dword [ebp - 0xa0], eax
je 0x1004a425
mov eax, dword [ebp - 0x9c]
and edx, 0x3f
shl eax, 6
or edx, eax
mov dword [ebp - 0x9c], edx
jmp 0x1004a442
mov ecx, dword [ebp - 0xa0]
mov eax, 0xff
shr eax, cl
mov ecx, dword [ebp - 0x90]
and eax, edx
mov dword [ebp - 0x9c], eax
mov edx, eax
movzx eax, byte [ebp - 0x89]
add eax, 0x10
shl eax, 4
add eax, dword [ebp - 0xa0]
mov al, byte [eax + 0x100eeee0]
mov byte [ebp - 0x89], al
movzx eax, al
sub eax, 0
je 0x1004a51c
sub eax, 1
je 0x1004a48f
cmp dword [ebx + 0x14], 0x10
mov eax, ebx
jb 0x1004a47c
mov eax, dword [ebx]
mov al, byte [eax + ecx]
mov byte [edi + esi + 0x4e], al
inc esi
inc dword [ebp - 0x94]
jmp 0x1004a5ed
mov edx, dword [edi + 0x268]
mov eax, edx
sub eax, 0
je 0x1004a6c7
sub eax, 1
je 0x1004a4ae
sub eax, 1
jne 0x1004a5ed
cmp dword [ebp - 0x94], 0
lea eax, [ecx - 1]
cmovbe eax, ecx
mov dword [ebp - 0x90], eax
mov eax, dword [ebp - 0x98]
mov esi, eax
cmp edx, 1
jne 0x1004a4ff
lea esi, [eax + 1]
mov byte [edi + eax + 0x4e], 0xef
lea edx, [edi + 0x4e]
mov eax, 0x200
mov word [edx + esi], 0xbdbf
add esi, 2
sub eax, esi
cmp eax, 0xd
jae 0x1004a4f9
mov ecx, dword [edi]
push esi
push edx
mov eax, dword [ecx]
call dword [eax + 4]
xor esi, esi
mov dword [ebp - 0x98], esi
mov ecx, dword [ebp - 0x90]
xor dl, dl
mov dword [ebp - 0x94], 0
mov byte [ebp - 0x89], dl
jmp 0x1004a5f3
lea eax, [edx - 8]
cmp eax, 0x54
ja case.0x1004a52b.11
movzx eax, byte [eax + 0x1004a748]
jmp dword [eax*4 + 0x1004a728]
mov word [edi + esi + 0x4e], 0x625c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x745c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x6e5c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x665c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x725c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x225c
add esi, 2
jmp 0x1004a5bb
mov word [edi + esi + 0x4e], 0x5c5c
add esi, 2
jmp 0x1004a5bb
cmp edx, 0x1f
jbe 0x1004a59f
cmp dword [ebx + 0x14], 0x10
mov eax, ebx
jb 0x1004a595
mov eax, dword [ebx]
mov al, byte [eax + ecx]
mov byte [edi + esi + 0x4e], al
inc esi
jmp 0x1004a5bb
movzx eax, dx
push eax
push str.u_04x
lea eax, [edi + 0x4e]
add eax, esi
push 7
push eax
call fcn.10024b20
add esp, 0x10
add esi, 6
mov eax, 0x200
sub eax, esi
cmp eax, 0xd
jae 0x1004a5d7
mov ecx, dword [edi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
lea eax, [edi + 0x4e]
push eax
call edx
xor esi, esi
mov ecx, dword [ebp - 0x90]
mov dword [ebp - 0x98], esi
mov dword [ebp - 0x94], 0
mov dl, byte [ebp - 0x89]
inc ecx
mov dword [ebp - 0x90], ecx
cmp ecx, dword [ebx + 0x10]
jb 0x1004a3e3
test dl, dl
jne 0x1004a635
test esi, esi
je 0x1004a617
mov ecx, dword [edi]
lea eax, [edi + 0x4e]
push esi
mov edx, dword [ecx]
push eax
call dword [edx + 4]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.10094e23
mov esp, ebp
pop ebp
ret 8
mov eax, dword [edi + 0x268]
sub eax, 0
je 0x1004a67a
sub eax, 1
je 0x1004a659
sub eax, 1
jne 0x1004a617
mov ecx, dword [edi]
lea eax, [edi + 0x4e]
push dword [ebp - 0x98]
mov edx, dword [ecx]
jmp 0x1004a613
mov ecx, dword [edi]
lea eax, [edi + 0x4e]
push dword [ebp - 0x98]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov ecx, dword [edi]
push 3
push 0x100ef4a8
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x1004a617
mov ecx, ebx
call fcn.1004a820
lea ecx, [ebp - 0x70]
mov dl, byte [eax]
call fcn.1004a7a0
push eax
lea ecx, [ebp - 0x88]
mov dword [ebp - 4], 3
call fcn.1004be10
push eax
mov edx, 0x13c
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xd8]
call fcn.1004b5f0
add esp, 8
lea eax, [ebp - 0xd8]
push 0x10102160
push eax
call fcn.10097714
mov dl, byte [ebp - 0x8a]
lea ecx, [ebp - 0x28]
call fcn.1004a7a0
mov esi, eax
mov edx, dword [ebp - 0x90]
lea ecx, [ebp - 0x40]
mov dword [ebp - 4], 0
call fcn.1005a0a0
push esi
push ecx
push eax
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 1
call fcn.1004bd40
add esp, 8
mov byte [ebp - 4], 2
mov edx, 0x13c
lea ecx, [ebp - 0xbc]
push eax
call fcn.1004b5f0
add esp, 8
lea eax, [ebp - 0xbc]
push 0x10102160
push eax
call fcn.10097714
nop
xor ah, byte [ebp - 0x5ac1effc]
add al, 16
dec edx
movsd dword es:[edi], dword [esi]
add al, 0x10
push esi
movsd dword es:[edi], dword [esi]
add al, 0x10
bound esp, qword [ebp - 0x5a91effc]
add al, 16
jp 0x1004a6e7
add al, 0x10
xchg byte [ebp + 0x1001004], ah
add al, byte [edi]
add eax, dword [edi + eax]
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
add eax, 117901063
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
pop es
push es
int3