Function at 0x46d630
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
xchg edx, edx
mov ebx, ecx
mov dword [ebp - 0x18], ebx
cmp byte [ebx], 0
mov edx, edx
je 0x46d65a
mov al, 0x45
add al, 0x10
xchg esi, esi
sub al, 0x3e
add al, 9
xor al, 0x21
pop ebx
mov dword [esp - 0x1c], ecx
mov esp, ebp
pop ebp
ret
cmp byte [ebx + 1], 0
push esi
xchg ecx, ecx
push edi
je 0x46da0b
cmp dword [ebx + 0x18], 0
mov dword [esp - 0x18], ebx
je 0x46d9eb
mov eax, dword [ebx + 4]
mov edi, 0x2885d2b6
sub edi, 0x271625e4
mov dword [esp - 0x1c], 0x60d7ce6f
add edi, 0x1c19528f
xor edi, 0x13a29f26
add edi, 0x34c81a70
xor edi, 0x43408e1d
mov dword [esp - 0xc], 0x3eea8890
xor edi, 0x1b2f4a8
shl eax, 2
add ebx, 0x14
mov dword [ebp - 0x14], eax
mov dword [esp - 0x40], edx
lea esi, [ebx + 4]
mov eax, dword [esi]
mov ecx, 0x3f9cb528
mov edi, edi
sub ecx, 0xb9dd215
xor ecx, 0x68a323de
sub ecx, 0x4d61a2c6
xchg esp, esp
add ecx, 0x12aead39
add ecx, 0xdf5534bf
inc eax
mov dword [esp - 0x28], esp
mov dword [ebp - 0x10], esi
mul edi
cmovb eax, ecx
push eax
mov esp, esp
call fcn.00490c90
mov dword [ebp - 4], eax
add esp, 4
mov eax, dword [esi]
mov dword [esp - 0x10], 0x25fcdc8b
mov dword [ebp - 8], eax
cmp eax, edi
jbe 0x46d71b
xchg edx, edx
mov ebx, dword [ebx]
inc eax
mov ecx, 0x3e5c24a6
mov dword [esp - 0x24], esi
sub ecx, 0x22fa1dc6
xor ecx, 0x13ada31d
xor ecx, 0x395b0d35
add ecx, 0xce6b5737
xchg edx, edx
mul edi
cmovb eax, ecx
push eax
call fcn.00490c90
mov dword [esp - 0x3c], 0x42f0c203
mov esi, eax
add esp, 4
mov eax, dword [ebp - 8]
xor edi, edi
mov dword [esp - 0x14], 0x3fd2adf5
mov dword [ebp - 0xc], esi
test eax, eax
je 0x46d7ce
mov edx, esi
mov esp, esp
sub ebx, esi
mov esi, eax
mov ecx, edi
lea edx, [edx + 2]
mov ebp, ebp
and ecx, 3
mov eax, 0x5d09e653
add eax, 0xb69552b
xchg ecx, ecx
add eax, 0xf6d7644
xor eax, 0x2c77ae40
xor eax, 0x7d8ab6fd
mov edx, edx
add eax, 0x558c9b72
shl ecx, 3
inc edi
sar eax, cl
mov dword [esp - 0x2c], 0x7d0219c1
cbw
xor ax, word [edx + ebx - 2]
mov word [edx - 2], ax
cmp edi, esi
mov dword [esp - 0x18], ebx
jb 0x46d773
mov esi, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
mov dword [esp - 0x38], 0x60ba6d86
mov ebx, dword [ebp - 4]
xor ecx, ecx
mov word [esi + eax*2], cx
mov eax, dword [ebp - 0x10]
xchg edi, edi
push esi
mov eax, dword [eax]
inc eax
mov edx, edx
push eax
push ebx
call fcn.00491620
mov ebp, ebp
push esi
call fcn.00490c60
mov eax, dword [0x4c0ca8]
add esp, 0x10
xchg edx, edx
mov edi, dword [ebp - 0x14]
xor eax, dword [0x4c0968]
add edi, 4
push ebx
mov esi, esi
call eax
mov ebx, eax
mov dword [ebp - 8], ebx
mov esp, esp
test ebx, ebx
je 0x46d9d8
mov ecx, dword [ebx + 0x3c]
add ecx, ebx
mov dword [esp - 0x14], 0x4b2d0c2a
je 0x46d9d8
mov esi, dword [ecx + 0x50]
add esi, 0xfffffffc
mov dword [esp - 0x40], ebp
add esi, ebx
cmp esi, ebx
jbe 0x46d9d8
cmp esi, 4
mov dword [esp - 0x44], 0x50bc0a27
jb 0x46d9d8
cmp dword [esi], 0
jne 0x46d9c5
xor eax, eax
mov edi, edi
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x28], eax
xchg ebp, ebp
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], eax
mov dword [esp - 0x20], 0x4b8dd5a1
lea eax, [ebp - 0x14]
push eax
nop
mov dword [esp - 0x40], edx
sub esp, 4
mov dword [esp], 0x12eebf11
xor dword [esp], 0x653155b4
mov edx, edx
sub dword [esp], 0x433ca336
sub dword [esp], 0xc988304
xor dword [esp], 0x280ac477
mov esp, esp
lea eax, [ebp - 0x34]
push eax
nop
sub esp, 4
xchg ebx, ebx
mov dword [esp], 0x20158602
add dword [esp], 0xea8dacc
xor dword [esp], 0x183f8275
mov dword [esp - 0x44], 0x4226c0dc
xor dword [esp], 0xbded7c1
sub dword [esp], 0x3d5f357a
push esi
nop
mov ebp, ebp
sub esp, 4
mov dword [esp], 0x758d1181
sub dword [esp], 0x31788dc9
sub dword [esp], 0xfb37d97
mov edi, edi
sub dword [esp], 0x1248a83e
xor dword [esp], 0x25bd28f2
xor dword [esp], 0xf85a8aee
call fcn.00473360
mov esp, esp
test eax, eax
js 0x46d9c5
cmp dword [ebp - 0x14], 0x1c
xchg ebx, ebx
jne 0x46d9c5
cmp dword [ebp - 0x30], 0
je 0x46d9c5
mov dword [esp - 0x18], 0x43571699
cmp dword [ebp - 0x34], 0
je 0x46d9c5
cmp dword [ebp - 0x24], 0x1000
jne 0x46d9c5
mov ebp, ebp
mov eax, dword [ebp - 0x20]
test eax, 0x100
jne 0x46d9c5
cmp eax, 1
xchg esi, esi
je 0x46d9c5
test al, 0x44
je 0x46d9c5
mov edx, edx
cmp dword [ebp - 0x28], edi
jb 0x46d9c5
xor eax, eax
mov dword [esp - 0x38], esi
mov cl, 0x63
sub cl, 0x22
sub cl, 0x2c
xor cl, 0x1d
xchg esp, esp
add cl, 0x1d
sub cl, 0x10
xor cl, 0x14
test edi, edi
mov edi, edi
je 0x46d9f6
test cl, cl
je 0x46d9c2
mov dword [esp - 0x18], 0x706c26d
xor ebx, ebx
movzx ecx, cl
lea edx, [eax + esi]
mov edi, edi
add eax, 4
cmp dword [edx], ebx
cmove ebx, ecx
mov edx, edx
mov cl, bl
cmp eax, edi
jb 0x46d996
test cl, cl
xchg ebp, ebp
jne 0x46d9f6
mov ebx, dword [ebp - 8]
sub esi, 4
cmp esi, ebx
mov dword [esp - 0x34], 0x72dae1d
ja 0x46d842
push dword [ebp - 4]
call fcn.00490c60
add esp, 4
mov dword [esp - 0x38], 0x4b481a5b
pop edi
pop esi
xor al, al
pop ebx
mov ebp, ebp
mov esp, ebp
pop ebp
ret
push dword [ebp - 4]
call fcn.00490c60
mov ebx, dword [ebp - 0x18]
mov dword [esp - 0x40], 0x5a25daf8
jmp 0x46da75
mov eax, dword [ebx + 4]
mov ecx, 0x4bc06a28
add ecx, 0x184dbcb3
mov dword [esp - 0x30], 0x5f5187e6
xor ecx, 0x666e7d48
add ecx, 0xd216e06
add ecx, 0x21d8c876
xchg esi, esi
sub ecx, 0x315a920b
mul ecx
pushf
mov ebp, ebp
mov ecx, 0x8d337b9
add ecx, 0x1e7dce13
xor ecx, 0x2e98edd5
add ecx, 0x24c2f6ff
mov edx, edx
add ecx, 0xd17320e7
popf
cmovb eax, ecx
push eax
mov dword [esp - 0x30], 0x5fab94db
call fcn.00490c90
mov esi, eax
xor edx, edx
mov dword [esp - 0x28], 0x6658adbe
mov dword [ebx + 0xc], esi
add esp, 4
cmp dword [ebx + 4], edx
jbe 0x46daa0
mov ecx, ecx
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebx + 0xc]
mov eax, dword [eax + edx*4]
mov dword [ecx + edx*4], eax
xchg edi, edi
inc edx
cmp edx, dword [ebx + 4]
jb 0x46da8c
mov ecx, dword [ebx + 8]
mov esi, esi
mov eax, dword [ebx + 0xc]
pop edi
pop esi
mov dword [esp - 0x34], ebx
mov dword [ecx], eax
mov al, 0x45
xor al, 0x43
mov ecx, ecx
add al, 0x18
add al, 4
add al, 0x36
mov dword [esp - 0x40], esi
sub al, 0x1d
sub al, 0x3a
mov byte [ebx], 0x3c
xor byte [ebx], 0x39
xchg edi, edi
add byte [ebx], 0x18
xor byte [ebx], 0x2b
sub byte [ebx], 0x35
mov dword [esp - 0x34], esp
pop ebx
mov esp, ebp
pop ebp
ret