Function at 0x45b1c0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x254
mov eax, dword [esp + 0x260]
push ebx
push esi
push edi
mov eax, dword [eax*4 + 0x47d61c]
xor esi, esi
imul eax, dword [esp + 0x280]
sar eax, 6
mov dword [esp + 0x28], eax
or eax, 0xffffffff
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x288]
mov edi, 0x1000
cmp eax, esi
mov word [esp + 0x10], si
mov word [esp + 0x12], si
mov dword [esp + 0x4c], edi
mov dword [esp + 0x18], esi
je 0x45b256
mov ecx, dword [esp + 0x268]
push ecx
call dword [0x4fe834]
imul eax, dword [esp + 0x288]
mov edx, 0x8000
add esp, 4
add eax, eax
mov ecx, edx
mov ebx, ecx
imul ebx, ecx
cmp ebx, eax
jbe 0x45b242
xor ecx, edx
shr edx, 1
je 0x45b24a
or ecx, edx
jmp 0x45b237
lea eax, [ecx + 0x30]
shr eax, 6
mov dword [esp + 0x44], eax
jmp 0x45b25a
mov dword [esp + 0x44], esi
mov eax, dword [esp + 0x278]
mov ecx, dword [esp + 0x270]
mov edx, dword [esp + 0x264]
cmp eax, esi
mov dword [esp + 0x58], edi
jl 0x45b294
xor edi, edi
mov di, word [ecx + eax*2]
cmp word [edx + edi*2], si
jne 0x45b288
dec eax
jns 0x45b277
jmp 0x45b294
cmp eax, 3
mov dword [esp + 0x278], eax
jge 0x45b2a0
mov eax, 3
mov dword [esp + 0x278], eax
cmp eax, esi
mov dword [esp + 0xc], esi
jl 0x45b9a0
push ebp
mov edx, dword [esp + 0x274]
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov cx, word [edx + eax*2]
mov edx, dword [esp + 0x278]
xor eax, eax
mov ax, word [edx + ecx*2]
mov edx, dword [esp + 0x26c]
imul eax, dword [esp + 0x270]
sar eax, 4
movsx ebx, word [edx + ecx*2]
lea edi, [eax - 1]
lea ebp, [eax + eax]
or edi, 1
lea eax, [edi + ebp]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x268]
movsx edx, word [eax + ecx*2]
mov eax, dword [esp + 0x28c]
mov dword [esp + 0x20], edx
test eax, eax
je 0x45b3a6
movsx esi, word [ecx*2 + 0x47cd68]
mov eax, dword [esp + 0x48]
and eax, 0xffff
imul esi, eax
movsx eax, bx
cdq
xor eax, edx
add esi, 0x20
sub eax, edx
sar esi, 7
shl eax, 4
cmp esi, 0x10000
jb 0x45b341
mov esi, 0xffff
cmp ax, si
ja 0x45b34a
xor eax, eax
jmp 0x45b34c
sub eax, esi
xor edx, edx
and eax, 0xffff
mov dx, word [ecx*2 + 0x47ce68]
add edx, eax
xor eax, eax
mov ax, word [ecx*2 + 0x47cde8]
imul edx, eax
sar edx, 0x10
and edx, 0xffff
movsx eax, bx
mov esi, edx
imul esi, edx
mov edx, eax
imul esi, dword [esp + 0x2c]
imul edx, eax
imul edx, dword [esp + 0x2c]
sar esi, 4
mov eax, 0x66666667
lea edx, [esi + edx*4]
imul edx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
mov dword [esp + 0x54], edx
jmp 0x45b3b4
mov eax, ebx
imul eax, ebx
imul eax, dword [esp + 0x2c]
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x54]
mov esi, dword [esp + 0x1c]
add esi, edx
mov edx, dword [esp + 0x20]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], 0xf0000000
lea esi, [edx + 1]
cmp esi, 3
jae 0x45b575
mov eax, dword [esp + 0x10]
shl eax, 2
mov dword [esp + 0x20], eax
lea eax, [esp + eax + 0x162]
test ebx, ebx
mov dword [esp + 0x3c], eax
jge 0x45b401
mov edx, dword [esp + 0x24]
mov word [eax], 0xffff
add ebx, edx
jmp 0x45b40e
mov word [eax], 1
mov eax, dword [esp + 0x24]
sub eax, ebx
mov ebx, eax
mov eax, dword [esp + 0x28c]
test eax, eax
je 0x45b4b2
movsx esi, word [ecx*2 + 0x47cd68]
mov edx, dword [esp + 0x48]
and edx, 0xffff
imul esi, edx
movsx edi, bx
mov eax, edi
add esi, 0x20
cdq
xor eax, edx
sub eax, edx
sar esi, 7
shl eax, 4
cmp esi, 0x10000
jb 0x45b452
mov esi, 0xffff
cmp ax, si
ja 0x45b45b
xor eax, eax
jmp 0x45b45d
sub eax, esi
xor edx, edx
and eax, 0xffff
mov dx, word [ecx*2 + 0x47ce68]
add edx, eax
xor eax, eax
mov ax, word [ecx*2 + 0x47cde8]
imul edx, eax
sar edx, 0x10
and edx, 0xffff
mov eax, dword [esp + 0x2c]
mov ecx, edx
imul ecx, edx
mov edx, edi
imul ecx, eax
imul edx, edi
imul edx, eax
sar ecx, 4
mov eax, 0x66666667
lea ecx, [ecx + edx*4]
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
mov ebp, edx
jmp 0x45b4bc
mov ebp, ebx
imul ebp, ebx
imul ebp, dword [esp + 0x2c]
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x40]
lea eax, [esp + ecx + 0x160]
mov ecx, dword [esp + ecx + 0x5c]
mov dword [esp + 0x24], eax
lea edx, [ecx + ebp + 0x1800]
mov word [eax], 1
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x10]
mov ecx, edx
sub ecx, esi
test ecx, ecx
jle 0x45b55a
sub edx, ecx
mov eax, 0x47d568
dec eax
lea ebx, [esp + edx*4 + 0x60]
mov edx, 0x47d468
sub edx, eax
lea edi, [eax + ecx]
dec edx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x20]
mov esi, dword [ebx]
xor eax, eax
add esi, ebp
mov al, byte [edx + edi]
xor edx, edx
mov dl, byte [edi]
shl eax, 0xb
shl edx, 0xb
add eax, esi
add edx, esi
cmp eax, dword [esp + 0x18]
jae 0x45b536
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x24]
mov word [eax], cx
cmp edx, dword [esp + 0x1c]
jae 0x45b54d
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x10]
mov word [esp + 0x14], cx
mov dword [esp + 0x44], edx
dec ecx
add ebx, 4
dec edi
test ecx, ecx
jg 0x45b50a
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x44], edx
jne 0x45b92a
mov eax, dword [esp + 0x3c]
mov cx, word [eax]
mov word [esp + 0x16], cx
jmp 0x45b92a
lea eax, [edx + 0x19]
cmp eax, 0x33
jae 0x45b8c9
mov eax, edx
imul eax, ebp
sub eax, ebx
cmp edx, 1
jle 0x45b600
add eax, edi
lea esi, [edx - 1]
mov edi, eax
mov dword [esp + 0x24], esi
sub edi, ebp
cmp edx, 0x18
mov dword [esp + 0x28], edi
jg 0x45b5b5
mov edi, dword [edx*4 + 0x47d5a4]
mov dword [esp + 0x38], edi
mov edi, 0x47cf68
jmp 0x45b5be
mov edi, 0x47cf68
mov dword [esp + 0x38], edi
cmp esi, 0x18
jg 0x45b5d0
mov ebx, dword [esi*4 + 0x47d5a4]
mov dword [esp + 0x4c], ebx
jmp 0x45b5d4
mov dword [esp + 0x4c], edi
cmp edx, 6
jg 0x45b5e6
mov edx, dword [edx*4 + 0x47d604]
mov dword [esp + 0x30], edx
jmp 0x45b5ea
mov dword [esp + 0x30], edi
cmp esi, 6
jg 0x45b677
mov edx, dword [esi*4 + 0x47d604]
mov dword [esp + 0x34], edx
jmp 0x45b67b
sub eax, edi
cmp edx, 0xffffffe8
mov dword [esp + 0x24], esi
lea edi, [eax + ebp]
mov dword [esp + 0x28], edi
jl 0x45b628
mov edi, edx
not edi
mov edi, dword [edi*4 + 0x47d5a8]
mov dword [esp + 0x38], edi
mov edi, 0x47cf68
jmp 0x45b631
mov edi, 0x47cf68
mov dword [esp + 0x38], edi
cmp esi, 0xffffffe8
jl 0x45b647
mov ebx, esi
not ebx
mov ebx, dword [ebx*4 + 0x47d5a8]
mov dword [esp + 0x4c], ebx
jmp 0x45b64b
mov dword [esp + 0x4c], edi
cmp edx, 0xfffffffa
jl 0x45b65f
not edx
mov edx, dword [edx*4 + 0x47d608]
mov dword [esp + 0x30], edx
jmp 0x45b663
mov dword [esp + 0x30], edi
cmp esi, 0xfffffffa
jl 0x45b677
not esi
mov edx, dword [esi*4 + 0x47d608]
mov dword [esp + 0x34], edx
jmp 0x45b67b
mov dword [esp + 0x34], edi
mov edx, dword [esp + 0x28c]
test edx, edx
je 0x45b7a6
mov ebx, dword [esp + 0x48]
movsx esi, word [ecx*2 + 0x47cd68]
and ebx, 0xffff
imul esi, ebx
movsx edi, ax
mov eax, edi
add esi, 0x20
cdq
xor eax, edx
sub eax, edx
sar esi, 7
shl eax, 4
cmp esi, 0x10000
jb 0x45b6bf
mov esi, 0xffff
cmp ax, si
ja 0x45b6c8
xor eax, eax
jmp 0x45b6ca
sub eax, esi
xor edx, edx
and eax, 0xffff
mov dx, word [ecx*2 + 0x47ce68]
mov ebp, dword [esp + 0x2c]
add edx, eax
xor eax, eax
mov ax, word [ecx*2 + 0x47cde8]
imul edx, eax
sar edx, 0x10
and edx, 0xffff
mov eax, edx
imul eax, edx
mov edx, edi
imul eax, ebp
imul edx, edi
imul edx, ebp
sar eax, 4
movsx esi, word [ecx*2 + 0x47cd68]
lea edx, [eax + edx*4]
mov eax, 0x66666667
imul edx
imul esi, ebx
movsx edi, word [esp + 0x28]
sar edx, 1
mov eax, edx
add esi, 0x20
shr eax, 0x1f
add edx, eax
mov eax, edi
mov dword [esp + 0x3c], edx
cdq
xor eax, edx
sub eax, edx
sar esi, 7
shl eax, 4
cmp esi, 0x10000
jb 0x45b74c
mov esi, 0xffff
cmp ax, si
ja 0x45b755
xor eax, eax
jmp 0x45b757
sub eax, esi
xor edx, edx
and eax, 0xffff
mov dx, word [ecx*2 + 0x47ce68]
add edx, eax
xor eax, eax
mov ax, word [ecx*2 + 0x47cde8]
imul edx, eax
sar edx, 0x10
and edx, 0xffff
mov eax, 0x66666667
mov ecx, edx
imul ecx, edx
mov edx, edi
imul ecx, ebp
imul edx, edi
imul edx, ebp
sar ecx, 4
lea ecx, [ecx + edx*4]
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add edx, eax
jmp 0x45b7c0
mov ecx, eax
mov edx, dword [esp + 0x28]
imul ecx, eax
imul edx, edx
mov eax, dword [esp + 0x2c]
imul ecx, eax
imul edx, eax
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x40]
sub edx, esi
mov esi, dword [esp + 0x10]
sub esi, ecx
mov ebx, edx
test esi, esi
mov dword [esp + 0x58], ebx
jle 0x45b92a
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
mov edx, ebp
sub edx, esi
lea eax, [ecx - 1]
lea ecx, [esp + edx*4 + 0x60]
lea edi, [eax + esi]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x38]
sub ecx, eax
dec ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x30]
sub ecx, eax
dec ecx
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x34]
sub ecx, eax
dec ecx
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x38]
mov edx, dword [edx]
add edx, ecx
xor ecx, ecx
mov cl, byte [eax + edi]
xor eax, eax
mov al, byte [edi]
shl eax, 0xb
shl ecx, 0xb
add eax, edx
add ecx, edx
add eax, ebx
cmp eax, ecx
jae 0x45b84a
mov ecx, eax
mov eax, dword [esp + 0x24]
jmp 0x45b84e
mov eax, dword [esp + 0x20]
cmp ecx, dword [esp + 0x18]
jae 0x45b868
mov dword [esp + 0x18], ecx
mov word [esp + ebp*4 + 0x160], si
mov word [esp + ebp*4 + 0x162], ax
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
xor eax, eax
mov al, byte [ecx + edi]
xor ecx, ecx
mov cl, byte [ebx + edi]
mov ebx, dword [esp + 0x58]
shl ecx, 0xb
shl eax, 0xb
add ecx, edx
add eax, edx
add ecx, ebx
cmp ecx, eax
jae 0x45b896
mov eax, ecx
mov ecx, dword [esp + 0x24]
jmp 0x45b89a
mov ecx, dword [esp + 0x20]
cmp eax, dword [esp + 0x1c]
jae 0x45b8b2
mov dword [esp + 0x1c], eax
mov word [esp + 0x14], si
mov word [esp + 0x16], cx
mov dword [esp + 0x44], ebp
mov edx, dword [esp + 0x28]
dec esi
add edx, 4
dec edi
test esi, esi
mov dword [esp + 0x28], edx
jg 0x45b819
jmp 0x45b92a
mov edi, dword [esp + 0x10]
mov esi, dword [esp + 0x40]
mov ecx, edi
sub ecx, esi
test ecx, ecx
jle 0x45b92a
mov esi, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
mov eax, edi
sub eax, ecx
lea ebx, [esp + eax*4 + 0x60]
mov eax, dword [ebx]
add eax, 0xf000
cmp eax, esi
jae 0x45b906
mov esi, eax
mov word [esp + edi*4 + 0x160], cx
mov word [esp + edi*4 + 0x162], dx
cmp eax, ebp
jae 0x45b91a
mov ebp, eax
mov word [esp + 0x14], cx
mov word [esp + 0x16], dx
mov dword [esp + 0x44], edi
dec ecx
add ebx, 4
test ecx, ecx
jg 0x45b8e9
mov dword [esp + 0x1c], ebp
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
lea edi, [esi + edx]
cmp eax, edi
mov dword [esp + ecx*4 + 0x60], eax
jae 0x45b94f
mov dword [esp + 0x50], eax
mov dword [esp + 0x40], ecx
jmp 0x45b983
mov eax, dword [esp + 0x40]
add edx, 0x800
cmp dword [esp + eax*4 + 0x60], edx
jbe 0x45b96c
mov ebx, dword [esp + eax*4 + 0x64]
inc eax
cmp ebx, edx
ja 0x45b95f
mov dword [esp + 0x40], eax
cmp eax, ecx
jge 0x45b97f
mov ebp, dword [esp + eax*4 + 0x60]
add ebp, esi
mov dword [esp + eax*4 + 0x60], ebp
inc eax
cmp eax, ecx
jl 0x45b970
mov dword [esp + 0x50], edi
mov eax, dword [esp + 0x27c]
inc ecx
cmp ecx, eax
mov dword [esp + 0x10], ecx
jle 0x45b2ad
mov edx, dword [esp + 0x44]
pop ebp
test edx, edx
jge 0x45b9b1
mov eax, dword [esp + 0x27c]
pop edi
pop esi
pop ebx
add esp, 0x254
ret
mov ebx, dword [esp + 0x264]
mov ecx, 0x20
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
mov edi, dword [esp + 0x270]
mov ax, word [esp + 0x12]
xor ecx, ecx
mov cx, word [edi + edx*2]
mov word [ebx + ecx*2], ax
movsx ecx, word [esp + 0x10]
movsx eax, ax
sub edx, ecx
mov ecx, edx
cdq
mov esi, eax
xor esi, edx
sub esi, edx
test ecx, ecx
jl 0x45ba18
mov ax, word [esp + ecx*4 + 0x15e]
xor edx, edx
mov dx, word [edi + ecx*2]
mov word [ebx + edx*2], ax
movsx eax, ax
cdq
xor eax, edx
sub eax, edx
add esi, eax
movsx eax, word [esp + ecx*4 + 0x15c]
sub ecx, eax
jns 0x45b9f0
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x254
ret